とりあえず2次元ベクトル場

ベクトル図を矢印でかくには、ベクトルのx成分、y成分それぞれについて2次元配列を用意し、サブルーチンDclDrawVectorsで表示する。格子点座標の設定は等値線図と同じである。

何も設定しなければ、ベクトルの矢印の長さは格子点間隔を超えないよう自動的にスケーリングファクターが計算され、それに乗じてベクトルが描かれる。これを手動で設定したい場合は??節を参照。

DclDrawVectorは地図投影に対応していない。ただし矢印を描くルーチンをループでまわしてやれば同様のことが実現できる。

 

sample07.f90
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インターフェイス名.

関連リンク