今度は, 2次元のベクトル場を手早く矢印で描きたいというときの例題です. 次のプログラムsample04.f90は簡単な変形場を描くものですが, サブルーチンDclDrawVectorsを呼ぶだけで十分です.
前ページの等高線図の場合と同様に, おまかせの座 標軸を描画したあとでDclDrawVectorsルーチンを呼んでベクトル場 を描いています.
この例でも, 等間隔の格子点を設定して, それぞれの格子点でのベクトルを矢 印で表現します. おまかせ描画のとき には, ベクトルの長さが格子点間隔を越 えないようにスケーリングファクターが決定され, それを乗じてベクトルが描 かれます. この場合, x
成分とy 成分のスケーリングファクターは同じに なっていて, 図の下部マージンにはその値が 表示されています.
program sample04
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インターフェイス名.