### $Id$ ### 2004 年 8 月 18 日 GSAF 使用手引書  [Version 3.84] A. Fukuyama §0. 概要 §1. 使用法 1.1 インストールする. 1.2 プログラムの構成 1.3 プログラムをコンパイルする. 1.4 ディスプレイに表示する. 1.5 図形ファイルに保存する.     1.6 ポストスクリプト・ファイルに変換する.     1.7 プリンタで印刷する. 1.8 ビットマップ・ファイルに保存する.  § 2. サブルーチン一覧 2.1 基本制御サブルーチン 2.2 基本作図サブルーチン 2.3 対話型入出力サブルーチン 2.4 補助サブルーチン 2.5 応用サブルーチン 2.6 鳥瞰図表示サブルーチン §3. サブルーチン詳細 3.1 基本サブルーチン 3.2 基本作図サブルーチン 3.3 対話型入出力サブルーチン 3.4 補助サブルーチン 3.5 応用サブルーチン 3.6 鳥瞰図表示サブルーチン §0. 概要 GSAFの主な機能 基本機能   頁単位の作図(A4横用紙のB5横の領域内が標準)   線分,線分列,多角形,英数文字列,記号   図形属性:線種,線幅,色   色指定:8色指定または RGB 指定   文字属性:幅,高さ,間隔,角度,傾き,書体   文字書体:線文字,簡易書体,Courier, Times, Helvetica, Symbol   文字列内制御:上付/下付添字,微小空白,書体変更   文字の画面表示は簡易書体,印刷時は postscript 書体が可能 応用機能   グラフ:目盛り,目盛り数値,折れ線グラフ,散布グラフ   等高線:同一線種,可変線種,色塗り   等高線データ:等間隔格子,不等間隔格子,等角間隔円形,不等間隔扇型   2次元データの3次元表示:等間隔格子,等高線,色塗り   2次元データの3次元表示:目盛り,目盛り数値 出力機能   画面出力:X Window が標準(一部の機能はTektro互換表示も可能)   1画面表示後に入力待ちが標準:改行などの入力で処理続行   図形ファイルへの格納を頁毎に指定することが可能   画面表示せずに全頁を図形ファイルに格納することも可能   画面ダンプ可能(xwd形式)   1bit, 8bit, 16/24/32 bit 多色表示対応 図形ファイル   圧縮テキスト形式:サイズが小さく,機種依存性がなく,転送が容易   cat コマンドでファイルの合体も可能   gsview コマンドで画面表示可能   gstops コマンドで postscript file に変換可能   gstoeps コマンドで EPSF (Illustrator 形式)に変換可能   頁毎に表示/変換が可能   複数頁を一括して1頁に表示/変換が可能   postscript file/EPSF からは ghostscript で各種ファイルに変換可能   postscript file/EPSF は,monochrome, gray, color が選択可能 入力機能   キーボード入力   カーソル入力   キー押下,マウスボタン押下/開放,マウス移動のイベント入力 補助機能   演算時間,時刻,日付   乱数,乱数初期化   バッファ内データ表示,時間待ち 動作環境   Fortran77, C, X Window の開発環境   gcc と g77 を含む通常の Linux Distribution で動作可能   Linux, HP, Sun, IBM/RS, Compac/Alpha 等で動作確認 §1. 使用法 1.3 プログラムをコンパイルする. 1) 単一のソースファイルの場合 f77g コマンドを使用する f77 以外のコンパイラを用いている場合は,そのコンパイラの コマンド名に g を付加したコマンドを使用する. 例)ソースファイル sample.f 中のプログラムをコンパイルして実行ファ イル sample を作成する。./sample と入力することにより実行ファイ ルが起動される。 f77g sample [オプション] ./sample オプション例 -g デバッグ情報を含める. -O 最適化を行う. 2) 複数のソースファイルの場合 make コマンドを使用する 例)ソースファイル w1.f, w1sub1.f, w1sub2.f, w1sub3.f 中のプロ グラムをコンパイルして、実行ファイル w1 を作成する。 あらかじめ、次のような Makefile をソースファイルと同じディレク トリに作っておく。 FFLAGS の右辺には必要なオプションを設定する。 OBJS の右辺にはソースファイル名に .o を付けて列挙する。 AOUT の右辺には実行ファイル名を設定する。 LIBS の右辺にはライブラリ名を列挙する:内容は OS に依存する. 行を継続するために、改行の直前に\を入れる。 $(FC) で始まる行は、空白ではなく TAB で始めなければなら ないことに注意。 Makefile の内容の詳細は make コマンドのマニュアルを参照のこと。 FFLAGS = -O OBJS = w1.o w1sub1.o w1sub2.o w1sub3.o PROGRAM = w1 LIBS = /usr/local/lib/libgsp.so /usr/local/lib/libgdp.so \ /usr/X11R6/lib/libX11.so FC = f77 $(PROGRAM):$(OBJS) $(FC) $(FFLAGS) $(OBJS) $(LIBS) -o $@ ここで make w1 と入力すると、必要なファイルだけがコンパイルさ れて、実行ファイルw1 が作成される。プログラムを実行するために は、w1 と入力すればよい。 実行ファイルよりも古いプログラムファイルはコンパイルされないの で、変更されていないファイルの無駄なコンパイルが避けられる。 Makefile のオプション等を変更したために再コンパイルが必要になっ た場合は、touch *.f によってプログラムファイルの変更日時を新し くするか、*.o ファイルを削除すればよい。 1.4 ディスプレイに表示する. 600 FORMAT(' # INPUT DISPLAY TYPE : ', & '1)512x380 2)640x475 3)768x570 4)896x665 5)1024x760'/ & '6)1280x950 7)xterm 8)versaterm 9)online 0)quiet)')   画面表示における解像度の種類を増加 (512,640,768,896,1024,1280)   X window 等の使用開始時に要求される画面選択およびオプションの設定を環   境変数 GSGDP で指定することができる.例えば   GSGDP=5c; export GSGDP   と設定しておくと、   画面サイズ 760×564、背景白色  オプションの設定はしない   として、問い合わせが省略される。   また,環境変数 GSGAMMA によって,ディスプレイのガンマ値を設定できる.   X Window の標準は 1 であるが,Macintosh 等では 1.8 が普通である.   1頁描画終了時: ディスプレイの場合にはベルが鳴り、1文字入力待ちとなる。ここで C または CRを入力すると 処理が続行される。 D を入力すると 画面のビットマップファイルが作成され、 別ウィンドウに表示される。 O を入力すると オプション設定を開始する。 F を入力すると 図形データファイルの指定および格納開始 X を入力すると 図形データファイルへの格納開始/停止切り替え S を入力すると その画面のデータを保存.ファイル未指定ならば問い合わせ Y を入力すると ファイル格納指定時には、その画面のデータを保存する。 N を入力すると ファイル格納指定時でも、その画面のデータを保存しない。 H を入力すると 入力可能文字を表示する。 B を入力すると 描画終了時のベル音の ON/OFF 切り替え Q を入力すると 確認の上、プログラムが終了する。   そして文字表示画面に切り替わる。 1.5 図形ファイルに保存する. 対話式: 必要な画面のみ保存する場合: 必要な画面描画後,'S' を押すと保存される. 保存ファイル名が定義されていなければ,問い合わせがある. 各画面毎に選択する場合: 保存開始する画面描画後,'F' を押す. 保存ファイル名が定義されていなければ,問い合わせがある. 各画面描画終了後 'Y' を押せば,保存される. 'N' を押せば,保存されない. 保存を一時中断する場合および再開する場合は 'X' を押す. 保存ファイルを変更する場合は,再び 'F' を押す. 非対話式: 画面モードとして '0' を入力する. 次の問い合わせに対して 'F' を入力すると, 保存ファイル名の問い合わせがある. その次の問い合わせに対して 'C' を入力すると処理が続行され, 描画されるすべての画面のデータがファイルに保存される. 入力ファイル例:ファイル gsdata に保存する場合 0 F gsdata C 以下,プログラムの入力データ 4) 図形データファイルの表示 gsview コマンドを使用する 例)図形データファイル gsdata に含まれている図を表示する。 gsview gsdata 頁番号を入力することにより、任意の頁を表示できる。 新たに図形データファイルを作成し、表示された図をそのファ イルに保存することによって、必要な図だけを含むファイル を作成することができる。 gsview [-a] [-s ps] [-e pe] [-p np] [-tb] [filename] -a : すべての頁を出力する。 -s ps : ps 頁から出力される。省略値 1。 -e pe : pe 頁まで出力される。省略値 999。 -p np : 連続する np 頁を1枚にまとめて出力する。省略値 1。 -t : 各頁の元のタイトルを出力する。 -b : タイトルを出力しない。 filename : 出力するファイル名。省略時は問い合わせられる。 -a, -s, -e オプションを指定しない場合は, 表示する頁の問い合わせがある. 0 を入力すると,それ以降のすべての頁を表示する. -1 を入力すると,ファイルの先頭に戻る. Control-D で終了 1.6 ポストスクリプト・ファイルに変換する. gstops は PostScript ファイル作成コマンド 全体が1つの Postscript ファイルが作成される. Postscript ファイル名は,元のファイル名.ps そのままで lpr コマンド等によってプリンタ出力可能 gstops [-a] [-s ps] [-e pe] [-p np] [-tbrcm] [filename] -a : すべての頁を出力する。 -s ps : ps 頁から出力される。省略値 1。 -e pe : pe 頁まで出力される。省略値 999。 -p np : 連続する np 頁を1枚にまとめて出力する。省略値 1。 -t : 各頁の元のタイトルを出力する。 -b : タイトルを出力しない。 -r : 図を90度回転させる。 -c : カラーの Postscript ファイルを作成する. -m : 白黒の Postscript ファイルを作成する. 標準は灰色ハーフトーンの Postscript ファイルを作成. filename : 出力するファイル名。省略時は問い合わせられる。 -a, -s, -e オプションを指定しない場合は, 表示する頁の問い合わせがある. 0 を入力すると,それ以降のすべての頁を表示する. -1 を入力すると,ファイルの先頭に戻る. Control-D で終了 gstoeps は Encapsulated PostScript (EPS) File 作成コマンド 各頁毎に1つの EPS ファイルが作成される. Adobe Illustrator 1.1 形式なので,Freehand や Illustrator で編集可能 Postscript ファイル名は,元のファイル名-n.eps(n は頁番号) ファイルの末尾に showpage コマンドを付加しないとプリンタ出力できない. コマンドオプションは gstops コマンドと同じ 1.7 プリンタで印刷する. Postscript プリンタがある場合 gsprint コマンドは図形データファイルを標準プリンタに出力する. gsprint [-s ps] [-e pe] [-p np] [-tbrcm] [filename] -s ps : ps 頁から出力される。省略値 1。 -e pe : pe 頁まで出力される。省略値 999。 -p np : 連続する np 頁を1枚にまとめて出力する。省略値 1。 -t : 各頁の元のタイトルを出力する。 -b : タイトルを出力しない。 -r : 図を90度回転させる。 -c : カラーの Postscript ファイルを作成する.(標準) -z : 灰色ハーフトーンの Postscript ファイルを作成する. -m : 白黒の Postscript ファイルを作成する. filename : 出力するファイル名。省略時は問い合わせられる。   gstops コマンドを用いて,postscript ファイルに変換し,   lpr コマンドでプリンタに出力してもよい. gsprint gsdata | lpr Postscrit プリンタがない場合 gstops コマンドで postscript ファイルを作成し ghostscript でプリンタに出力する. ghostscript でプリンタに出力可能なファイルに変換する. Macintosh 上で Adobe Distiller により PDF ファイルに変換.印刷 gstoeps コマンドで EPS ファイルを作成し ghostscript でプリンタに出力する. ghostscript でプリンタに出力可能なファイルに変換する. Macintosh 上で Freehand, Illustrator 等で出力する. ghostscript で GIF ファイルを作成する例 (300dpi を antialiasing して 75dpi に落としている) cat gsdata.ps | \ gs -sDEVICE=pnmraw -sPAPERSIZE=a4 -sOutputFile=- -q \ -dNOPAUSE -r300 -f - | \ pnmscale 0.25 | \ ppmtogif > $1.gif 1.8 ビットマップ・ファイルに保存する.  1画面描画終了時に d コマンドを入力することに図形ビットマップ ファイルが作成される. この図形ビットファイルマップの形式は X windows アプリケーションで 共通である。 xwud コマンドによって、図形ビットマップファイルを表示できる. 例)図形ビットマップファイル gsdump1 に含まれている図を表示する。 xwud < gsdump1 § 2. サブルーチン一覧 2.1 基本制御サブルーチン GSOPEN GSAF の開始 GSCLOS GSAF の終了 GSSIZE(PX,PY) 実座標(用紙サイズの設定) GSTITL(KTITL) 画面タイトルの設定 GSOPTN(KOPTDL,IOPT) オプションの設定 GSFILE(NFCS,NFCT) 図形データ格納ファイルの設定 GSREAD(NFCR,NPAGE) 図形データファイルから読込 GSCOMB(NFCR,I,ITL) 図形データファイルから複数頁読込 GSLIST(NFCR,NPAGEA,NA,NP) 図形データファイルの頁リスト問合せ 2.2 基本作図サブルーチン PAGES 1画面の作図開始 PAGEE 1画面の作図終了 PAGEY 1画面の作図終了.入力を待たずに処理続行.ファイル保存 PAGEN 1画面の作図終了.入力を待たずに処理続行.ファイル保存せず SETPAGE(PXOFFSET,PYOFFSET,PXSCALE,PYSCALE) 画面のオフセットと倍率を設定 INQPAGE(PXOFFSET,PYOFFSET,PXSCALE,PYSCALE) 画面のオフセットと倍率を問い合わせ SETVEW(PXMIN,PXMAX,PYMIN,PYMAX,YMIN,YMAX,YMIN,YMAX) 画面上に座標を設定 OFFVEW 画面座標に復帰 INQVEW(PXMIN,PXMAX,PYMIN,PYMAX,YMIN,YMAX,YMIN,YMAX) 設定座標を問合せ SETCLP(XMIN,XMAX,YMIN,YMAX) クリッピング領域を設定 OFFCLP クリッピングを停止 SETCLP(XMIN,XMAX,YMIN,YMAX) クリッピング領域を問合せ MOVE(X,Y) 指定座標へ移動 DRAW(X,Y) 指定座標へ直線を作図 LINE1(XS,YS,XE,YE) 線分表示機能 LINES(X,Y,N) 線分群表示機能 LINESC(X,Y,N) 線分群表示機能(閉曲線) POLY(X,Y,N) 多角形面塗り機能 RGBTRG(X,Y,R,G,B) 三角形を連続的色変化で面塗り SETLIN(ILN,IBL,ICL) 線の種類、太さ、色の設定 INQLIN(ILN,IBL,ICL) 線の種類、太さ、色の問合せ SETRGB(R,G,B) 多色設定機能 SETLNW(W) 線幅設定機能 INQRGB(R,G,B) 多色問合せ機能 INQLNW(W) 線幅問合せ機能 MARK(X,Y) 指定座標にマークを作図 INQPOS(X,Y) 現在の座標の問合せ TEXT(KTEXT,NCHAR) 文字列を作図 INQTSZ(KTEXT,NCHAR,SIZE) 文字列の長さの問合せ SETMKS(IMRK,SMRK) マークの種類、大きさの設定 SETMRK(IMRK,HMRK,WMRK,ANGL,TILT) マークの種類、高さ、幅、角度、傾きの設定 INQMRK(IMRK,HMRK,WMRK,ANGL,TILT) マークの種類、高さ、幅、角度、傾きの問合せ SETCHS(CHH,ANGL) 文字の高さ、角度の設定 SETCHH(CHH,ANGL) 文字の高さ、角度の設定(ハードウェア文字) SETCHR(CHH,CHW,CHSP,ANGL,TILT) 文字の高さ、幅、間隔、角度、傾きの設定 INQCHR(CHH,CHW,CHSP,ANGL,TILT) 文字の高さ、幅、間隔、角度、傾きの問合せ SETFNT(IFNT) 文字種類の設定 INQFNT(IFNT) 文字種類の問合せ PGREAD(NFCR,NPAGE,XFACT,YFACT,XOFS,YOFS,ROT,ITL,NPAGEF) 図形データファイルの頁読込(変形可能) GSFOPN(FILENAME,IND) 図形データファイルの指定と保存の開始 GSFCLS 図形データファイルの接続解除 GSFON 図形データファイルへの格納開始 GSFOFF 図形データファイルへの格納停止 GUGRPS グループ化開始 GUGRPE グループ化終了 GF_SET_GCFUNC(ID) 描画する際の書き込み属性を設定する GF_INQ_GCFUNC(ID) 描画する際の書き込み属性を問い合わせる. GF_DEF_IMAGE(ID,IW,IH,DATA) pixel map の定義 GF_UNDEF_IMAGE(ID) pixel map の削除 GF_PUT_IMAGE(ID,X,Y) pixel map の表示 2.3 対話型入出力サブルーチン CHIN(KTEXT,NCHAR) 文字列入力 XYIN(X,Y) 座標入力 ERAS 画面消去 BELL 音響出力 CHMODE 文字画面に出力 GRMODE 図形画面に出力 GF_SET_EVENT(ID) 待ち受けるイベントの種類を設定する. GF_INQ_EVENT(ID) 待ち受けているイベントの種類を問い合わせる. GF_GET_EVENT(ID,X,Y,KID,KEY) イベントを待ち受ける. GF_CHECK_EVENT(ID,X,Y,KID,KEY) イベントを読み込む. 2.4 補助サブルーチン GUDATE(NDY,NDM,NDD,NTH,NTM,NTS) 日付、時刻の問合せ GUTIME(T) CPU 処理時間の問合せ GUDSTR(KIN,NIN,KOUT,NOUT) 引用型文字列を文字列に変換 GUCPTL(KID) 文字を大文字に変換 CHRASC(KTEXT,IASC,NCHAR) 文字列を整数配列に変換 ASCCHR(IASC,KTEXT,NCHAR) 整数配列を文字列に変換 GUFLSH 文字バッファに蓄積されたデータを画面に表示 GF_SYNC 図形バッファに蓄積されたデータを画面に表示 GU_XFLUSH X11 のバッファ内にある命令の即時実行 GU_SLEEP(T) プログラム実行を一定時間停止 GURAND(X) 0..X の範囲の乱数を返す関数 GU_SRAND(I) 与えられた整数をシードとして乱数を初期化 GUCLIP(D) 倍精度から単精度への変換を行う関数 NGULEN(GSTEP) グラフメモリ数値の最適化を行う関数 2.5 応用サブルーチン TEXTX(KTEXTX) 引用型文字列の作図 GTEXT(X,Y,KTEXT,NCHAR,IJUST) 文字列を指定位置に揃えて作図 GTEXTX(X,Y,KTEXTX,IJUST) 引用型文字列を指定位置に揃えて作図 NUMBR(R,KFORM,NCHR) 単精度実数を任意の書式で作図 NUMBD(D,KFORM,NCHR) 倍精度実数を任意の書式で作図 NUMBI(I,KFORM,NCHR) 整数を任意の書式で作図 GNUMBR(X,Y,R,IND,IJUST) 単精度実数を指定位置に揃えて作図 GNUMBD(X,Y,D,IND,IJUST) 倍精度実数を指定位置に揃えて作図 GNUMBI(X,Y,I,IJUST) 整数を指定位置に揃えて作図 GNUMBP(X,Y,I,J,IJUST) 巾乗付き整数を指定位置に揃えて作図 MOVEPT(X,Y,IPAT) 指定座標へ移動、線パターンを指定 DRAWPT(X,Y) 指定座標へ指定された線パターンで直線を作図 SETLPT(IPAT,NPAT,PAT) 線パターンの登録 GMNMX1(G,NS,NE,NSTEP,GMIN,GMAX) 1次元配列の最小,最大 GMNMX2(G,NA,NXS,NXE,NXSTEP,NYS,NYE,NYSTEP,GMIN,GMAX) 2次元配列の最小,最大 GQSCAL(GMIN,GMAX,GSMIN,GSMAX,GSCAL) 最小、最大、目盛り間隔の最適値 GDEFIN(PXMIN,PXMAX,PYMIN,PYMAX,GYMIN,GYMAX,GYMIN,GYMAX) グラフ領域の設定 INQ_GDEFIN(PXMIN,PXMAX,PYMIN,PYMAX,GYMIN,GYMAX,GYMIN,GYMAX) グラフ領域の問合せ INQPOS2D(X,Y) グラフ領域内位置問合せ MOVE2D(X,Y) グラフ領域内指定座標へ移動 DRAW2D(X,Y) グラフ領域内指定座標へ直線を作図 MOVEPT2D(X,Y,IPAT) グラフ領域内指定座標へ移動、線パターンを指定 DRAWPT2D(X,Y) グラフ領域内指定座標へ指定された線パターンで直線を作図 LINE2D(X,Y,N) グラフ領域内線分表示機能 LINES2D(X,Y,N) グラフ領域内線分群表示機能 LINESC2D(X,Y,N) グラフ領域内線分群表示機能(閉曲線) POLY2D(X,Y,N) グラフ領域内多角形面塗り機能 RGBTRG2D(X,Y,R,G,B) グラフ領域内三角形を連続的色変化で面塗り GFRAME 枠の作図 GSCALE(GXORG,GXSTEP,GYORG,GYSTEP,SLEN,IND) 目盛りあるいは格子の作図 GVALUE(GXORG,GXSTEP,GYORG,GYSTEP,IND) 目盛り数値の作図 GSCALL(GXORG,NXSTEP,GYORG,NYSTEP,SLEN,IND) 対数型目盛りあるいは格子の作図 GVALUL(GXORG,NXSTEP,GYORG,NYSTEP,IND) 対数型目盛り数値の作図 GPLOTP(GX,GY,NS,NE,NSTEP,IMARK,ISTEP,IPAT) 折れ線グラフの作図 GPLOTPE(GX,GY1,GY2,NS,NE,NSTEP,SCAL) 誤差幅グラフの作図 CONTR1(Z,NXA,NX,NY,ZORG,ZSTEP,NSTEP,IPRD) 等間隔格子データの等高線表示 CONTR2(Z,X,Y,NXA,NX,NY,ZORG,ZSTEP,NSTEP,IPRD) 不等間隔格子データの等高線表示 CONTR3(Z,R,NXA,NX,NY,ZORG,ZSTEP,NSTEP) 等角度間隔円形データの等高線表示 CONTR4(Z,R,T,NXA,NX,NY,ZORG,ZSTEP,NSTEP) 不等角度間隔扇型データの等高線表示 CONTP1(Z,NXA,NX,NY,ZORG,ZSTEP,NSTEP,IPRD,IPAT,KA) 等間隔格子データの等高線表示(線パターン) CONTP2(Z,X,Y,NXA,NX,NY,ZORG,ZSTEP,NSTEP,IPRD,IPAT,KA) 不等間隔格子データの等高線表示(同上) CONTP3(Z,R,NXA,NX,NY,ZORG,ZSTEP,NSTEP,IPAT,KA) 等角度間隔円形データの等高線表示(同上) CONTP4(Z,R,T,NXA,NX,NY,ZORG,ZSTEP,NSTEP,IPAT,KA) 不等角度間隔扇型データの等高線表示(同上) CONTQ1(Z,NXA,NX,NY,ZORG,ZSTEP,NSTEP,IPRD,IPAT,KA) 等間隔格子データの等高線表示(線パターン、対称) CONTQ2(Z,X,Y,NXA,NX,NY,ZORG,ZSTEP,NSTEP,IPRD,IPAT,KA) 不等間隔格子データの等高線表示(同上) CONTQ3(Z,R,NXA,NX,NY,ZORG,ZSTEP,NSTEP,IPAT,KA) 等角度間隔円形データの等高線表示(同上) CONTQ4(Z,R,T,NXA,NX,NY,ZORG,ZSTEP,NSTEP,IPAT,KA) 不等角度間隔扇型データの等高線表示(同上) CONTPF(Z,X,Y,NNOD,IELM,NELM,ZORG,ZSTEP,NSTEP,IPAT,KA) 3角形有限要素データの等高線表示 PERSE1(Z,NXA,NX,NY,ZMIN,ZMAX,IXY,IND,XL,YL,ZL,A,B,C,D,E) 等間隔格子データの3次元表示 SPLN1D(X,F,FX,NX,XG,FG,NXG,IP) 1次元データのスプライン補間を行う。 SPLN2D(X,Y,F,FX,FY,FXY,A,NXA,NX,NY,XG,YG,FG,NXAG,NXG,NYG,IP) 2次元データのスプライン補間を行う CONTF1(Z,NXA,NXMAX,NYMAX,ZL,RGB,NSTEP,IPRD) 直交座標等間隔 色塗り等高線図 CONTF2(Z,X,Y,NXA,NXMAX,NYMAX,ZL,RGB,NSTEP,IPRD) 直交座標不等間隔 色塗り等高線図 CONTF3(Z,R,NXA,NXMAX,NYMAX,ZL,RGB,NSTEP) 極座標等角度間隔 色塗り等高線図 CONTF4(Z,R,T,NXA,NXMAX,NYMAX,ZL,RGB,NSTEP) 極座標不等角度間隔 色塗り等高線図 CONTG1(Z,NXA,NXMAX,NYMAX,ZL,RGB,ILN,WLN,NSTEP,ISPL,IPRD,KA) 直交座標等間隔 可変線種等高線図 CONTG2(Z,X,Y,NXA,NXMAX,NYMAX,ZL,RGB,ILN,WLN,NSTEP,ISPL,IPRD,KA) 直交座標不等間隔 可変線種等高線図 CONTG3(Z,R,NXA,NXMAX,NYMAX,ZL,RGB,ILN,WLN,NSTEP,ISPL,KA) 極座標等角度間隔 可変線種等高線図 CONTG4(Z,R,T,NXA,NXMAX,NYMAX,ZL,RGB,ILN,WLN,NSTEP,ISPL,KA) 極座標不等角度間隔 可変線種等高線図 CONTE1(Z,NXA,NXMAX,NYMAX,ZL,NSTEP,IPRD,IPAT,KA) 直交座標等間隔 簡易型等高線図 CONTE2(Z,X,Y,NXA,NXMAX,NYMAX,ZL,NSTEP,IPAT,IPRD,KA) 直交座標不等間隔 簡易型等高線図 CONTE3(Z,R,NXA,NXMAX,NYMAX,ZL,NSTEP,IPAT,KA) 極座標等角度間隔 簡易型等高線図 CONTE4(Z,R,T,NXA,NXMAX,NYMAX,ZL,NSTEP,IPAT,KA) 極座標不等角度間隔 簡易型等高線図 RGBBND(X1,X2,Y1,Y2,RGB,N,IND) パレット表示機能 3.6 鳥瞰図表示サブルーチン GDEFIN3D(PXMIN,PXMAX,PYMIN,PYMAX,XL,YL,ZL) 2次元データを3次元表示するための GDEFIN GVIEW3D(PHI,THETA,RADIUS,R,IAXIS,OX,OY,OZ) 2次元データを3次元表示するための視点を設定する。 GDATA3D1(Z,NXA,NX,NY,XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX) 等間隔格子2次元データを3次元表示するためのデータを与 える。         NX,NY の最大値は標準 300.         それ以上の場合は A3dcomm.inc の NXDM, NYDM を増やして         gsaf を再コンパイル.実行時必要メモリが増加する. GDATA3D2(Z,X,Y,NXA,NX,NY,ZMIN,ZMAX) 不等間隔格子2次元データを3次元表示するためのデータを与 える。データ範囲=表示範囲         NX,NY の最大値は標準 300.         それ以上の場合は A3dcomm.inc の NXDM, NYDM を増やして         gsaf を再コンパイル.実行時必要メモリが増加する. GDATA3D3(Z,X,Y,NXA,NX,NY,XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX) 不等間隔格子2次元データを3次元表示するためのデータを与 える。         NX,NY の最大値は標準 300.         それ以上の場合は A3dcomm.inc の NXDM, NYDM を増やして         gsaf を再コンパイル.実行時必要メモリが増加する. CPLOT3D1(IND,RGBFUNC) 等間隔格子2次元データをカラーの面で3次元表示する。 RGBFUNC(R,RGB(3)) 2次元データをカラー表示する際にその色を決定するサブルーチン群 WHITE データの面の色を白にする。 BLACK データの面の色を黒にする。 R2G2P データの面の色を上から赤黄緑水青紫とする。(全200色) R2G2B データの面の色を上から赤黄緑水青とする。(全160色) R2G2BW データの面の色を上から赤黄緑水青とし、最下面のみ白。(全161色) R2W2B データの面の色を上から赤、白、青とする。(全80色) R2Y2W データの面の色を上から赤、黄、白とする。(全80色) W2G2B データの面の色を上から白、緑、青とする。(全80色) W2R2K データの面の色を上から白、黄、赤、黒とする。(全120色) K2B2W データの面の色を上から黒、青、水、白とする。(全120色) WRKBW データの面の色を上から白黄赤黒青水白とする。(全120色) WRGBW データの面の色を上から白黄赤緑青水白とする。(全120色) PERSE3D(IXY,IND) 等間隔格子2次元データの3次元表示を行う。 CONTQ3D1(ZORG,ZSTEP,NSTEP,IPAD,IPAT,KA,RGBFUNC,IZ) 等間隔格子2次元データの等高線を線パターン付きで3次元表示する. GAXIS3D1(IAXIS) 格子2次元データ描画時に軸を描く。 GSCALE3DX(XORG,XSTEP,SCL,IND) GSCALE3DY(YORG,YSTEP,SCL,IND) GSCALE3DZ(ZORG,ZSTEP,SCL,IND) 格子2次元データを表示する際の軸の目盛を表示する。 GVALUE3DX(XORG,XSTEP,IPOS,IND) GVALUE3DY(YORG,YSTEP,IPOS,IND) GVALUE3DZ(ZORG,ZSTEP,IPOS,IND) 格子2次元データを表示する際の軸の目盛りの数値を記入する。 GTTTx(X,Y,Z,XP,YP) (x=A,B) 格子2次元データをGDEFIN3D等で定義された平面へ射影する。 INQCNR3D(POS) グラフ領域をなす直方体の8つの角の座標を求める. INQANG3D(THETA,PHI) 視線のなす角度を求める. (注意事項) 以上のサブルーチンの引数は, NUMBD および GNUMBD に含まれる D を除き、 すべて単精度実数型、整数型あるいは文字型である。 §3. プログラムの構成 GSAF を用いて作図を開始する前に、GSOPEN を呼んで初期処理を行うことが必 要である。また、プログラムが終了する(STOP 文に達する)前に GSCLOS を 呼んで終了処理を行うことが必要である。特に図形データファイルを作成する 場合には、GSCLOS が呼ばれないと最後のデータがファイルに書き込まれない ので、必ず GSCLOS を呼ばなくてはならない。 1頁の作図は PAGES によって開始され、PAGEE によって終了する。したがっ て、作図ルーチンは PAGES と PAGEE の間で呼ばれなければならない。 したがってプログラムの大まかな構成は次のようになる。 CALL GSOPEN (1) CALL PAGES 第1ページの作図 (2) CALL PAGEE (1) CALL PAGES 第2ページの作図 (2) CALL PAGEE (1) CALL GSCLOS 頁作図中の領域 (2) とそれ以外の領域 (1) とでは、使用できるルーチンが異なる。 任意の範囲で呼ぶことのできるサブルーチン 補助サブルーチン GMNMX1, GMNMX2, GQSCAL (1) の範囲で呼ぶことのできるサブルーチン 基本制御サブルーチン (2) の領域で呼ぶことのできるサブルーチン 基本作図サブルーチン 対話型入出力サブルーチン、 応用サブルーチン(GMNMX1, GMNMX2, GQSCAL を除く) (注意事項) グラフィックディスプレイの場合、(2)の領域で WRITE 文や READ 文 を実行すると画面を乱す場合があるので、CHMODE と GRMODE ではさ む必要がある。 GSOPEN 以前あるいは GSCLOS 以後に GSAF のサブルーチンを呼んだ場合や、 (1) と(2) の領域を間違えた場合には、そのサブルーチンは無視される。 プログラム例(doc/sample.f に格納) 簡単なプログラムの例として、複数の1次元データを1枚のグラフに表示する サブルーチンを示す。配列 GX には x 座標を、配列 GY にはその x 座標に対 する関数値を代入し、NXM には配列 GY の第一引数の上限を、NXMAX には x 座標の総数を、NGMAX にはデータ数をそれぞれ設定して、 GRAPH1 を呼んでい る。 IMPLICIT REAL*8 (A-F,H,O-Z) PARAMETER (NXM=101) DIMENSION GX(NXM),GY(NXM,2) C CALL GSOPEN C NXMAX=101 DX=2*3.1415927/(NXMAX-1) Y0=0.0 YA=1.0 C 1 WRITE(6,*) '## INPUT Y0,YA ?' READ(5,*,ERR=1,END=9000) Y0,YA C DO 100 N=1,NXMAX GX(N) =GUCLIP((N-1)*DX) GY(N,1)=GUCLIP(Y0+YA*SIN(GX(N))) GY(N,2)=GUCLIP(Y0+YA*COS(GX(N))) 100 CONTINUE C CALL PAGES CALL GRAPH1(4.0,24.0,2.0,17.0,GX,GY,NXM,NXMAX,2) CALL PAGEE GOTO 1 C 9000 CALL GSCLOS STOP END C SUBROUTINE GRAPH1(PXMIN,PXMAX,PYMIN,PYMAX,GX,GY,NXM,NXMAX,NGMAX) C DIMENSION GX(NXM),GY(NXM,NGMAX) C CALL GMNMX1(GX,1,NXMAX,1,XMIN,XMAX) CALL GMNMX1(GY(1,1),1,NXMAX,1,YMIN,YMAX) DO 100 NG=2,NGMAX CALL GMNMX1(GY(1,NG),1,NXMAX,1,YMIN1,YMAX1) YMIN=MIN(YMIN,YMIN1) YMAX=MAX(YMAX,YMAX1) 100 CONTINUE CALL GQSCAL(XMIN,XMAX,GXMIN,GXMAX,GXSCAL) CALL GQSCAL(YMIN,YMAX,GYMIN,GYMAX,GYSCAL) C C Origin should have a scale mark C IF(GXMIN*GXMAX.GT.0.0) THEN GXORG=GXMIN ELSE GXORG=0.0 ENDIF IF(GYMIN*GYMAX.GT.0.0) THEN GYORG=GYMIN ELSE GYORG=0.0 ENDIF C C symbol font has better minus sign C CALL SETFNT(44) CALL SETCHS(0.35,0.0) CALL GDEFIN(PXMIN,PXMAX,PYMIN,PYMAX,GXMIN,GXMAX,GYMIN,GYMAX) CALL GFRAME C C NGULEN choose appropriate format of scale values C CALL GSCALE(GXORG,GXSCAL,0.0,0.0,0.3,9) CALL GVALUE(GXORG,2*GXSCAL,0.0,0.0,NGULEN(2*GXSCAL)) CALL GSCALE(0.0,0.0,GYORG,GYSCAL,0.3,9) CALL GVALUE(0.0,0.0,GYORG,2*GYSCAL,NGULEN(2*GYSCAL)) DO 200 NG=1,NGMAX CALL SETLIN(-1,-1,7-MOD(NG-1,5)) CALL GPLOTP(GX,GY(1,NG),1,NXMAX,1,0,0,MOD(NG-1,8)) 200 CONTINUE CALL SETLIN(-1,-1,7) RETURN END §4. サブルーチン詳細 入出力引数の説明で [I] は整数型 をそれぞれ表し、 [R] は単精度実数型 [D] は倍精度実数型 [An] はn桁の文字型 (m) が付加されている場合は配列であることを示す。 ACOS では、本来単精度実数型の引数に倍精度実数型を引き渡しても動作する (配列を除く)。このような処理系は例外であり、他の処理系に移植した場合 に正常に動作しないので注意が必要。 配列を引数とする場合、サブルーチン内部では添字は 1 から始まるものとみ なされる。 文字列を引数とする場合に、文字数の指定を省略するため、引用文字列を使用 するルーチンがある。引用文字列では、先頭の文字およびそれと同じ文字では さまれた文字列が実際の文字列を表す。文字数を内部で計算できるので、別に 指定する必要がない。 例 引用文字列 /ABCD/ 実際の文字列 ABCD @A/B@ A/B // 空 4.1 基本サブルーチン GSOPEN GSAF の初期化を行う。 内部変数の初期化とともに、GSSIZE(25.6,18.1) および GSTITL(' ') が実行 される。GSCLOS を呼ぶまでに再び GSOPEN が呼ばれた場合には、2度目以降 の GSOPEN は無視される。 対話型入出力装置の場合、GSOPEN が呼ばれると装置属性とオプション選択の 問い合わせを行う。( あらかじめ属性が登録された端末の場合には、装置属 性の問い合わせは省略される。) 装置属性の問い合わせ WS 画面サイズ、反転等 オプション選択の問合せ # INPUT : (C)ONTINUE, (O)OPTION,(H)ELP,(Q)UIT と表示され、入 力待ちとなる。 文字 C を入力すると、そのまま処理を続行する。 文字 O を入力すると、以下のオプションを設定できる。 <標準値> 用紙サイズ(cm) (PX,PY) <25.6,18.1> 画面タイトル (42文字までの引用文字列) <一つの空白> 図形データ格納 (論理変数 T or F) 文字 H を入力すると、1頁作図終了時に入力できる1文字コマンド の説明を表示する。 文字 Q を入力すると、実行を終了する。 GSCLOS GSAF の終了処理を行い、GSOPEN が呼ばれてからの CPU 処理時間を 表示する。 GSCLOS を呼ばずにプログラムが終了した場合には、バッファに蓄えられてい るデータが出力されなかったり、データファイルに書き込まれない場合がある。 GSSIZE(PX,PY) 画面サイズ(用紙サイズ)を cm 単位で設定する。 入力 PX [R] 用紙の X 方向の長さ (cm) PY [R] 用紙の Y 方向の長さ (cm) ページプリンタの場合には、標準設定では指定された大きさで出力される。 ディスプレイの場合には PX,PY の縦横比を変えないで画面一杯に表示される。 GSOPEN が呼ばれた時に、標準値 PX=25.6,PY=18.1 に設定される。 この標準値はほぼB5で、A4の用紙に描かれた時には周囲の余白幅は約1インチとなる。 Y 方向の高さには画面ヘッダ部の高さ(0.5cm)を含まない。 GSTITL(KTITL) 画面タイトルを設定する。 入力 KTITL [A42] 42文字までの引用文字列で表されたタイトル 各画面の Y 方向上部に画面ヘッダ「日付、時刻、タイトル、頁番号」が 記入される。 タイトルの標準設定は1文字の空白である。 画面ヘッダを記入しない場合には空文字列、すなわち CALL GSTITL('//') を指定する。 GSOPTN(KOPTDL,IOPT) オプションを設定する。 入力 KOPTDL [A4] 4文字の引用文字列で表された2文字のオプション名 (例 '/HR/') IOPT [I] オプションに設定される整数値 出力装置固有のオプションを設定する。 ACOS ディスプレイの場合に設定できるオプション HR 0 低解像度(1024×1024)で送信 1 高解像度(4096×4096)で送信 AP 0 自動印刷モード解除 1 自動印刷モード設定 オプション名が空文字列の場合は、GSOPEN や PAGEE で選択できるオプション 設定が起動される。 GSFILE(NFCS,NFCT) 図形データのファイルへの格納を制御する。 入力 NFCS [I] 図形ファイルのファイル番号を与え、格納を開始する。(1≦NFCS≦63) NFCS=0 の場合ファイルへの格納を停止する。 NFCT [I] 一時ファイルのファイル番号を与える。(1≦NFCT≦63) ファイル番号 NFCS のファイルが事前に接続されている場合にはそのファイル が使用される。事前に接続されていない場合には、ファイル名の問合せが行わ れる。問合せによって指定されたファイルが既に存在する場合には、確認が求 められる。ファイルへの格納が開始されると、各画面作図完了時に格納するか どうか、確認が求められる。 対話型入出力装置において、PAGEE 実行時のオプション指定でファイルへの格 納を開始した場合にも呼ばれる。 すでに格納を開始している場合に再び GSFILE を呼ぶと、使用中のファイルは 閉じられ、以後の図形データは新しく GSFILE で指定された NFCS をファイル 番号とするファイルに格納される。 オプション設定で図形データ格納を開始した場合には、NFCS および NFCT の 標準値として、それぞれ 51, 50 が使用される。 GSREAD(NFCR,NPAGE) 図形データファイルから指定されたページを読み込み、作図する。 入力 NFCR [I] 読み込む図形データファイルのファイル番号を与える。 (1≦NFCR≦63) NPAGE [I] NPAGE>0 : ページ番号 NPAGE のみ作図する。 NPAGE=0 : 以後の全ヘージを作図する。 NPAGE<0 : 以後の連続する NPAGE ページを作図する。 画面サイズ(用紙サイズ)および画面タイトルはファイル作成時に指定したも のから変更できない。 このルーチンでは図形ファイルを巻き戻すことはない。最初から捜し始めるた めには REWIND NFCR によってファイルを巻き戻す必要がある。 GSCOMB(NFCR,I,ITL) 図形データファイルに含まれている連続する複数頁を読込、まとめて 1頁に出力する。 入力 NFCR [I] 読み込む図形データファイルのファイル番号を与える。 (1≦NFCR≦63) I [I] 1頁にまとめて出力される頁数。(1≦I≦16) ITL [I] 0: 各頁のヘッダを出力しない 1: 出力する。 ITL=0 の場合には、y > 18.1 cm の領域は出力されない。 GSLIST(NFCR,NPAGEA,NA,NP) 図形データファイルに含まれる頁のリストを作成する。 入力 NFCR [I] 読み込む図形データファイルのファイル番号を与える。 (1≦NFCR≦63) NA [I] 頁リストが返される配列の大きさ 出力 NPAGEA [I(NA)] 頁リストが返される整数配列 NP [I] 含まれる頁数 4.2 基本作図サブルーチン PAGES 1頁の作図を開始する。 このサブルーチンによって作図の初期化が行われ、ディスプレイでは図形表示画面に切り替えられる。初期化に際して、OFFVEW, OFFCLP, SETLIN(0,2,7), SETCHH(0.35,0.0), SETMKS(0,0.2), MOVE(0.0,0.0) が実行され、画面上部に画面ヘッドが記入される。画面ヘッドを省略するためには、GSTITL('//') を呼べばよい。 PAGES を呼ばずに作図ルーチンを使用した場合は、その作図ルーチンは無視される。 PAGEE 1頁の作図を終了する。 ディスプレイの場合にはベルが鳴り、1文字入力待ちとなる。ここで C または CRを入力すると 処理が続行される。 D を入力すると 画面のビットマップファイルが作成され、 別ウィンドウに表示される。 O を入力すると オプション設定を開始する。 F を入力すると 図形データファイルの指定および格納開始 X を入力すると 図形データファイルへの格納開始/停止切り替え S を入力すると その画面のデータを保存.ファイル未指定ならば問い合わせ Y を入力すると ファイル格納指定時には、その画面のデータを保存する。 N を入力すると ファイル格納指定時でも、その画面のデータを保存しない。 H を入力すると 入力可能文字を表示する。 B を入力すると 描画終了時のベル音の ON/OFF 切り替え Q を入力すると 確認の上、プログラムが終了する。 そして文字表示画面に切り替わる。 画面ビットマップファイルには gsdump# (# は頁番号)という名前が付けられる。かなり大きなファイルなので不要なファイルは直ちに消去すること。作成されたファイルを再表示するためには xwd gsdump# を実行する。 図形ファイルにデータを格納している場合には、その頁を格納するかどうかの問い合わせが行われる。 SETPAGE(PXOFFSET,PYOFFSET,PXSCALE,PYSCALE) 画面のオフセットと倍率を設定 INQPAGE(PXOFFSET,PYOFFSET,PXSCALE,PYSCALE) 画面のオフセットと倍率を問い合わせ SETVEW(PXMIN,PXMAX,PYMIN,PYMAX,YMIN,YMAX,YMIN,YMAX) 画面上に座標系を設定する。 入力 PXMIN [R] 座標系を設定する画面領域の左端の x 座標 (cm) PXMAX [R] 座標系を設定する画面領域の右端の x 座標 (cm) PYMIN [R] 座標系を設定する画面領域の下端の y 座標 (cm) PXMAX [R] 座標系を設定する画面領域の上端の y 座標 (cm) XMIN [R] 画面領域に設定する座標系の左端の x 座標 XMAX [R] 画面領域に設定する座標系の右端の x 座標 YMIN [R] 画面領域に設定する座標系の下端の y 座標 XMAX [R] 画面領域に設定する座標系の上端の y 座標 設定された座標系は、指定された画面領域内だけでなく画面全体で有効である。 標準の座標系は左下を原点とし、右上を (25.6,18.1) とする。 OFFVEW SETVEW で設定された座標系を無効にし、座標系を画面座標に一致させる。 INQVEW(PXMIN,PXMAX,PYMIN,PYMAX,YMIN,YMAX,YMIN,YMAX) SETVEW で設定されている座標系を問い合わせる。出力される引数は SETVEW と同じ。 SETCLP(XMIN,XMAX,YMIN,YMAX) 作図範囲を限定するため、クリッピング領域を設定する。 入力 XMIN [R] クリッピング領域の左端の x 座標 XMAX [R] クリッピング領域の右端の x 座標 YMIN [R] クリッピング領域の下端の y 座標 XMAX [R] クリッピング領域の上端の y 座標 直線はクリッピング領域からはみ出した部分が作図されない。 マークは中心がクリッピング領域外であると作図されない。 文字はクリッピングされず、つねに作図される。 OFFCLP SETCLP で設定されたクリッピング領域を無効にし、画面全体を作図可能にする。 INQCLP(XMIN,XMAX,YMIN,YMAX) SETCLP で設定されているクリッピング領域を問い合わせる。出力される引数は SETCLP と同じ。 MOVE(X,Y) 指定された座標を現在位置とする。 入力 X [R] 新しい位置の x 座標 Y [R] 新しい位置の y 座標 DRAW(X,Y) 現在位置から指定された座標まで直線を作図し,指定された座標を現在位置とする。 入力 X [R] 作図する直線の新しい端の x 座標 Y [R] 作図する直線の新しい端の y 座標 LINE1(XS,YS,XE,YE) 線分表示機能 MARK(X,Y) 指定された座標にマークを作図し,指定された座標を現在位置とする。 入力 X [R] 作図するマークの中心の x 座標 Y [R] 作図するマークの中心の y 座標 マークの種類は SETMRK あるいは SETMKS によって指定する。マークの指定が負の場合には現在位置から指定された座標まで直線を作図した後マークを作図する。 マークは記号あるいは文字の中心が指定位置となるように作図される。 INQPOS(X,Y) 現在位置を問い合わせる。 出力 X [R] 現在位置の x 座標 Y [R] 現在位置の y 座標 TEXT(KTEXT,NCHR) 現在位置に文字列の作図を行う。 入力 KTEXT [A*] 作図する文字列 NCHR [I] 作図する文字数 (NCHR < 256) 特殊文字列:次の文字列は作図形式を変更する意味をもつ。(\ は \ と表示される場合がある) \+ 以後の文字列を上付添字とする。 \- 以後の文字列を下付添字とする。 \= 以後の文字列を添字ではなく、通常の文字とする。 \* 1文字後退して重ね打ちする。 \\ \を作図する。 現在位置が最初の文字の左下隅となり、作図終了後は次に文字を出力した場合のその文字の左下隅が新しい現在位置となる。 INQTSZ(KTEXT,NCHR,SIZE) 文字列の幅を問い合わせる。 入力 KTEXT [A*] 作図しようとする文字列 NCHR [I] 作図しようとする文字数 (NCHR < 256) 出力 SIZE [R] 文字列の幅 (cm) SETLIN(ILN,IBL,ICL) 線の種類、太さ、色を設定する。 入力 ILN [I] 線の種類 0:実線 1:点線 2:破線 3:長破線 4:一点鎖線 5:長一点鎖線 6:二点鎖線 7:長二点鎖線 IBL [I] 線の太さ 0:最も細線 1:1ドット幅 2:2ドット幅・・・ ICL [I] 線の色 0:白 1:水色 2:黄 3:紫 4:緑 5:青 6:赤 7:黒 この設定は、直線、マーク、文字列すべてに影響を与える。特にストローク文字列の場合は線の種類の影響も受けるので要注意。 線の種類は出力装置の固有機能に依存し、各直線毎にパターンが描かれるため、短い直線を連ねた場合には実線にみえる。長い直線にのみこの機能を使用した方がよい。 ILN, IBL, ICL として -1 を指定した場合には、現在の設定値のまま変更されない。 INQLIN(ILN,IBL,ICL) 現在設定されている線の種類、太さ、色を問い合わせる。出力される引数は SETLIN と同じ。 SETMKS(IMRK,SMRK) マークの種類、大きさを設定する。 入力 IMRK [I] マークの種類 0..31 記号 32..127 ASCII 文字番号 SMRK [R] マークの大きさ (cm) このルーチンでは回転角および傾き角は 0 に設定される。 SETMRK(IMRK,HMRK,WMRK,ANGL,TILT) マークの種類、高さ、幅、回転角、傾き角を設定する。 入力 IMRK [I] マークの種類 0..31 記号 32..127 ASCII 文字番号 HMRK [R] マークの高さ (cm) WMRK [R] マークの幅 (cm) ANGL [R] マークの反時計回り回転角(度) TILT [R] マークの反時計回り傾き角(度) TILT を90 あるいは -90 付近に設定すると、非常に横長のマークとなってしまうので要注意。 INQMRK(IMRK,HMRK,WMRK,ANGL,TILT) 現在設定されているマークの種類、高さ、幅、回転角、傾き角を問い合わせる。 出力される引数は SETMRK と同じ。 SETCHS(CHH,ANGL) フォントをストローク文字とし、文字の高さ、回転角を設定する。 入力 CHH [R] 文字の高さ (cm) ANGL [R] 文字の回転角(度) このルーチンでは文字の幅は高さの 2/3 に、文字の間隔は高さと同じに、傾き角は 0 に設定される。 SETCHH(CHH,ANGL) フォントをハードウェア文字とし、文字の高さ、回転角を設定する。 入力 CHH [R] 文字の高さ (cm) ANGL [R] 文字の回転角(度) このルーチンでは文字の幅は高さの 2/3 に、文字の間隔は高さと同じに、傾き角は 0 に設定される。 ハードウェア文字の作図には出力装置の固有機能を利用するため、高速に作図されるが、設定された文字の大きさ、回転、傾き等が実現できない場合がある。その場合は代りにストローク文字を作図する。 SETCHR(CHH,CHW,CHSP,ANGL,TILT) 文字の高さ、幅、間隔、回転角、傾き角を設定する。 入力 CHH [R] 文字の高さ (cm) CHW [R] 文字の幅 (cm) CHSP [R] 文字の間隔 (cm) ANGL [R] 文字の回転角(度) TILT [R] 文字の傾き角(度) 文字の間隔とは、文字間の空白幅に文字幅を加えた値である。 TILT を90 あるいは -90 付近に設定すると、非常に横長の文字となってしまうので要注意。 このルーチンは文字フォントを変更しない。 INQCHR(CHH,CHW,CHSP,ANGL,TILT) 現在設定されている文字の高さ、幅、間隔、回転角、傾き角を問い合わせる。 出力される引数は SETCHR と同じ。 SETFNT(IFNT) 文字フォントを設定する。 入力 IFNT [I] 文字フォント番号 現在設定可能な文字フォント番号は次の2つである。 0 ストローク文字(文字形が点座標データの形で定義され、任意の大きさ、角度等 が指定可能) 1 ハードウェア文字(文字形は出力装置に依存し、装置によっては大きさ、角度等 の指定ができない) INQFNT(IFNT) 現在設定されている文字フォントを問い合わせる。出力される引数は SETFNT と同じ。 PGREAD(NFCR,NPAGE,XFACT,YFACT,XOFS,YOFS,ROT,ITL,NPAGEF) 図形データファイルに含まれる頁を変形して出力する。 入力 NFCR [I] 読み込む図形データファイルのファイル番号 (1≦NFCR≦63) NPAGE [I] 読み込む頁番号(-1 の場合は次頁) XFACT [R] x 方向の倍率 YFACT [R] y 方向の倍率 XOFS [R] x 方向の変位 (cm) YOFS [R] y 方向の変位 (cm) ROT [R] 右下隅を中心とした反時計回りのの回転角(度) ITL [I] 画面ヘッダを作図する場合は 1、作図しない場合は 0。 出力 NPAGEF [I] 次の頁番号 0 の場合はファイルの終端 -1 の場合は指定頁が存在しない 4.3 対話型入出力サブルーチン 対話型入出力サブルーチンは、ディスプレイ画面をもつ装置においてのみ有効である。ページプリンタの場合には、入力ルーチンは意味のない値を返し、出力ルーチンは無視される。 CHIN(KTEXT,NCHAR) キーボードから入力された文字列を読み取る。 出力 KTEXT [A*] 入力された文字列 入力 NCHR [I] 入力を要求する文字数 (NCHR < 256) ページプリンタの場合には空白が返される。 XYIN(X,Y) マウス等によって入力された座標を読み取る。 出力 X [R] マウスのボタンを押した時のカーソル位置の x 座標 Y [R] マウスのボタンを押した時のカーソル位置の y 座標 setvew によって座標系が設定されている場合には、その座標系での値が返される。 ページプリンタの場合には画面原点位置が返される。 ERAS 画面を消去する。 BELL ベルを鳴らす。 CHMODE 図形表示画面から文字表示画面に移る。 入出力は文字画面に移るが、文字表示画面が前面にならない装置もある。その場合はマウスで文字表示画面をクリックする必要がある。 GRMODE 文字表示画面から図形表示画面に移る。 入出力は図形画面に移るが、図形表示画面が前面にならない装置もある。その場合はマウスで図形表示画面をクリックする必要がある。 4.4 補助サブルーチン 補助サブルーチンは GSAF 内部で使用している有用なサブルーチンを公開したものである。 機種に依存する機能を、共通のサブルーチンで利用できるようにしている。 GUDATE(NDY,NDM,NDD,NTH,NTM,NTS) 実行時の日付および時刻を問い合わせる。 出力 NDY [I] 年 NDM [I] 月 NDD [I] 日 NTH [I] 時 NTM [I] 分 NTS [I] 秒 GUTIME(T) 実行時の CPU 使用時間を問い合わせる。 出力 T [R] CPU 使用時間(秒) CPU 使用時間の原点は機種により異なるので、測定する処理の前後でこのサブルーチンを呼び、その時間差を処理時間として使用すること。時間の精度は機種によりかなり差がある。 GUDSTR(KIN,NIN,KOUT,NOUT) 引用文字列から文字数を求め、本来の文字列に変換する。 入力 KIN [A*NIN] 変換対象となる引用文字列 NIN [I] KIN に割り当てられた文字変数の長さ 出力 KOUT [A*NOUT] 変換された文字列 NOUT [I] 変換された文字数 先頭の区切り文字が二度と現れない不正な引用文字列の場合は、KOUT および NOUT はともに変更されない。あらかじめ NOUT に -1 を設定しておくと、不正な文字列の場合には -1 のまま返される。 GUCPTL(KID) 英小文字を英大文字に変換する。 入出力 KID [A1] 変換対象となる文字変数 入力が英小文字の場合のみ、英大文字に変換する。 CHRASC(KTEXT,IASC,NCHAR) 文字列を ASCII 整数配列に変換する。 入力 KTEXT [A*NCHAR] 変換対象となる文字列 出力 IASC [I(NCHAR)] 変換された ASCII 整数配列 入力 NCHAR [I] 文字数 ASCCHR(IASC,KTEXT,NCHAR) ASCII 整数配列を文字列に 変換する。 入力 IASC [I(NCHAR)] 変換対象となる ASCII 整数配列 出力 KTEXT [A*NCHAR] 変換対された文字列 入力 NCHAR [I] 文字数 4.5 応用サブルーチン TEXTX(KTEXTX) 現在位置に引用文字列を作図する。 入力 KTEXTX [A*] 作図する引用文字列(254 文字まで) GTEXT(X,Y,KTEXT,NCHAR,IJUST) 指定された位置に、文字列を揃えて作図する。 入力 X [R] 指定位置の x 座標 Y [R] 指定位置の y 座標 KTEXT [A*NCHAR] 作図する文字列 NCHAR [I] 作図する文字数 (NCHR < 256) IJUST [I] 揃え方の指定 0 : 左揃え 1 : 右揃え 2 : 中央揃え 3 : 小数点揃え 左揃えの場合は先頭文字の左下隅が指定位置となる。右揃えの場合は終末尾文字の右下隅が指定位置となる。中央揃えの場合は文字列の中心位置の下端が指定位置となる。小数点揃えの場合は文字列に小数点が含まれていればその位置が指定位置となり、含まれていなければ右揃えになる。 GTEXTX(X,Y,KTEXTX,IJUST) 指定された位置に、引用文字列を揃えて作図する。 入力 X [R] 指定位置の x 座標 Y [R] 指定位置の y 座標 KTEXT [A*] 作図する引用文字列(254 文字まで) IJUST [I] 揃え方の指定 0 : 左揃え 1 : 右揃え 2 : 中央揃え 3 : 小数点揃え NUMBR(R,KFORM,NCHAR) 現在位置に、単精度実数値を指定された書式で表示する。 入力 R [R] 表示する単精度実数値 KFORM [A*16] ()でくくられた、書式を指定する文字列 NCHAR [I] 表示する文字数(書式で指定した桁数と一致すること) 例)小数点以下4桁、全体8桁で固定小数点表示の場合 CALL NUMBR(R,'(F8.4)',8) 例)小数点以下2桁、全体10桁で浮動小数点表示の場合 CALL NUMBR(R,'(1PE10.4)',10) NUMBD(D,KFORM,NCHAR) 現在位置に、倍精度実数値を指定された書式で表示する。 入力 D [D] 表示する倍精度実数値 KFORM [A*16] ()でくくられた、書式を指定する文字列 NCHAR [I] 表示する文字数(書式で指定した桁数と一致すること) NUMBI(I,KFORM,NCHAR) 現在位置に、整数値を指定された書式で表示する。 入力 I [I] 表示する整数値 KFORM [A*16] ()でくくられた、書式を指定する文字列 NCHAR [I] 表示する文字数(書式で指定した桁数と一致すること) 例)全体8桁で整数表示の場合 CALL NUMBI(I,'(I8)',8) GNUMBR(X,Y,R,IND,IJUST) 指定された位置に、単精度実数値を揃えて表示する。 入力 X [R] 指定位置の x 座標 Y [R] 指定位置の y 座標 R [R] 表示する単精度実数値 IND [I] 小数点以下の桁数 正:固定小数点表示 負:浮動小数点表示 0:四捨五入された整数 IJUST [I] 揃え方の指定 0 : 左揃え 1 : 右揃え 2 : 中央揃え 3 : 小数点揃え GNUMBD(X,Y,D,IND,IJUST) 指定された位置に、倍精度実数値を揃えて表示する。 入力 X [R] 指定位置の x 座標 Y [R] 指定位置の y 座標 D [D] 表示する倍精度実数値 IND [I] 小数点以下の桁数(正:固定小数点表示、負:浮動小数点表示) IJUST [I] 揃え方の指定 0 : 左揃え 1 : 右揃え 2 : 中央揃え 3 : 小数点揃え GNUMBI(X,Y,I,IJUST) 指定された位置に、整数値を揃えて表示する。 入力 X [R] 指定位置の x 座標 Y [R] 指定位置の y 座標 I [I] 表示する整数値 IJUST [I] 揃え方の指定 0 : 左揃え 1 : 右揃え 2 : 中央揃え GNUMBP(X,Y,I,J,IJUST) 指定された位置に、べき乗付き整数値を揃えて表示する。 入力 X [R] 指定位置の x 座標 Y [R] 指定位置の y 座標 I [I] 表示する基数部の整数値 J [I] 表示する指数部の整数値 IJUST [I] 揃え方の指定 0 : 左揃え 1 : 右揃え 2 : 中央揃え MOVEPT(X,Y,IPAT) 線のパターン番号を指定し、指定された座標を現在位置とする。 入力 X [R] 指定位置の x 座標 Y [R] 指定位置の y 座標 IPAT [I] 線パターン番号 0:実線 1:点線 2:破線 3:長破線 4:一点鎖線 5:長一点鎖線 6:二点鎖線 7:長二点鎖線 IPAT が負の場合は逆パターンとなり、パターンの1サイクルの末尾から先頭に向かうパターンで作図する。ある点から両側に連続したパターンで作図する場合に用いる。 DRAWPT(X,Y) 現在位置から指定された座標まで線パターン付き直線を作図し,指定された座標を現在位置とする。 入力 X [R] 指定位置の x 座標 Y [R] 指定位置の y 座標 MOVEPT を呼ばない限り、引き続く DRAWPT では連続した線パターンで描かれる。点の間隔が狭くても線パターンの長さは一定である。 SETLPT(IPAT,NPAT,PAT) 線パターン番号に線パターンを設定する。 入力 IPAT [I] 線パターン番号 (8≦IPAT≦15) NPAT [I] パターン中の全区間数 PAT [R(NPAT)] パターン中の区間長を表す配列 奇数番目の区間のみ線が引かれ、偶数区間には引かれない。 GMNMX1(Z,NS,NE,NSTEP,ZMIN,ZMAX) 1次元配列の最小値、最大値を定める。 入力 Z [R(*)] データの1次元配列 NS [I] 有効データの添字の初値 NE [I] 有効データの添字の終値 NSTEP [I] 有効データの添字の間隔 出力 ZMIN [R] データの最小値 ZMAX [R] データの最大値 GMNMX2(Z,NA,NXS,NXE,NXSTEP,NYS,NYE,NYSTEP,ZMIN,ZMAX) 2次元配列の最小値、最大値を定める。 入力 Z [R(NA,*)] データの2次元配列 NA [I] 2次元データの第1添字の上限(DIMENSION 文等で指定した値) NXS [I] 有効データの第1添字の初値 NXE [I] 有効データの第1添字の終値 NXSTEP [I] 有効データの第1添字の間隔 NYS [I] 有効データの第2添字の初値 NYE [I] 有効データの第2添字の終値 NXSTEP [I] 有効データの第2添字の間隔 出力 ZMIN [R] データの最小値 ZMAX [R] データの最大値 GQSCAL(GMIN,GMAX,GSMIN,GSMAX,GSCAL) データの最小値、最大値から、座標軸の適切な上限値、下限値、目盛り間隔を求める。 入力 GMIN [R] データの最小値 GMAX [R] データの最大値 出力 GSMIN [R] 座標軸の適切な上限値 GSMAX [R] 座標軸の適切な下限値 GSCAL [R] 座標軸の適切な目盛間隔 GMIN と GMAX が共に 0 の場合は、GSMIN=-1.0, GSMAX=1.0 とする。 GMIN と GMAX が等しい場合は、GSMIN または GSMAX を 0 とする。 実際には GMIN と GMAX の大小関係は問わない。 目盛の本数が 6 から 12 本の間で、目盛間隔が 1, 2, 2.5, 5 ×10n となるように GSSCAL が選ばれる。 GDEFIN(PXMIN,PXMAX,PYMIN,PYMAX,GXMIN,GXMAX,GYMIN,GYMAX) グラフ領域の定義を行う。 入力 PXMIN [R] グラフを作図する画面領域の左端の x 座標 (cm) PXMAX [R] グラフを作図する画面領域の右端の x 座標 (cm) PYMIN [R] グラフを作図する画面領域の下端の y 座標 (cm) PYMAX [R] グラフを作図する画面領域の上端の y 座標 (cm) GXMIN [R] x 軸の最小値 GXMAX [R] x 軸の最大値 GYMIN [R] y 軸の最小値 GYMAX [R] y 軸の最大値 GPLOTP, CONTPn, CONTPn, CONTQn, PERSEn 等で描くグラフの作図領域を設定する。 INQ_GDEFIN(PXMIN,PXMAX,PYMIN,PYMAX,GYMIN,GYMAX,GYMIN,GYMAX) グラフ領域の問合せ INQPOS2D(X,Y) グラフ領域内位置問合せ MOVE2D(X,Y) グラフ領域内指定座標へ移動 DRAW2D(X,Y) グラフ領域内指定座標へ直線を作図 MOVEPT2D(X,Y,IPAT) グラフ領域内指定座標へ移動、線パターンを指定 DRAWPT2D(X,Y) グラフ領域内指定座標へ指定された線パターンで直線を作図 LINE2D(X,Y,N) グラフ領域内線分表示機能 LINES2D(X,Y,N) グラフ領域内線分群表示機能 LINESC2D(X,Y,N) グラフ領域内線分群表示機能(閉曲線) POLY2D(X,Y,N) グラフ領域内多角形面塗り機能 RGBTRG2D(X,Y,R,G,B) グラフ領域内三角形を連続的色変化で面塗り GFRAME グラフの枠を作図する。 GDEFIN で定義されたグラフ領域の枠を描く。 GSCALE(GXORG,GXSTEP,GYORG,GYSTEP,SLEN,IND) 目盛りあるいは格子を記入する。 入力 GXORG [R] x 軸の目盛り開始値 GXSTEP [R] x 軸の目盛り間隔(0.0 の場合は x 軸に目盛りを付けない) GYORG [R] y 軸の目盛り開始値 GYSTEP [R] y 軸の目盛り間隔(0.0 の場合は y 軸に目盛りを付けない) SLEN [R] 目盛りの長さ(cm)あるいは格子線パターン(四捨五入された整数値) IND [I] 目盛りの付け方 0 格子(格子線パターンを SLEN に指定できる) 1 内向きの目盛り 2 外向きの目盛り 3 +型の目盛り +4 上側の x 軸および右側の y 軸に目盛りを付ける +8 上下の x 軸および左右の y 軸に目盛りを付ける +16 x 軸の右端および y 軸の上端に目盛りを付けない +32 x 軸の左端および y 軸の下端に目盛りを付けない +48 x 軸の左右端および y 軸の上下端に目盛りを付けない 目盛りは、開始値から指定された間隔で正負両方向に付けられる。開始値がそ の軸の座標の最小値と最大値の間になければ,目盛りは表示されない. GVALUE(GXORG,GXSTEP,GYORG,GYSTEP,IND) 目盛りの数値を記入する。 入力 GXORG [R] x 軸の目盛り数値開始値 GXSTEP [R] x 軸の目盛り数値間隔(0.0 の場合は x 軸に目盛り数値を付けない) GYORG [R] y 軸の目盛り数値開始値 GYSTEP [R] y 軸の目盛り数値間隔(0.0 の場合は y 軸に目盛り数値を付けない) IND [I] 目盛りの付け方 0 整数型で表示 正数 固定小数点表示の小数点以下桁数 負数 浮動小数点表示の小数点以下桁数 +400 上側の x 軸および右側の y 軸に目盛り数値を付ける +800 上下の x 軸および左右の y 軸に目盛り数値を付ける +1600 x 軸の右端および y 軸の上端に目盛り数値を付けない +3200 x 軸の左端および y 軸の下端に目盛り数値を付けない +4800 x 軸の左右端および y 軸の上下端に目盛り数値を付けな い 目盛り数値は、開始値から指定された間隔で正負両方向に付けられる。開始値がそ の軸の座標の最小値と最大値の間になければ,目盛り数値は表示されない. IND のオプション +n は絶対値に対して加算する。例えば、IND=-402 は上側の x 軸および右側の y 軸に小数点以下2桁の浮動小数点表示で表示する GSCALL(GXORG,NXSTEP,GYORG,NYSTEP,SLEN,IND) 対数目盛りあるいは格子を記入する。 入力 GXORG [R] x 軸の目盛り開始値 NXSTEP [I] x 軸の1桁当り目盛り個数(0 の場合は x 軸に目盛りを付けない) GYORG [R] y 軸の目盛り開始値 NYSTEP [I] y 軸の1桁当り目盛り個数(0.0 の場合は y 軸に目盛りを付けない) SLEN [R] 目盛りの長さ(cm)あるいは格子線パターン(四捨五入された整数値) IND [I] 目盛りの付け方 0 格子(格子線パターンを SLEN に指定できる) 1 内向きの目盛り 2 外向きの目盛り 3 +型の目盛り +4 上側の x 軸および右側の y 軸に目盛りを付ける +8 上下の x 軸および左右の y 軸に目盛りを付ける +16 x 軸の右端および y 軸の上端に目盛りを付けない +32 x 軸の左端および y 軸の下端に目盛りを付けない +48 x 軸の左右端および y 軸の上下端に目盛りを付けない GXORG, GYORG は指数値で指定する。例えば GXORG=2.0 と指定すると 102 から目盛りが正負両方向に付けられる。開始値がそ の軸の座標の最小値と最大値の間になければ,目盛りは表示されない. NXSTEP, NYSTEP の指定は 1 ならば 1, 10 に目盛りが付けられる 2 1, 3, 10 3 1, 2, 5, 10 4,5 1, 2, 3, 5, 7, 10 6,7,8,9 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 GVALUL(GXORG,NXSTEP,GYORG,NYSTEP,IND) 対数目盛りの数値を記入する。 入力 GXORG [R] x 軸の目盛り数値開始値 NXSTEP [I] x 軸の目盛り数値間隔(0.0 の場合は x 軸に目盛り数値を付けない) GYORG [R] y 軸の目盛り数値開始値 NYSTEP [R] y 軸の目盛り数値間隔(0.0 の場合は y 軸に目盛り数値を付けない) IND [I] 目盛りの付け方 +400 上側の x 軸および右側の y 軸に目盛り数値を付ける +800 上下の x 軸および左右の y 軸に目盛り数値を付ける +1600 x 軸の右端および y 軸の上端に目盛り数値を付けない +3200 x 軸の左端および y 軸の下端に目盛り数値を付けない +4800 x 軸の左右端および y 軸の上下端に目盛り数値を付けな い GXORG, GYORG は指数値で指定する。例えば GXORG=2.0 と指定すると 102 から目盛り数値が正負両方向に付けられる。開始値がそ の軸の座標の最小値と最大値の間になければ,目盛り数値は表示されない. NXSTEP, NYSTEP の指定は 1 ならば 1, 10 に目盛り数値が付けられる 2 1, 3, 10 3 1, 2, 5, 10 4,5 1, 2, 3, 5, 7, 10 6,7,8,9 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 GPLOTP(GX,GY,NS,NE,NSTEP,IMRK,ISTEP,IPAT) 1次元データのグラフ表示を行う。 入力 GX [R(*)] x 座標データの1次元配列 GY [R(*)] y 座標データの1次元配列 NS [I] 有効データの添字の初値 NE [I] 有効データの添字の終値 NSTEP [I] 有効データの添字の間隔 IMRK [I] マークの種類 0:データを結ぶ直線のみ 正:データを示すマークのみ 負:マークと直線の両方 ISTEP [I] マークをつけるデータ間隔 IPAT [I] 線パターン番号 0:実線 1:点線 2:破線 3:長破線 4:一点鎖線 5:長一点鎖線 6:二点鎖線 7:長二点鎖線 GPLOTPE(GX,GY1,GY2,NS,NE,NSTEP,SCAL) 1次元データの誤差幅グラフ表示を行う。 入力 GX [R(*)] x 座標データの1次元配列 GY1 [R(*)] y 座標データ誤差下限の1次元配列 GY2 [R(*)] y 座標データ誤差上限の1次元配列 NS [I] 有効データの添字の初値 NE [I] 有効データの添字の終値 NSTEP [I] 有効データの添字の間隔 SCAL [R] 誤差上限および下限を表す横棒の長さ 0.0 の場合は横棒を表示しない CONTR1(Z,NXA,NXMAX,NYMAX,ZORG,ZSTEP,NSTEP,IPRD) 等間隔格子2次元データの等高線表示を行う。 入力 Z [R(NXA,*)] データの2次元配列 NXA [I] 2次元データの第1添字の上限 NXMAX [I] x 方向のデータ数 NYMAX [I] y 方向のデータ数 ZORG [R] 等高線の開始値 ZSTEP [R] 等高線の間隔 NSTEP [I] 等高線の本数 IPRD [I] 周期性の設定 0 : 周期性なし 1 : x 方向に周期的 Z(NXMAX+1,*)=Z(1,*) 2 : y 方向に周期的 Z(*,NXMAX+1)=Z(*,1) 3 : x, y 両方向に周期的 CONTR2(Z,X,Y,NXA,NXMAX,NYMAX,ZORG,ZSTEP,NSTEP,IPRD) 不等間隔格子2次元データの等高線表示を行う。 入力 Z [R(NXA,*)] データの2次元配列 X [R(*)] x 座標データの1次元配列 Y [R(*)] y 座標データの1次元配列 以下 NXMAX, NYMAX, ZORG, ZSTEP, NSTEP, IPRD は CONTR1 と同じ。 周期性が仮定された場合には、その方向の座標データは NXMAX+1 あるいは NYMAX+1 個必要であることに注意。 CONTR3(Z,R,NXA,NXMAX,NYMAX,ZORG,ZSTEP,NSTEP) 等角度間隔円形2次元データの等高線表示を行う。 入力 Z [R(NXA,*)] データの2次元配列 R [R(*)] 半径方向座標データの1次元配列 (cm) NXA [I] 2次元データの第1添字の上限 NXMAX [I] 半径方向のデータ数 NYMAX [I] 角度方向のデータ数 以下 ZORG, ZSTEP, NSTEP は CONTR1 と同じ。 角度方向に関しては、最初のデータが x 軸上にとられ、反時計回りに 360/NYMAX 度間隔で表示される。周期 360 度の周期性が仮定される。 CONTR4(Z,R,T,NXA,NXMAX,NYMAX,ZORG,ZSTEP,NSTEP) 不等角度間隔扇形2次元データの等高線表示を行う。 入力 Z [R(NXA,*)] データの2次元配列 R [R(*)] 半径方向座標データの1次元配列 (cm) T [R(*)] 角度方向座標データの1次元配列 (度) NXA [I] 2次元データの第1添字の上限 NXMAX [I] 半径方向のデータ数 NYMAX [I] 角度方向のデータ数 以下 ZORG, ZSTEP, NSTEP は CONTR1 と同じ。 角度方向に関しては、最初のデータが x 軸上にとられ、反時計回りで表示される。周期性は仮定されない。 CONTP1(Z,NXA,NXMAX,NYMAX,ZORG,ZSTEP,NSTEP,IPRD,IPAT,KA) 等間隔格子2次元データの等高線を線パターン付きで表示する。 入力 Z, NXA, NXMAX, NYMAX, ZORG, ZSTEP, NSTEP, IPRD は CONTR1 と同じ。 IPAT [I] 線パターン番号 0:実線 1:点線 2:破線 3:長破線 4:一点鎖線 5:長一点鎖線 6:二点鎖線 7:長二点鎖線 作業領域 KA [I(4,NXMAX,NYMAX)] 作業用整数配列 CONTP2(Z,X,Y,NXA,NXMAX,NYMAX,ZORG,ZSTEP,NSTEP,IPRD,IPAT,KA) 不等間隔格子2次元データの等高線を線パターン付きで表示する。 引数 Z, X, Y, NXA, NXMAX, NYMAX, ZORG, ZSTEP, NSTEP, IPRD は CONTR2 と同じ。   IPAT, KA は CONTP1 と同じ。 CONTP3(Z,R,NXA,NXMAX,NYMAX,ZORG,ZSTEP,NSTEP,IPAT,KA) 等角度間隔円形2次元データの等高線を線パターン付きで表示する。 引数 Z, R, NXA, NXMAX, NYMAX, ZORG, ZSTEP, NSTEP は CONTR3 と同じ。   IPAT, KA は CONTP1 と同じ。 CONTP4(Z,R,T,NXA,NXMAX,NYMAX,ZORG,ZSTEP,NSTEP,IPAT,KA) 不等角度間隔扇形2次元データの等高線を線パターン付きで表示する。 引数 Z, R, T, NXA, NXMAX, NYMAX, ZORG, ZSTEP, NSTEP は CONTR4 と同じ。   IPAT, KA は CONTP1 と同じ。 CONTQ1(Z,NXA,NXMAX,NYMAX,ZORG,ZSTEP,NSTEP,IPRD,IPAT,KA) 等間隔格子2次元データの等高線を線パターン付きで表示する。CONTP1 よりもやや細かい。 入力 Z, NXA, NXMAX, NYMAX, ZORG, ZSTEP, NSTEP, IPRD は CONTR1 と同じ。 IPAT [I] 線パターン番号 0:実線 1:点線 2:破線 3:長破線 4:一点鎖線 5:長一点鎖線 6:二点鎖線 7:長二点鎖線 作業領域 KA [I(8,NXMAX,NYMAX)] 作業用整数配列 CONTQ2(Z,X,Y,NXA,NXMAX,NYMAX,ZORG,ZSTEP,NSTEP,IPRD,IPAT,KA) 不等間隔格子2次元データの等高線を線パターン付きで表示する。CONTP2 よりもやや細かい。 引数 Z, X, Y, NXA, NXMAX, NYMAX, ZORG, ZSTEP, NSTEP, IPRD は CONTR2 と同じ。   IPAT, KA は CONTQ1 と同じ。 CONTQ3(Z,R,NXA,NXMAX,NYMAX,ZORG,ZSTEP,NSTEP,IPAT,KA) 等角度間隔円形2次元データの等高線を線パターン付きで表示する。CONTP3 よりもやや細かい。 引数 Z, R, NXA, NXMAX, NYMAX, ZORG, ZSTEP, NSTEP は CONTR3 と同じ。   IPAT, KA は CONTQ1 と同じ。 CONTQ4(Z,R,T,NXA,NXMAX,NYMAX,ZORG,ZSTEP,NSTEP,IPAT,KA) 不等角度間隔扇形2次元データの等高線を線パターン付きで表示する。CONTP4 よりもやや細かい。 引数 Z, R, T, NXA, NXMAX, NYMAX, ZORG, ZSTEP, NSTEP は CONTR4 と同じ。   IPAT, KA は CONTQ1 と同じ。 CONTPF(Z,X,Y,NNOD,IELM,NELM,ZORG,ZSTEP,NSTEP,IPAT,KA) 三角形有限要素上の2次元データの等高線を線パターン付きで表示する。 入力 Z [R(*)] 節点上のデータからなる1次元配列(引数は節点番号) X [R(*)] 節点の x 座標データからなる1次元配列(引数は節点番号) Y [R(*)] 節点の y 座標データからなる1次元配列(引数は節点番号) NNOD [I] 全節点数 IELM [I(3,*)] 要素に属する節点番号(引数は要素番号) NELM [I] 全要素数 ZORG, ZSTEP, NSTEP は CONTR1 と同じ。   IPAT は CONTP1 と同じ。 作業領域 KA [I(2,NXMAX,NYMAX)] 作業用整数配列 PERSE1(Z,NXA,NXMAX,NYMAX,ZMIN,ZMAX,IXY,IND,XL,YL,ZL,A,B,C,D,E) 等間隔格子2次元データの3次元表示を行う。 入力 Z [R(NXA,*)] データの2次元配列 NXA [I] 2次元データの第1添字の上限 NXMAX [I] x 方向のデータ数 NYMAX [I] y 方向のデータ数 ZMIN [R] 表示するデータの下限 ZMAX [R] 表示するデータの上限 IXY [I] データ表示法の指定 0 等高線のみ 1 等 x 線のみ 2 等 y 線のみ 3 等 x, 等 y 格子 IND [I] データ表示法の指定 IXY=0 の場合 等高線の本数 IXY<>0 の場合 0 隠線処理なし 1 上限下限面表示なし 2 上限下限面等高線のみ 3 上限下限面格子あり XL [R] x 軸の長さ (cm) YL [R] y 軸の長さ (cm) ZL [R] z 軸の長さ (cm) A [R] z 軸回りの回転角 B [R] 原点と投影面のなす角(通常 0 でよい) C [R] z=0 面と視線のなす角(負で上方から) D [R] 原点と投影面の間の距離 (cm) (通常 0 でよい) E [R] 視点の投影面からの距離 (cm) パラメータの詳細は「曲線と曲面」を参照のこと。 100×100 の配列まで表示可能。 SPLN1D(X,F,FX,NX,XG,FG,NXG,IP) 1次元データのスプライン補間を行う。 入力 X [R(*)] 入力データの x 座標データの1次元配列 F [R(*)] 入力データの1次元配列 FX [R(NX,3)] 作業用2次元配列 NX [I] 入力データの x 方向のデータ数 XG [R(*)] 出力データの x 座標データの1次元配列 出力 FG [R(*)] 出力データの1次元配列 入力 NXG [I] 出力データの x 方向のデータ数 IP [I] 入力データ(FX) の指定 カF/カx, カ2F/カx2 の境界値 0: 定義しない(内部で計算) 1: カF/カx を定義する(nx=1,NX, ny=1) 2: カ2F/カx2 を定義する(nx=1,NX, ny=1) SPLN2D(X,Y,F,FX,FY,FXY,A,NXA,NX,NY,XG,YG,FG,NXAG,NXG,NYG,IP) 2次元データのスプライン補間を行う。 入力 X [R(*)] 入力データの x 座標データの1次元配列 Y [R(*)] 入力データの y 座標データの1次元配列 F [R(NXA,*)] 入力データの2次元配列 FX [R(NXA,*)] dF/dx の2次元配列 (作業用、または nx=1,NX を定義) FY [R(NXA,*)] カF/カy の2次元配列 (作業用、または ny=1,NY を定義) FXY [R(NXA,*)] カ2F/カxカy の2次元配列 (作業用、または4隅を定義) 作業 A [R(4,MAX(NX,NY))] 作業用2次元配列 入力 NXA [I] 入力2次元データの第1添字の上限 NX [I] 入力データの x 方向のデータ数 NY [I] 入力データの y 方向のデータ数 XG [R(*)] 出力データの x 座標データの1次元配列 YG [R(*)] 出力データの y 座標データの1次元配列 出力 FG [R(NXA,*)] 出力データの2次元配列 入力 NXAG [I] 出力2次元データの第1添字の上限 NXG [I] 出力データの x 方向のデータ数 NYG [I] 出力データの y 方向のデータ数 IP [I] 入力データの指定 dF/dx, dF/dy, d2F/dxdy の境界値 0: 定義しない(内部で計算) 1: 定義する(値を指定する) ------------------------------------------- GSAF のマイナーバージョンアップ 1993/05/15 (1993/08/07 追加) ------------------------------------------- GSAF の機能向上を行った。 ・X window 使用時の画面選択等を環境変数で指定可能とした。 ・グラフィックデータを出力するコマンドの機能向上と統一化を行なった。 ・グラフィックデータを出力するルーチンの仕様変更および追加を行なった。 ・文字出力ルーチンにおけるエスケープ文字の仕様を変更した。 X window 等の使用開始時に要求される画面選択およびオプションの設定を環 境変数 GSGDP で指定することができるようになった。例えば GSGDP=5c; export GSGDP と設定しておくと、 画面サイズ 760×564、背景白色 オプションの設定はしない として、問い合わせが省略される。 グラフィックデータを出力するコマンド gsview : X window 等に出力 gsprint : プリンタに出力 gstops : ポストスクリプトデータに変換 の機能を向上させ、仕様を統一した。コマンドの引数はほぼ共通で gsview [-a] [-s ps] [-e pe] [-p np] [-t] [filename] -a : すべての頁を出力する。(gsprint の既定値) -s ps : ps 頁から出力される。省略値 1。 -e pe : pe 頁まで出力される。省略値 999。 -p np : 連続する np 頁を1枚にまとめて出力する。省略値 1。 -t : 各頁の元のタイトルを出力する。 -b : タイトルを出力しない。 -r : 図を90度回転させる。(gstops のみ有効) filename : 出力するファイル名。省略時は問い合わせられる。 gsview, gstops の場合には、-a, -s, -e のオプションを指定しなければ、対 話的に頁を指定するモードに入る。gsprint の場合はあらかじめ -a が設定さ れているので、対話モードに入ることはできない。また -t を指定して、-p 2 あるいは -p [5678] とした場合には、タイトルを出力するために全体が5% 縮小される。 グラフィックデータの出力時に使用されるサブルーチン PGREAD の仕様が変更 され、新たにサブルーチン PGCOMB, PGRLOC, GSSHOW が追加された。マニュア ルの改定版ができるまでは、詳細は/users/ftp/dist/gsaf にあるソースプロ グラム fio.f を参照されたい。 文字出力ルーチン TEXT において、上付添字、下付添字、重ね打ちの指定をす るためのエスケープ文字は "\" であったが、"\" を文字列に含むことができ ない Fortran 処理系があるため、"$" もエスケープ文字として認識するよう に変更した。2つの文字の機能は全く同じである。互換性の点から今後は "$" を使用することが望ましい。また、1文字の出力の場合はエスケープ文字の解 釈をしないように変更した。 ------------------------------- GSAF V3.1 beta の公開 94/05/22 94/06/04, 00/02/28, 07/11/10 改訂 ------------------------------- グラフィックライブラリ GSAF を機能追加版 V3.1 beta に更新した. 追加された機能は,   線分群表示機能 LINES(X,Y,N)   閉線分群表示機能 LINESC(X,Y,N)   多角形面塗り機能 POLY(X,Y,N)   多色設定機能 SETRGB(R,G,B)   線幅設定機能 SETLNW(W)   多色問合せ機能 INQRGB(R,G,B)   線幅問合せ機能 INQLNW(W) コマンド gstops にカラー機能オプション -c LINES, LINESC, POLY の引数はいずれも X(N) : 頂点の x 座標を表す実数配列 Y(N) : 頂点の y 座標を表す実数配列 N : 頂点の個数 (<=256) POLY と LINESC の場合,最初の頂点と最後の頂点が一致しないと,自動的 に閉じる辺が追加される.POLY は多角形の内部だけでなく,辺も塗りつぶ すので,辺の色を変える場合は POLY の後に LINES を呼び出すこと. SETCLP によるクリッピングを可能にしているが,十分にはチェックされて いない. SETRGB の引数 R, G, B は 赤, 緑, 青 の比率を 0 から 1 の範囲の実数で指 定する.通常の 256 色X-window では一画面に出力できる色数が 200 色程度 に限られる. SETLNW の引数 W には線の幅を cm 単位で指定する.LASER SHOT に出力する 場合は約 0.01, 0.03, 0.05, 0.07 cm の線幅しか出力できない.線幅として 0.0 を指定した場合は,最も狭い線幅で最も高速に作図される.従来の SETLIN では,高速化をはかるためX-window 表示時には線幅は無視されていた が,SETLNW は常に有効となる. INQRGB によって返された値が R < 0 となるのは,SETLIN による指定が有効 な場合である. INQLNW によって返された値が負となるのは,SETLIN による指定が有効な場合 である. また SETRGB で R < 0 を指定すると,SETLIN によって以前に 指定した値が有効になる.SETLNW において W < 0 の場合も同様. 出力機器としては X-window, Postscript がサポートされている. ----------------------------------- GSAF V3.1 beta の追加機能 94/06/02 改訂 94/06/04 ----------------------------------- グラフィックライブラリ GSAF 機能追加版 V3.1 beta に色塗り等高線図およ び可変線種等高線図を追加した. 追加された機能は,色塗り等高線図として   直交座標等間隔 CONTF1(Z,NXA,NXMAX,NYMAX, ZL,RGB,NSTEP,IPRD)   直交座標不等間隔 CONTF2(Z,X,Y,NXA,NXMAX,NYMAX, ZL,RGB,NSTEP,IPRD)   極座標等角度間隔 CONTF3(Z,R,NXA,NXMAX,NYMAX, ZL,RGB,NSTEP)   極座標不等角度間隔 CONTF4(Z,R,T,NXA,NXMAX,NYMAX, ZL,RGB,NSTEP)    引数は ZL(NSTEP) 等高線高さ指定配列 RGB(3,0:NSTEP) 色指定配列 NSTEP 等高線本数         IPRD 周期性指定 ZL(NSTEP) には色の境界となる等高線の高さを指定する.     RGB(3,N) には,N 番目の高さに塗る色を, RGB(1,N) = red RGB(2,N) = green RGB(3,N) = blue   で指定する.red, green, blue はいずれも 0 と 1 の間の単精度実数.     N=0 は Z < ZL(1) N=1   は ZL(1) < Z < ZL(2) N=NSTEP は ZL(NSTEP) < Z に塗られる. 可変線種等高線図として   直交座標等間隔 CONTG1(Z,NXA,NXMAX,NYMAX, ZL,RGB,ILN,WLN,NSTEP,ISPL,IPRD,KA)   直交座標不等間隔 CONTG2(Z,X,Y,NXA,NXMAX,NYMAX, ZL,RGB,ILN,WLN,NSTEP,ISPL,IPRD,KA)   極座標等角度間隔 CONTG3(Z,R,NXA,NXMAX,NYMAX, ZL,RGB,ILN,WLN,NSTEP,ISPL,KA)   極座標不等角度間隔 CONTG4(Z,R,T,NXA,NXMAX,NYMAX, ZL,RGB,ILN,WLN,NSTEP,ISPL,KA)    引数は ZL(NSTEP)  等高線高さ指定配列 RGB(3,NSTEP)  色指定配列 ILN(NSTEP)  線種指定配列 (0..7) WLN(NSTEP)  線幅指定配列(cm 単位) NSTEP  等高線本数         IPRD  周期性指定         ISPL  スプライン平滑化 KA(2,NXMAX,NYMAX) 作業用配列 ZL(N) には色の境界となる等高線の高さを指定する.     RGB(3,N) には,N 番目の等高線の色を, RGB(1,N) = red RGB(2,N) = green RGB(3,N) = blue   で指定する.red, green, blue はいずれも 0 と 1 の間の単精度実数. ILN(N) には N 番目の等高線の線種を指定する.        (0:実数, 1:点線, 2:短波線...7:長二点鎖線) WLN(N) には N 番目の等高線の線種を指定する.cm 単位     ISPL = 0 : スプライン平滑化せず. 1 : 平滑化しない場合と同じ節点数で平滑化. M : 平滑化しない場合の M 倍の節点数で平滑化. ----------------------------------- GSAF V3.1 beta の追加機能 94/06/05 ----------------------------------- グラフィックライブラリ GSAF 機能追加版 V3.1 beta に簡易型等高線図を追 加した.色塗り等高線図と同様に高さ指定配列 ZL(NSTEP) を用いているが, それ以外の引数は従来の CONTP/Q と同じである.ただし作業用整数配列 KA の大きさは (2,NXMAX,NYMAX) でよい. 直交座標等間隔 CONTE1(Z,NXA,NXMAX,NYMAX,ZL,NSTEP,IPRD,IPAT,KA) 直交座標不等間隔 CONTE2(Z,X,Y,NXA,NXMAX,NYMAX,ZL,NSTEP,IPAT,IPRD,KA) 極座標等角度間隔 CONTE3(Z,R,NXA,NXMAX,NYMAX,ZL,NSTEP,IPAT,KA) 極座標不等角度間隔 CONTE4(Z,R,T,NXA,NXMAX,NYMAX,ZL,NSTEP,IPAT,KA) なお,色塗り等高線図の凡例とするための帯型パレットを作成するサブルーチ ンも追加されている.    パレット表示機能 RGBBND(X1,X2,Y1,Y2,RGB,N,IND)     (x1,y1)-(x2,y2) の長方形内に RGB(3,N) に指定された色を帯で表示する.     N は色数,IND=0 は横方向に色分け,IND=1 は縦方向に色分けを指定. 仕様は変更される場合がある. 参考プログラム COMMON /CMCONT/ A(41,41),KA(8,41,41) DIMENSION RGB(3,11),ZL(10),RGBL(3,10),ILN(10),WLN(10) DATA RGB/0.00,0.00,0.00, & 0.20,0.10,0.00, & 0.40,0.20,0.00, & 0.60,0.30,0.00, & 0.80,0.40,0.00, & 1.00,0.50,0.00, & 1.00,0.60,0.20, & 1.00,0.70,0.40, & 1.00,0.80,0.60, & 1.00,0.90,0.80, & 1.00,1.00,1.00/ C CALL GSOPEN C DO 1000 I=1,41 DO 1000 J=1,41 FX=0.1*FLOAT(I-21)+0.01 FY=0.1*FLOAT(J-21) A(I,J)=FX**4+FY**4-2.0*(FX**2+FY**2)+2.0 1000 CONTINUE C ZORG=0.0 ZSTEP=0.2 NSTEP=10 ISPL=0 C DO 2000 I=1,NSTEP ZL(I)=ZSTEP*(I-1)+ZORG RGBL(1,I)=REAL(NSTEP-I)/REAL(NSTEP-1) RGBL(2,I)=REAL(I-1)/REAL(NSTEP-1) RGBL(3,I)=0.0 ILN(I)=MOD(I-1,8) WLN(I)=0.0 2000 CONTINUE C CALL PAGES CALL GDEFIN(3.,23.,2.,17.,1.,41.,1.,41.) CALL GFRAME CALL CONTG1(A,41,41,41,ZL,RGBL,ILN,WLN,NSTEP,ISPL,0,KA) CALL PAGEE C CALL PAGES CALL GDEFIN(3.,23.,2.,17.,1.,41.,1.,41.) CALL CONTF1(A,41,41,41,ZL,RGB,NSTEP,0) CALL SETLIN(0,0,7) CALL GFRAME CALL RGBBAR(3.,23.,0.5,1.5,RGB,NSTEP+1,0) CALL RGBBAR(23.5,24.5,2.,17.,RGB,NSTEP+1,1) CALL PAGEE C CALL GSCLOS STOP END ------------------- GSAF V3.3 98/03/21 (updated 00/02/14) ------------------- ダミーライブラリ libgdum を作成した.  図形データファイルのみを作成する場合には, libgdp.sl の代わりに libgdum.sl をリンクする. すなわち,リンク時に -lgdp ではなく -lgdum を指定する. 単独コンパイルの場合には f77g ではなく,f77gdum を使用すればよい, プログラム内から図形データファイルへの保存を制御するサブルーチンを作成した. GSFOPN(FILENAME,IND) 図形データファイルの指定 FILENAME はファイル名を表す文字列  ファイルが正常に作成できた場合は IND=0 を返す GSFCLS 図形データファイルの接続解除 GSFON 図形データファイルへの格納開始 GSFOFF 図形データファイルへの格納停止 GSTOPN 一時図形データファイルの指定 GSTCLS 一時図形データファイルの接続解除 GSTON 一時図形データファイルへの格納開始 GSTOFF 一時図形データファイルへの格納停止 GSCODE(NFCSN,NFCTN) 図形データファイル装置番号の変更                標準値: NFCSN=51, NFCTN=50  これらのサブルーチンは作図中( GSPAGS と GSPAGE の間)は無視される. 1頁描画終了時:ディスプレイの場合にはベルが鳴り、1文字入力待ちとなる。ここで C または CRを入力すると 処理が続行される。 K を入力すると 処理が続行され、次に PAGES を実行したときに画面が消去 されず、重ね書きとなる。 D を入力すると WS の場合、画面のビットマップファイルが作成され、別ウ ィンドウに表示される。 O を入力すると オプション設定を開始する。 F を入力すると 図形データファイルの指定および格納開始 X を入力すると 図形データファイルへの格納開始/停止切り替え S を入力すると その画面のデータを保存.ファイル未指定ならば問い合わせ Y を入力すると ファイル格納指定時には、その画面のデータを保存する。 N を入力すると ファイル格納指定時でも、その画面のデータを保存しない。 H を入力すると 入力可能文字を表示する。 B を入力すると 描画終了時のベル音の ON/OFF 切り替え Q を入力すると 確認の上、プログラムが終了する。 そして文字表示画面に切り替わる。 -------------------- GSAF V3.52 99/07/29 -------------------- ファイル・ディレクトリ構成を変更した.        arch, doc, src の各ディレクトリを作成        install 作業は src ディレクトリで行う        Makefile の作成方法を変更 gstops は PostScript File 作成コマンド         全体が1つのファイル        そのままでプリンタ出力可能 gstoeps は Encapsulated PostScript File 作成コマンド        各頁毎に1つのファイル        showpage コマンドを付加しないとプリンタ出力されない 画面表示における背景色を白に固定. 画面表示における解像度の種類を増加 (512,640,768,896,1024,1280) 線分データのグループ化を行うためのルーチンを追加 GUGRPS グループ化開始 GUGRPE グループ化終了 (GPLOTP, LINES, GSCALE, GSCALL, GVECTR, TEXT ルーチン等で使用) べき乗表示を行えるように GNUMBD/R を拡張   桁数指定子 IND: >0 固定小数点表示            =0 整数表示            <0 浮動小数点表示 (1.234E03)          <-100 べき乗表示(1.234x10^3)   GVALUE 等でも指定可能 倍精度から単精度への変換を行う関数 GUCLIP(DATA) を追加 グラフメモリ数値の最適化を行う関数 NGULEN(GSTEP) を追加 ベクトルフォントを拡張した.(IFNT>=32 は印刷時 Postscript font を使用) SETFNT(IFNT) IFNT=0 従来のソフトウェア文字(標準) 1 従来のハードウェア文字(印刷時 Courier) 2 Roman 3 Roman Italic 4 Roman Bold 5 Roman Bold Italic 6 Sans Serif 7 Script 8 German1 9 German2 10 German3 11 Greek 12 German1 13 German1 14 Cyrillic 15 Cyrillic 16 Large Symbol 17 Various symbols 18 Various symbols 19 Various symbols 32 Times-Roman 33 Times-Italic 34 Times-Bold 35 Times-BoldItalic 36 Helvetica 37 Helvetica-Oblique 38 Helvetica-Bold 39 Helvetica-BoldOblique 40 Courier 41 Courier-Oblique 42 Courier-Bold 43 Courier-BoldOblique 44 Symbol TEXT サブルーチンに与える文字列の仕様を拡張した. $+ 上付添字開始 $- 下付添字開始 $= 添字終了 $0..$9 フォント変更 IFNT < 32 の場合:$0..$9 が IFNT=0..9 に対応       IFNT >=32 の場合:$0..$9 が IFNT=0,1,32..39 に対応 $# ギリシャ文字にフォント変更      フォント変更されている場合には元のフォントに復帰 $, 1/6 文字幅移動 $; 2/9 文字幅移動 $! -1/6 文字幅移動 $? -2/9 文字幅移動 $/### postscript 出力における8進表現(### は8進表現の3文字) $$ 文字 $ の出力 CONTENTS: V3.63, V3.65, V3.66 -------------------- GSAF V3.63 00/02/14 Updated 00/02/28 -------------------- 2次元データを3次元表示するためのサブルーチン群を追加 3次元表示をするには,まずはじめに GDEFIN3D,GVIEW3D,GDATA3Dn (n=1,2...) を呼ぶ必要がある.その後グラフを表示するサブルーチン ( CPLOT3D1,PERSE3D,etc...) を呼び,最後に目盛り及び数値を記入する サブルーチンを呼ぶ.( g3dtest.fを参照.) 基本的には後から呼ばれた サブルーチンは上書きをしていくので,サブルーチンを呼ぶ順番には注意する 必要がある.例えば g3dtest.f においては,背景を塗り潰すサブルーチン GDRWBK のあとにグラフを表示するサブルーチン CPLOT3D1 を呼ぶ必要があり, さらに目盛りや数値を記入するサブルーチンは,CPLOT3D1 で上書きをされな いように CPLOT3D1 より後に呼ぶ必要がある. @@ グラフを描く前に呼ぶ必要のあるサブルーチン群 @ GDEFIN3D 2次元データを3次元表示するための GDEFIN 3次元表示をする際にはまずはじめに呼ぶ必要がある. GDEFIN3D(PXMIN,PXMAX,PYMIN,PYMAX,XL,YL,ZL) 引数 XL [R] x軸の長さ (cm) YL [R] y軸の長さ (cm) ZL [R] z軸の長さ (cm) PXMIN,PXMAX,PYMIN,PYMAX は GDEFIN と同じ。 @ GVIEW3D 2次元データを3次元表示するための視点を設定する. また、そのグラフを平行移動(画面中央に寄せる),拡大,縮小も行う. GVIEW3D(PHI,THETA,RADIUS,R,IAXIS,OX,OY,OZ) 引数 PHI [R] z軸回りの回転角 (極座標のφ) THETA [R] z軸と視線のなす角(極座標のθ) RADIUS [R] 視点の投影面からの距離 (cm)(極座標のr) R [R] グラフの大きさとGDEFIN で定義された 領域の大きさの比。 Rが負のときには拡大縮小はされず, 平行移動のみがされる. IAXIS [I] グラフを平行移動,拡大縮小する場合にどの軸が 描画領域に収まるようにするかを指定。 IAXIS<0 平行移動及び拡大、縮小をしない。 IAXIS=0 グラフ本体のみを収めるようにする. IAXIS=1 奥側の軸のみ考慮にいれる. IAXIS=2 全ての軸を考慮にいれる. OX [R] GDEFINで定義された領域の中央に描かれる点 (見つめる点)のx座標 OY [R] 同じくy座標 OZ [R] 同じくz座標 注意 : (OX,OY,OZ)がグラフ領域から大きく離れた点を指定している場合 の表示は想定していない.できるだけグラフ領域内部または周辺を 指定してください. @ GDATA3D1 等間隔格子2次元データを3次元表示するためのデータを与える。 GDATA3D1(Z,NXA,NX,NY,XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX) 引数 Z [R(NXA,*)] データの2次元配列 NXA [I] 2次元データの第1添字の上限 NX [I] x方向のデータ数 NY [I] y方向のデータ数 XMIN [R] xの下限 XMAX [R] xの上限 YMIN [R] yの下限 YMAX [R] yの上限 ZMIN [R] 表示するデータの下限 ZMAX [R] 表示するデータの上限 @ GDATA3D2 不等間隔格子2次元データを3次元表示するためのデータを与える。 GDATA3D2(Z,X,Y,NXA,NX,NY,ZMIN,ZMAX) 引数 Z [R(NXA,*)] データの2次元配列 X [R(NX)] x方向の格子データの1次元配列 Y [R(NY)] Y方向の格子データの1次元配列 NXA [I] 2次元データの第1添字の上限 NX [I] x方向のデータ数 NY [I] y方向のデータ数 ZMIN [R] 表示するデータの下限 ZMAX [R] 表示するデータの上限 @ GDATA3D3 不等間隔格子2次元データを3次元表示するためのデータを与える。 GDATA3D3(Z,X,Y,NXA,NX,NY,XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX) 引数 Z [R(NXA,*)] データの2次元配列 X [R(NX)] x方向の格子データの1次元配列 Y [R(NY)] Y方向の格子データの1次元配列 NXA [I] 2次元データの第1添字の上限 NX [I] x方向のデータ数 NY [I] y方向のデータ数 XMIN [R] xの下限 XMAX [R] xの上限 YMIN [R] yの下限 YMAX [R] yの上限 ZMIN [R] 表示するデータの下限 ZMAX [R] 表示するデータの上限 @@ グラフを描くサブルーチン群 @ CPLOT3D1 等間隔格子2次元データをカラーの面で3次元表示する。 CPLOT3D1(IND,RGBFUNC) 引数 IND [I] データの表示方法。 IND=0 カラーの面のみ表示. IND=1 カラーの面とx軸方向のメッシュを表示. IND=2 カラーの面とy軸方向のメッシュを表示. IND=3 カラーの面とx,y軸方向のメッシュを表示. +4 面をなめらかに塗る. RGBFUNC データの面の色を決めるサブルーチン名 バグ: グラフ領域内に視点が入り込んだ場合グラフを表示できない. @ PERSE3D(IXY,IND) 等間隔格子2次元データの3次元表示を行う。 入力 IXY [I] データ表示法の指定 0 等高線のみ 1 等 x 線のみ 2 等 y 線のみ 3 等 x, 等 y 格子 IND [I] データ表示法の指定 IXY=0 の場合 等高線の本数 IXY<>0 の場合 0 隠線処理なし 1 上限下限面表示なし 2 上限下限面等高線のみ 3 上限下限面格子あり @ CONTQ3D1 等間隔格子2次元データの等高線を線パターン付きで3次元表示する. CONTQ3D1(ZORG,ZSTEP,NSTEP,IPAD,IPAT,KA,RGBFUNC,IZ) 引数 ZORG,ZSTEP,NSTEP,IPAD,IPAT,KA は CONTQ1 と同じ. RGBFUNC 等高線の色を決めるサブルーチン名 IZ [I] 等高線の射影面の指定 IZ=0 常に Z=ZMIN 平面に射影. IZ=1 常に Z=ZMAX 平面に射影. IZ=2 グラフを上から見たときは Z=ZMIN, 下から見たときは Z=ZMAX 平面に射影. IZ=3 グラフを上から見たときは Z=ZMAX, 下から見たときは Z=ZMIN 平面に射影. @@ グラフを描く補助をするサブルーチン群 @ RGBFUNC 2次元データをカラー表示する際にその色を決定するサブルーチン群 具体的には現在以下のものがある. 下記の仕様のサブルーチンをつくることによってユーザーの好みの 配色をすることができる. R2G2P データの面の色を上から赤、緑、青、紫とする。(全200色) WHITE データの面の色を白にする。 BLACK データの面の色を黒にする。 R2G2B データの面の色を上から赤、緑、青とする。(全160色) R2G2BW データの面の色を上から赤、緑、青とし、最下面のみ白。(全161色) R2W2B データの面の色を上から赤、白、青とする。(全80色) RGBFUNC(R,RGB(3)) 入力 R [R] 0以上1以下の実数 出力 RGB(1) [R] 0以上1以下の実数 RGBのR RGB(2) [R] 0以上1以下の実数 RGBのG RGB(3) [R] 0以上1以下の実数 RGBのB @@ グラフ以外を描くサブルーチン群 @ GAXIS3D 等間隔及び不等間隔格子2次元データ描画時に軸を描く。 ( CPLOT3D1 の後に呼ぶ必要がある. ) GAXIS3D1(IAXIS) 引数 IAXIS [I] 表示する軸を指定。 IAXIS=0 奥側の軸を表示。 IAXIS=1 手前の軸を表示。 IAXIS=2 手前と奥の軸を表示。 @ GSCALE3DX 等間隔及び不等間隔格子2次元データを表示する際のx軸の目盛を表示する。 ( CPLOT3D1 の後に呼ぶ必要がある.) GSCALE3DX(XORG,XSTEP,SCL,IND) 引数 XORG,XSTEP は GSCALE と同じ。 XSTEP が 0.0 の時には目盛は描かれない。 SCL [R] 目盛りの長さ(cm) あるいは描画平面に射影する前の目盛の長さ(cm) IND [I] 目盛の付け方 IND=0, xy平面内に格子を描く.この時,線種はINT(SCL) になる. IND=1, POSITION1のx軸にxy平面内に内側の目盛を描く。 IND=2, POSITION1のx軸にxy平面内に外側の目盛を描く。 IND=3, POSITION1のx軸にxy平面内に内外両側の目盛を描く。 +3 x,y軸の目盛をz軸に平行に。 +6 見る角度によって+0か+3を自動的に選択 +10 POSITION2 +20 POSITION3 +30 POSITION4 *(-1) 目盛の長さを見る角度に依らず固定長に。 この場合表示される長さがSCAL(cm)になる。 POSITION1 とは,グラフを上側から眺める時は下側手前の軸を指す. グラフを下側から眺める時は上側手前の軸を指す. POSITION2 とは,グラフを上側から眺める時は下側奥側の軸を指す. グラフを下側から眺める時は上側奥側の軸を指す. POSITION3 とは,グラフを上側から眺める時は上側手前の軸を指す. グラフを下側から眺める時は下側手前の軸を指す. POSITION4 とは,グラフを上側から眺める時は上側奥側の軸を指す. グラフを下側から眺める時は下側奥側の軸を指す. 目盛は,開始値から指定された間隔で正負両方向につけられる.開始値が その軸の座標の最小値と最大値の間になければ,目盛は表示されない. GSCALE3DYも同様. @ GSCALE3DZ 等間隔及び不等間隔格子2次元データを表示する際のz軸の目盛を表示する. ( CPLOT3D1 の後に呼ぶ必要がある.) GSCALE3DZ(ZORG,ZSTEP,SCL,IND) 引数 ZORG,ZSTEP は GSCALE と同じ. ZSTEP が 0.0 の時には目盛は描かれない. SCL [R] 目盛りの長さ(cm) あるいは平面に射影する前の目盛の長さ(cm) IND [I] 目盛の付け方 IND=0, 背面に格子状の目盛りを描く. IND=1, POSITION1のz軸にxy平面内に内側の目盛を描く. IND=2, POSITION1のz軸にxy平面内に外側の目盛を描く. IND=3, POSITION1のz軸にxy平面内に内外両側の目盛を描く. +10 POSITION2 +20 POSITION3 +30 POSITION4 *(-1) 目盛の長さを見る角度に依らず固定長に. この場合表示される長さがSCAL(cm)になる. POSITION1 とは,グラフ左側のz軸を指す. POSITION2 とは,グラフ右側のz軸を指す. POSITION3 とは,手前のz軸を指す. POSITION4 とは,奥側のz軸を指す. 目盛は,開始値から指定された間隔で正負両方向につけられる.開始値が その軸の座標の最小値と最大値の間になければ,目盛は表示されない. @ GVALUE3DX 等間隔及び不等間隔格子2次元データを表示する際のx軸の目盛りの数値を 記入する。 ( 現在数値を書く際には隠線処理は行っていないので必要に 応じてCPLOT3D1の前または後または前後に呼ぶ必要がある.) GVALUE3DX(XORG,XSTEP,IPOS,IND) 引数 XORG,XSTEP は GSCALE3DX と同じ。 XSTEP が 0.0 の時には数値は描かれない。 IPOS [I] 数値の書き方を指定。 1 POSITION1のxy平面内にx,y軸に平行に数字を描く. 2 POSITION1のxy平面上に,視線に垂直に数字を描く. 3 POSITION1のxy平面上に,z軸に平行に描く. 4 視点から最も近いxz平面又はyz平面に常に平行に, z軸に平行に描く. 5 POSITION1のyz又はzx平面内に,視線に垂直に数字を描く. 6,7,8 見る角度によって数字の角度を自動的に選択。 xy平面内に描かれる場合,6,7は1,8は2に対応する. z軸に平行に描かれる場合,6は3,7は4,8は5と同じになる. +10 POSITION2 +20 POSITION3 +30 POSITION4 *(-1) フォントの大きさを固定 (+の場合は見る角度に応じて フォントの大きさを若干変えるが,今のところ未対応) POSITION1 とは,グラフを上側から眺める時は下側手前の軸を指す. グラフを下側から眺める時は上側手前の軸を指す. POSITION2 とは,グラフを上側から眺める時は下側奥側の軸を指す. グラフを下側から眺める時は上側奥側の軸を指す. POSITION3 とは,グラフを上側から眺める時は上側手前の軸を指す. グラフを下側から眺める時は下側手前の軸を指す. POSITION4 とは,グラフを上側から眺める時は上側奥側の軸を指す. グラフを下側から眺める時は下側奥側の軸を指す. INDX は GNUMBR の IND と同じ。 目盛り数値は,開始値から指定された間隔で正負両方向につけられる. 開始値がその軸の座標の最小値と最大値の間になければ,目盛り数値は 表示されない. GVALUE3DYも同様. @ GVALUE3DZ 等間隔及び不等間隔格子2次元データを表示する際のz軸の目盛りの数値を 記入する。 ( 現在数値を書く際には隠線処理は行っていないので必要に 応じてCPLOT3D1の前または後または前後に呼ぶ必要がある.) GVALUE3DZ(ZORG,ZSTEP,IPOS,IND) 引数 ZORG,ZSTEP は GSCALE3DX と同じ。 ZSTEP が 0.0 の時には数値は描かれない。 IPOS [I] 数値の書き方を指定。 1 視点から最も近いxz平面又はyz平面に常に平行に, z軸に平行に描く. 2 POSITION1のyz又はzx平面内に,視線に垂直に数字を描く. +10 POSITION2 +20 POSITION3 +30 POSITION4 *(-1) フォントの大きさを固定 (+の方は見る角度に応じて フォントの大きさを若干変えるが,今のところ未対応) POSITION1 とは,グラフ左側のz軸を指す. POSITION2 とは,グラフ右側のz軸を指す. POSITION3 とは,手前のz軸を指す. POSITION4 とは,奥側のz軸を指す. INDX は GNUMBR の IND と同じ。 目盛り数値は,開始値から指定された間隔で正負両方向につけられる. 開始値がその軸の座標の最小値と最大値の間になければ,目盛り数値は 表示されない. @ GDRWBK グラフの背面を与えられた色で塗り潰す. GDRWBK(R,G,B) 引数 R [R] 塗り潰す色 (RGB値のR) G [R] 塗り潰す色 (RGB値のG) B [R] 塗り潰す色 (RGB値のB) @@ ユーザーが追加の描画をする補助をするサブルーチン群 @ GTTTx (x=A,B) 等間隔及び不等間隔格子2次元データをGDEFIN3D等で定義された平面へ射影し その座標を求める. (何か追加して表示したいものがあるときのみユーザーが使う必要がある.) GTTTx(X,Y,Z,XP,YP) (x=A,B) 入力 X [R] 3次元データのx座標 Y [R] 3次元データのy座標 Z [R] 3次元データのz座標 出力 XP [R] 射影後のデータのx座標(cm) YP [R] 射影後のデータのy座標(cm) GTTTAはその点をグラフの拡大、縮小、平行移動で考慮にいれる (つまりその点がGDEFINで定義した領域に必ず収まることを保証する) ときに使い,GTTTBはそうではないときに使う。 @ INQCNR3D グラフ領域をなす直方体の8つの角の座標を求める. INQCNR3D(POS) 出力 POS [R(2,8)] 8つの点それぞれのx,y座標(cm). @ INQANG3D 視線のなす角度を求める.ただし,THETA (極座標のθ) は 0 <= theta < 180 , PHI (極座標のφ) は 0 <= phi < 360 を満たすようにされている. INQANG3D(THETA,PHI) 出力 THETA [R] 極座標のθ (度) PHI [R] 極座標のφ (度) -------------------- GSAF V3.65 00/02/25 -------------------- @@ イベント処理に関係するサブルーチン群 @ GF_SET_EVENT 待ち受けるイベントの種類を設定する. SUBROUTINE GF_SET_EVENT(ID) 入力 ID [I] イベントの種類 (複数のイベントを待つ場合はそれらの和) 0 : NO EVENT (default) 1 : KEY PRESSED 2 : MOUSE PRESSED 4 : MOUSE RELEASED 8 : MOUSE MOTION @ GF_INQ_EVENT 待ち受けているイベントの種類を問い合わせる. SUBROUTINE GF_INQ_EVENT(ID) 出力 ID [I] イベントの種類 @ GF_GET_EVENT イベントを待ち受ける. SUBROUTINE GF_GET_EVENT(ID,X,Y,KID,KEY) 出力 ID [I] イベントの種類 X [R] イベントが生じたときのマウスのX座標 Y [R] イベントが生じたときのマウスのY座標 KID [I] Key Event の場合は入力文字の ASCII コード Mouse Event の場合はマウスボタンの番号 KEY [I] Key Event の場合は押されたキー番号 (Shift, Control, Alt キーは無視する) @ GF_CHECK_EVENT イベントを読み込む. SUBROUTINE GF_GET_EVENT(ID,X,Y,KID,KEY) 出力 ID [I] イベントの種類:ID=0 イベントなし X [R] イベントが生じたときのマウスのX座標 Y [R] イベントが生じたときのマウスのY座標 KID [I] Key Event の場合は入力文字の ASCII コード Mouse Event の場合はマウスボタンの番号 KEY [I] Key Event の場合は押されたキー番号 (Shift, Control, Alt キーは無視する) @@ 描画属性の設定に関係するサブルーチン群 @ GF_SET_GCFUNC 描画する際の書き込み属性を設定する(白地に黒を基準:white=0, black=1) SUBROUTINE GF_SET_GCFUNC(ID) 入力 ID [I] 描画属性 (S=Source 書き込もうとするデータ  D=Destination 書き込まれるピクセルのデータ) 0 : Clear 0 1 : And S & D 2 : AndReverse S & !D 3 : Copy (Default) S 4 : AndInverted !S & D 5 : Noop D 6 : Xor S XOR D 7 : Or S | D 8 : Nor !S & !D 9 : Equiv !S XOR D 10 : Invert !D 11 : OrReverse S | !D 12 : CopyInverted !S 13 : OrInverted !S | D 14 : Nand !S | !D 15 : Set 1 @ GF_INQ_GCFUNC 描画する際の書き込み属性を問い合わせる. SUBROUTINE GF_INQ_GCFUNC(ID) 出力 ID [I] 描画属性 @@ グラフィック用バッファ管理に関するサブルーチン @ GF_SYNC グラフィック画面用バッファに蓄積されたデータをすべて画面に書き出す. (スリープする前にはそれまでのデータを書き出すために,このルーチンを呼ぶ  ことが望ましい.) SUBROUTINE GF_SYNC @@ 時間管理に関するサブルーチン @ GU_SLEEP 指定された時間の間,プログラムの実行を停止する. SUBROUTINE GU_SLEEP(T) 入力 T [R] 実行停止時間[秒] @@ 乱数に関するサブルーチン GURAND(X) @ GU_SRAND 与えられた整数をシードとして乱数を初期化する. (GSOPEN が実行されるとき,その時刻から整数を生成して,乱数を初期化する) SUBROUTINE GU_SRAND(I) 入力 I [I] シード:乱数の種となる整数 GUFLSH -------------------- GSAF V3.66 00/02/28 -------------------- @@ 作図終了サブルーチンの追加 @ PAGEY 1頁の作図を終了し,入力を待たずに処理を続行する. ファイル保存モードでは常にデータを保存する. @ PAGEN 1頁の作図を終了し,入力を待たずに処理を続行する. ファイル保存モードでもデータは保存しない. -------------------- GSAF V3.71 01/05/28 -------------------- @ RGBTRG 三角形の色塗り(頂点の色を指定して,連続塗り) SUBROUTINE RGBTRG(X,Y,R,G,B) 入力 X(3) [R] 三角形の頂点の X 座標 Y(3) [R] 三角形の頂点の Y 座標 R(3) [R] 三角形の頂点における赤色度 G(3) [R] 三角形の頂点における緑色度 B(3) [R] 三角形の頂点における青色度 画面表示および -g オプションを付けずに作成された ps/eps ファイルでは 平均色で一様に塗られる. -g オプションを付けて作成された ps/eps ファイルでは連続的に色塗りさ     れる.ただし Freeand/Illustrator での編集はできなくなる. 三角形のクリッピングは行わないので,頂点がはみ出した場合には強制的に 頂点が表示範囲内に移動する. @MOVE2D GDEFIN で定義された座標での移動 SUBROUTINE MOVE2D(X,Y) 入力 X [R] 移動先の X 座標 Y [R] 移動先の Y 座標 @DRAW2D GDEFIN で定義された座標での線描画 SUBROUTINE DRAW2D(X,Y) 入力 X [R] 移動先の X 座標 Y [R] 移動先の Y 座標 @MOVE2DPT GDEFIN で定義された座標での線パターン付き直線の作図の初期化 SUBROUTINE MOVE2DPT(X,Y,IPT) 入力 X [R] 移動先の X 座標 Y [R] 移動先の Y 座標 IPAT [I] 線パターン番号 0:実線 1:点線 2:破線 3:長破線 4:一点鎖線 5:長一点鎖線 6:二点鎖線 7:長二点鎖線 @DRAW2DPT GDEFIN で定義された座標での線パターン付き直線の作図 SUBROUTINE DRAW2DPT(X,Y) 入力 X [R] 移動先の X 座標 Y [R] 移動先の Y 座標 ---------------------- GSAF V3.92 2005/08/24 ---------------------- @ GF_DEFIMAGE pixel map の定義 SUBROUTINE GF_DEFIMAGE(ID,IW,IH,DATA) 入力 ID [I] pixel map の番号(0 <= ID <= 9) IW [I] pixel map の幅 IH [I] pixel map の高さ IDATA(IW,IH) [I] pixel map データ     pixel map データは、IR,IG,IB を赤、緑、青を表す (0..255) の     の範囲の整数として         DATA=IR*256*256+IG*256+IB @ GF_UNDEFIMAGE pixel map の削除 SUBROUTINE GF_UDEFIMAGE(ID) 入力 ID [I] pixel map の番号(0 <= ID <= 9) @ GF_PUTIMAGE pixel map の表示 SUBROUTINE GF_PUTIMAGE(ID,X,Y) 入力 ID [I] pixel map の番号(0 <= ID <= 9) X [R] pixel map の左上隅の X 座標 Y [R] pixel map の左上隅の Y 座標 @ GU_XFLUSH X11 のバッファ内にある命令の即時実行 SUBROUTINE GU_XFLUSH