今度は, 2次元のベクトル場を手早く矢印で描きたいというときの例題です.
次のプログラム U2D3 は簡単な変形場を描くものですが, サブルーチン
UGVECT 1つを呼ぶだけで十分です. 前節の等高線図の場合と同様に, お
まかせの座標軸を描画したあとで UGVECT ルーチンを呼んでベクトル場
を描いています.
この例でも, 等間隔の格子点を設定して, それぞれの格子点でのベクトルを矢 印で表現します. おまかせ描画のときには, ベクトルの長さが格子点間隔を越 えないようにスケーリングファクターが決定され, それを乗じてベクトルが描 かれます. この場合, x 成分とy 成分のスケーリングファクターは同じに なっていて, 図の下部マージンにはその値が表示されています.
U (実数型) ベクトルのx 成分を与える MU×NYの2次元配列. 作画には NX× NYの部分を使う. MU (整数型) 配列 Uの第1次元整合寸法. V (実数型) ベクトルのy 成分を与える MV× NYの2次元配列. 作画には NX× NYの部分を使う. MV (整数型) 配列 Vの第1次元整合寸法. NX (整数型) 作画に使う配列 U, Vの第1次元寸法. NY (整数型) 作画に使う配列 U, Vの第2次元寸法.
PROGRAM U2D3 PARAMETER( NX=21, NY=21 ) PARAMETER( XMIN=-1, XMAX=1, YMIN=-1, YMAX=1 ) PARAMETER( DX=(XMAX-XMIN)/(NX-1), DY=(YMAX-YMIN)/(NY-1) ) REAL U(NX,NY), V(NX,NY) *- データ -- DO 10 J=1,NY DO 10 I=1,NX X = XMIN + (I-1)*DX Y = YMIN + (J-1)*DY U(I,J) = X V(I,J) = - Y 10 CONTINUE *- グラフ -- WRITE(*,*) ' WORKSTATION ID (I) ? ;' CALL SGPWSN READ (*,*) IWS CALL GROPN( IWS ) CALL GRFRM CALL GRSWND( XMIN, XMAX, YMIN, YMAX ) CALL USPFIT CALL GRSTRF CALL USSTTL( 'X', 'km', 'Y', 'km' ) CALL USDAXS CALL UGVECT( U, NX, V, NX, NX, NY ) CALL GRCLS ENDPROGRAM U2D3