%表題   GRPH2 図形処理上位パッケージ
%
%履歴
%\Drireki{
%         91/12/10 林祥介
%         92/04/13 塩谷雅人
%         92/04/22 林祥介   (4.1版)
%         94/04/04 塩谷雅人
%         94/10/15 塩谷雅人
%         95/04/14 酒井敏 (5.z 版)
%        }
%
%  \Dchapter{GRPACK : 初期化制御ルーチン}
\Dchapterhead
\label{grpack}

\section{概要}
%\label{grpack.gaiyou}

GRPACK はGRPH2の各種パッケージを使って新しい図を描くとき,
これらのパッケージを初期化したり,
変換関数に関するパラメータを(実行時オプションの介入を許して)
設定するものである.
現在のところ SGPACK, UZPACK, UUPACK, USPACK, UMPACK の初期化をおこなっている.
%さらに, ユーザーが特に指定しなかった変換関数に関するパラメータを
%自動的に決める機能も持っている.
%直角直線座標系({\tt ITR}$=1 \sim 4$)と地図投影座標系
%({\tt ITR}$=10 \sim 15, 20 \sim 23, 30 \sim 33$)について,
%それぞれ {\tt USPFIT}, {\tt UMPFIT} を内部的に呼ぶことによって, 
%設定されていない変換関数に関するパラメータを自動的に決める.
\vspace{1em}

GRPACK は基本的に GRPH1 の「コントロール」および「正規化変換」に
関するルーチンに相当するものを用意している.
たとえば GRPACK には, {\tt SGFRM} に相当する {\tt GRFRM} という
ルーチンがある.
これは内部的に {\tt SGFRM} などを呼ぶと同時に,
各種パッケージの初期化をおこなう.
初期化動作としては, GRPH2 でのサブパッケージが自動的に決める
可能性のあるパラメタに, 「未定義」の値を代入したりする.
(具体的には, \GLPGETSET が管理する内部変数
{\tt 'RUNDEF'}, {\tt 'IUNDEF'}が示す値を代入する. )
また {\tt SGSTRF} に相当する {\tt GRSTRF} というルーチンがある.
これは内部的には, 正規化変換に必要なパラメータがすべて設定されている
({\tt RUNDEF} でない) ことをチェックした上で {\tt SGSTRF} を呼ぶ.
%これは内部的には, 正規化変換に必要なパラメータのうち, 
%設定されていないものを{\tt USPFIT}, {\tt UMPFIT}などによって
%適当に補った上で, {\tt SGSTRF} を呼ぶ.
\vspace{1em}

さらに GRPACK で設定するパラメータについては,
実行時オプションの介入がおこなわれる.
たとえば {\tt SGOPN} に相当する {\tt GROPN} というルーチンを使うと,
指定するワークステーション番号は実行時オプションで
変更できる.

\section{サブルーチンのリスト}

以下のリストでは, 対応する GRPH1/SGPACK のルーチン名を括弧内に示す.

\subsubsection{コントロール}
  \begin{quote}
  \begin{tabular}{lp{10cm}}
    {\tt GROPN (SGOPN)} & 出力装置のオープン. \\
    {\tt GRFRM (SGFRM)} & フレームの設定. \\
    {\tt GRFIG}        & 新たな図の設定. \\
    {\tt GRCLS (SGCLS)} & 出力装置のクローズ.
  \end{tabular}
  \end{quote}

\subsubsection{\bf 正規化変換}

  \begin{quote}
  \begin{tabular}{lp{10cm}}
    {\tt GRSVPT (SGSVPT)} & ビューポートの設定. \\
    {\tt GRSWND (SGSWND)} & ウインドウの設定. \\
    {\tt GRSSIM (SGSSIM)} & 相似変換の設定. \\
    {\tt GRSMPL (SGSMPL)} & 地図投影の極の設定. \\
    {\tt GRSTRN (SGSTRN)} & 変換関数の番号による設定.\\
    {\tt GRSTRF (SGSTRF)} & 変換関数の確定.
  \end{tabular}
  \end{quote}
  \vspace{1em}

%-----------------------------------------------------------------------
\section{サブルーチンの説明 : コントロール}
%\label{grpack.ref}

以下のルーチンは, 基本的には対応する GRPH1/SGPACK のコントロールに
関するルーチン({\tt GR}を{\tt SG}にかえたもの)と同等な動作をする
({\tt GRFIG}のみ対応するルーチンはない).
詳しくは「GRPH1」マニュアルを参照のこと.

\subsection{GROPN}
\begin{enumerate}
  \item 機能
  \begin{quote}
    図形出力装置をオープンする(初期化処理をおこなう).
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL GROPN(IWS)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{10cm}}
      {\tt IWS} & {\tt (I)} & ワークステーション番号.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item {\tt GROPN} は 内部変数 {\tt 'IWS'} を {\tt SGISTX} で設定して
      {\tt SGINIT} を実行する.
      したがって \SGPGETSET の管理する内部変数 {\tt 'IWS'} は
      実行時パラメータによる介入が可能である.
      (以下, 単に「内部変数」というのは \SGPGETSET の
      管理する内部変数のことを指す. )
    \item また, {\tt GROPN} は \SGPSTX によって内部変数
           {\tt 'LCNTL'}を {\tt .TRUE.}にする.
  \end{enumerate}
