とりあえず等高線図

2次元配列で与えたデータは、サブルーチンDclDrawContourを呼べば等値線で 表示することができる。

ただし描画はユーザー座標系でおこなうので、DclDrawContourを呼ぶ前に正規変換の 手続きをし格子点座標の設定をしなければならない。 格子点座標は通常はDclSetWindowで設定した範囲いっぱいに等間隔で設定し、 第1次元が左から右、第2次元が下から上に向かって設定される。 例えば大きさ(nx,ny)の2次元配列Pの場合、P(1,1)が左下隅、P(nx,ny)が右上隅に くるような等間隔の格子点座標になる。

格子点座標をそれ以外のものに設定するには??節を参照。 格子点を不等間隔にしたり、範囲いっぱいに描かないようにしたり、 上下左右をひっくり返して描くことなどができる。 正規変換の設定で地図投影を指定すれば、地図上に等値線図をかくことができる。

DclDrawContourの引数には実数の2次元配列を与える。 配列の一部分をかくには、引数に部分配列を与えればよい。

等値線の値は自動的に決定される。これを変更したいときは??節を参照。 図の下には、等値線の値の間隔が表示される。

sample05.f90
program sample05

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

関連リンク