格子点で与えられた2次元のスカラーデータを手早く等高線図で描きたいとい うときには, DclDrawContourを呼 びます(sample02.f90). DclDrawContourルーチンは等高線を描くだけですから, まず正規化変換を設定します. ウインドウはDclSetWindowで[0,5]×[20,50]と設定し, ビューポートはDclSetViewPortで[0.2,0.8,] ×[0.2,0.8,]と設定します. そしてDclSetTransFunctionルーチンでこ れらを確定しています.
次に, DclDrawScaledAxisでおまかせの座標軸を描きます. そして, 最後にDclDrawContourルーチンを呼んで等高線を描きます. 現在設定 されているウインドウいっぱいに等間隔の格 子点が設定されて,コンタリング が行なわれます. つまり, 座標軸の目盛に関係なく, p(0,0) が左下隅, p(nx,ny) が 右上隅にくるように等間隔の格子点座標が設定されます. コンターレベルは自動的に決定され, 図の下にそのコンタ ー間隔が表示されま す. この例のようにデータ全部を描く場合は, DclDrawContourの引数に配列pを与えます. データの一部を描く場合にはpの部分配列(たとえばp(3:10,0:ny))を与えます.
program sample02 use dcl integer,parameter :: nx=36, ny=36 real,parameter :: xmin=0., xmax=360., ymin=-90., ymax=90. real,dimension(0:nx,0:ny) :: p !-- 球面調和関数 ---- do j=0,ny do i=0,nx alon = ( xmin + (xmax-xmin)*i/nx ) * DCL_PI/180. alat = ( ymin + (ymax-ymin)*j/ny ) * DCL_PI/180. p(i,j) = sqrt(1-sin(alat)**2) * sin(alat) * cos(alon) end do end do !-- グラフ ---- call DclOpenGraphics() call DclNewFrame call DclSetWindow( xmin, xmax, ymin, ymax ) call DclSetViewPort( 0.2, 0.8, 0.2, 0.8 ) call DclSetTransFunction call DclDrawScaledAxis call DclDrawContour( p ) call DclCloseGraphics end program |
DclDrawContour (UDCNTR,UDCNTZ) |
2次元等高線図を描く. |
* 括弧の中は、対応するf77インターフェイス名.