\end{enumerate}

%----------------------------------------------------------------------
\subsection{GRFRM}
\begin{enumerate}
  \item 機能
  \begin{quote}
    新しい作画領域を設定するとともに,
    新しい図を描くために必要な初期化をする.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL GRFRM}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    なし.
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item このルーチンは変換関数に関する内部変数をすべて「未定義」に
      するとともに, UZPACK, USPACK の初期化をおこなったのち,
      {\tt SGFRM} を呼ぶ.
  \end{enumerate}
\end{enumerate}

%----------------------------------------------------------------------
\subsection{GRFIG}
\begin{enumerate}
  \item 機能
  \begin{quote}
    新しい図を描くために必要な初期化をする.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL GRFIG}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    なし.
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item このルーチンは変換関数に関する内部変数をすべて「未定義」に
      するとともに, UZPACK, USPACK の初期化をおこなう.
      一つのフレーム内に複数の図を描くとき, 2つ目以降の図を描き始める
      前に, そのつど, このルーチンを呼ばなければならない.
  \end{enumerate}
\end{enumerate}

%----------------------------------------------------------------------
\subsection{GRCLS}
\begin{enumerate}
  \item 機能
  \begin{quote}
    図形出力装置をクローズする(終了処理をおこなう).
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL GRCLS}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    なし.
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item 内部で {\tt SGCLS} を呼んでいる.
  \end{enumerate}
\end{enumerate}

%----------------------------------------------------------------
\section{サブルーチンの説明 : 正規化変換}

以下のルーチンは, 基本的には対応する GRPH1/SGPACK の正規化変換に
関するルーチン({\tt GR}を{\tt SG}にかえたもの)と同等な動作をする.
詳しくは「GRPH1」マニュアル参照.
\vspace{1em}

以下にあらわれるパラメータは, すべて \SGPSTX を用いて設定される.
したがって, 実行時オプションによる介入が可能である.

\subsection{GRSVPT}
\begin{enumerate}
  \item 機能
  \begin{quote}
    正規化変換のためのビューポートを設定する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL GRSVPT(VXMIN,VXMAX,VYMIN,VYMAX)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\tt VXMIN,VXMAX,VYMIN,VYMAX} & {\tt (R)} & ビューポート.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item なし.
  \end{enumerate}
\end{enumerate}

%----------------------------------------------------------------
\subsection{GRSWND/GRSSIM/GRSMPL}
\begin{enumerate}
  \item 機能
  \begin{quote}
    正規化変換のためのパラメータを設定する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL GRSWND(UXMIN,UXMAX,UYMIN,UYMAX)} \\
    {\tt CALL GRSSIM(SIMFAC,VXOFF,VYOFF)} \\
    {\tt CALL GRSMPL(PLX,PLY,PLROT)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{8cm}}
      {\tt UXMIN,UXMAX,UYMIN,UYMAX} & {\tt (R)} & ウインドウ. \\
      {\tt SIMFAC}      & {\tt (R)} &  相似変換のスケーリングファクター. \\
      {\tt VXOFF,VYOFF} & {\tt (R)} & 原点のオフセット. \\
      {\tt PLX,PLY,PLROT} & {\tt (R)} & 地図投影の際の回転角.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item なし.
  \end{enumerate}
\end{enumerate}

%----------------------------------------------------------------
\subsection{GRSTRN}
\begin{enumerate}
  \item 機能
  \begin{quote}
    正規化変換の変換関数番号を指定する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL GRSTRN(ITR)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\tt ITR} & {\tt (I)} & 変換関数番号.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item なし.
  \end{enumerate}
\end{enumerate}

%----------------------------------------------------------------
\subsection{GRSTRF}
\begin{enumerate}
  \item 機能
  \begin{quote}
    正規化変換を確定させる.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL GRSTRF}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
	なし.
  \end{quote}
  \item 備考
  \begin{quote}
	なし.
  \end{quote}
%  \begin{enumerate}
%    \item このルーチンは, 設定されていない変換関数に関する
%      パラメータを適当に決めた上で {\tt SGSTRF} を呼ぶ.
%      具体的には, 変換関数が直角直線座標系({\tt ITR}$=1 \sim 4$)の
%      とき, USPACK の変換関数決定ルーチン {\tt USPFIT} を呼ぶ;
%      地図投影座標系({\tt ITR}$=10 \sim 15, 20 \sim 23, 30 \sim 33$)の
%      とき, UMPACK の変換関数決定ルーチン {\tt UMPFIT} を呼ぶ;
%  \end{enumerate}
\end{enumerate}
