DCL グラフィクスの基本的な操作と概念を説明し, 具体的にどうすれば図形出力が得られるかを概観します. データ解析でも数値計算でも一刻も早く計算結果が見たいものですが, そんな時, DCLを用いるとわずか数行でデータをグラフ化できます. 最初の例題として,リサジューの図形を描いてみましょう.
Fortran プログラムは, sample01.f90 です. リンクを右クリックしてファイルを保存し、それをコンパイルします。 Windowsではここ を見て好みの方法を選択してください。 UNIX 系システムで DCL が標準的にインストールされている場合には,
% dclfrt -o sample01 sample01.f90によって sample01 という実行ファイルが作られます.そこで,
% sample01といれて実行します。
program sample01 use dcl integer,parameter :: nmax = 400 real,dimension(0:nmax) :: x,y,t !-- リサジューの図 ---- t = (/( n,n=0,nmax )/) / real(nmax) ! 媒介変数(0≦t≦1) x = 1.e2 * sin( 2.*DCL_PI * 4.*t ) ! x = Asin(2πω t) y = 1.e-3 * cos( 2.*DCL_PI * 5.*t ) + 6.! y = Bcos(2πω't)+C !-- グラフ ---- call DclOpenGraphics() ! 出力装置のオープン call DclNewFrame ! 新しい描画領域を作成する call DclDrawScaledGraph( x, y ) ! おまかせでグラフを描く call DclCloseGraphics ! 出力装置のクローズ end program |
実行すると、
workstation id (i) ? ;ときいてきます。2行目は環境によって異なります. プログラムの16行めでサブルーチン DclOpenGraphics を呼んだので, このように今の環境で利用可能な図形出力装置のリストが書き出されます.
1:X, 2:PS, 3:Tek ;
この場合,3つの出力先が可能です.1を入力すると,ウィンドウがひとつ現れます. (Windowsではこのウィンドウを一度クリックします。) 描画がはじまり下のようなグラフが得られます. このとき,次の警告メッセージが出ると思いますが,特に気にする必要はあり ません.図形表示の終了はマウスクリックで行ないます.
* Warning (STSWTR called by DclNewFrame) WORKSTATION VIEWPORT WAS MODIFIED.
一方, 出力先にPSを指定すると, カレントディレクトリに dcl.ps というポストスクリプト(PS)ファイルができます. PSファイルを扱えるアプリケーションで閲覧、印刷すればよいでしょう。 UNIXでは単純に
% lpr dcl.psと入力すれば,PSプリンタに結果が出力されます.
|
プログラム sample01.f90 で,DCL グラフィクスの基本的な構成を説明しておき ましょう.まず,10行めから12行めまででデータを作り,実質的には16行めか ら21行めまでで図形を描いています.
まず,出力装置のオープンとクローズに関連する3つのサブルーチンについて 説明しましょう.例えば1冊のノートにグラフを描くことを思い浮かべると, 次のような手順に相当します.ノートを出してきて机の上に置き(DclOpenGraphics), 新しいページを開いて(DclNewFrame), そして,何かグラフを描きます. 最後は,後片付け(DclCloseGraphics)をして出来上がりです. この DclOpenGraphics と DclCloseGraphics のあいだでさまざまな作画ルーチンを呼ぶことにより, 多種多様な図形が描けるようになります.
プログラム例 sample01.f90 で具体的にグラフを描いているのは, DclDrawScaledGraphです.データがはみ出さないように x 座標と y 座標の範囲を定め, 各座標軸を描きます.ここでラベルが長くならないように, ファクター(y 軸の括弧内の ^-4)やオフセット(同じく +6)が自動的に用いられます. そして最後に,与えたデータ列を実線で結びます.
DclOpenGraphics (GROPN) |
図形を描くために,ディスプレイやプリンタなど図形出力装置の準備をする. |
DclNewFrame (GRFRM) |
新しい作画領域を設定する.もう一度呼ぶと,いわゆる「改ページ」操作になる. |
DclCloseGraphics (GRCLS) |
描画を終了する時の操作.図形処理の最後に呼ぶ. |
DclDrawScaledGraph (USGRPH) |
自動スケーリングを行って折れ線グラフを描く. |
* 括弧の中は、対応するf77インターフェイス名.