%表題   GRPH2 図形処理上位パッケージ
%
%履歴
%\Drireki{
%         90/03/22 塩谷雅人
%         91/09/05 林祥介
%         91/12/10 林祥介
%         92/02/05 塩谷雅人
%         92/04/22 林祥介   (4.1版)
%         94/04/04 塩谷雅人
%        }
%
%  \Dchapter{UDPACK : 等高線ルーチン}
\Dchapterhead
\label{udpack}

\section{概要}
%\label{udpack.概要}

UDPACK は2次元等高線図を作画するサブルーチンパッケージである.
等高線はU座標系で作画されるので,
すべての正規化変換に対応している.

\vspace{1em}
このパッケージにおいてラベルつきのコンターラインは, GRPH1 の
\SGPGETSET が管理する内部変数 {\tt 'LCHAR'} を
{\tt .TRUE.} として, 線分を描く下位ルーチンが描いている.
なおこのパッケージでは, 等高線図を描くだけで座標軸などの外枠は
描かない.

\vspace{1em}
UDPACK において
ユーザーが使用するサブルーチンとしては以下のようなものがある.
\begin{itemize}
  \item 作画ルーチン
  \begin{description}
    \item {\tt UDCNTR} $ \cdots $ 2次元等高線図を作画する
      (内部で用意した作業領域を使う).
    \item {\tt UDCNTZ} $ \cdots $ 2次元等高線図を作画する
      (ユーザーが作業領域を与える).
  \end{description}
  \item コンターレベルに関するルーチン
  \begin{description}
    \item {\tt UDGCLA} $ \cdots $ 最小値・最大値・きざみ値で生成する.
    \item {\tt UDGCLB} $ \cdots $ 格子点値を与える配列ときざみ値で生成する.
    \item {\tt UDICLV} $ \cdots $ コンターレベルを無効にする.
    \item {\tt UDSCLV} $ \cdots $ 1本のコンターレベルを生成する.
    \item {\tt UDDCLV} $ \cdots $ 1本のコンターレベルを削除する.
  \end{description}
  \item その他のルーチン
  \begin{description}
    \item {\tt UDSFMT} $ \cdots $ コンターレベルのフォーマットを指定する.
    \item \UDPGETSET $ \cdots $ 内部変数を参照/変更する.
  \end{description}
\end{itemize}

\vspace{1em}
格子点座標に関する情報はUWPACK (第\ref{uwpack}節参照)が管理している.
\begin{itemize}
  \item 格子点座標の設定に関するルーチン
  \begin{description}
    \item {\tt UWSGXA/UWSGYA} $ \cdots $ 各座標値で設定する.
    \item {\tt UWSGXB/UWSGYB} $ \cdots $ 最小値と最大値で設定する.
  \end{description}
\end{itemize}

\vspace{1em}
2次元データをとにかくコンタリングしたい(quick look)というときには,
単に{\tt UDCNTR} (または{\tt UDCNTZ})を呼ぶだけでよい.
このときは, 現在設定されているウインドウいっぱいに
等間隔の格子点を設定し, コンターレベルも自動的に生成する.

\vspace{1em}
もしも格子点が不等間隔の場合は,
{\tt UDCNTR}を呼ぶ前に{\tt UWSGXA} (X方向)/ {\tt UWSGYA} (Y方向)を呼んで
格子点の座標値をあらかじめ指定すればよい.
あるいはウインドウのある一部分に等間隔の格子点を設定したい場合は,
{\tt UWSGXB} (X方向)/ {\tt UWSGYB} (Y方向)をもちい
最小値と最大値を指定して格子点を設定すればよい.

\vspace{1em}
またコンターレベルをあらかじめ指定したいときは,
{\tt UDCNTR}(または{\tt UDCNTZ})を呼ぶ前に
{\tt UDGCLA}または{\tt UDGCLB}を呼べばよい.
ただしこの場合は, 等間隔のコンターレベルしか生成されない.
もしも, 不等間隔のコンターレベルを指定したい場合や,
特定のコンターレベルを追加したい場合は,
{\tt UDSCLV}で1本1本のコンターレベルを生成してやればよい.
(1本のコンターレベルを無効にするには{\tt UDDCLV}を呼べばよい;
すべてのコンターレベルを無効にするには{\tt UDICLV}を呼べばよい. )

\vspace{1em}
内部的には, {\tt UDBLK1}, {\tt UDBLK2}, {\tt UDBLK3} という名前の
共通ブロックを使用している.
ユーザーは同じ名前の外部手続き名・共通ブ
ロック名を用いてはならない.
