ベクトル図を矢印でかくには、ベクトルのx成分、y成分それぞれについて2次元配列を用意し、サブルーチンDclDrawVectorsで表示する。格子点座標の設定は等値線図と同じである。
何も設定しなければ、ベクトルの矢印の長さは格子点間隔を超えないよう自動的にスケーリングファクターが計算され、それに乗じてベクトルが描かれる。これを手動で設定したい場合は??節を参照。
DclDrawVectorは地図投影に対応していない。ただし矢印を描くルーチンをループでまわしてやれば同様のことが実現できる。
program sample07 use dcl integer,parameter :: nx=20, ny=20 real,parameter :: xmin=-1., xmax=1., ymin=-1., ymax=1. real,dimension(0:nx,0:ny) :: u,v !-- 変形場 ---- do j=0,ny do i=0,nx x = xmin + (xmax-xmin)*i/nx y = ymin + (ymax-ymin)*j/ny u(i,j) = 0.8 * x ! u = a*x v(i,j) = -1. * y ! y = -b*y 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 DclDrawVectors( u, v ) call DclCloseGraphics end program |
|
DclDrawVectors (UGVECT) |
2次元ベクトル場を描く. |
* 括弧の中は、対応するf77インターフェイス名.