矢印を描く

矢印つき線分(線分の終点から対称な2本の線分を付け加える)を 描くサブルーチンも用意されている. DclDrawArrowで始点の座標, 終点の座標を指定する. 矢じり部分の形状は DclSetParmが管理するいくつかの内部変数によって設定できる. 上段左側の矢印は, デフォルトの内部変数を用いて描いた. この場合, 線分部分が長くなると, それに比例して矢じりの部分も長くなる. 上段右側の矢印は, 内部変数FIX_ARROWHEAD_PROPORTION.FALSE. として描いた. このようにすると, 矢じり部分の長さが一定値となる. また下段の矢印は, 矢じり部分の線分と本体部分の線分のなす角(内部変数ARROWHEAD_ANGLE) を変化させて描いた.

arrow.f90
program arrow

  use dcl
  integer,parameter :: nd=12
  real,parameter :: ddeg=360.0/nd, dd=0.25
  real :: rx(nd), ry(nd)

    do n = 1, nd
      rx(n) = dd*n*cos(DCL_PI/180*ddeg*(n-1))
      ry(n) = dd*n*sin(DCL_PI/180*ddeg*(n-1))
    end do

    call DclOpenGraphics()
    call DclNewFrame

    call DclSetWindow( 0.0, 10.0, 0.0, 10.0 )
    call DclSetViewPort( 0.0, 1.0, 0.0, 1.0 )
    call DclSetTransFunction

    x1 = 3.0
    y1 = 7.0
    do n = 1, nd
      call DclDrawArrow( x1, y1, x1+rx(n), y1+ry(n) )
    end do

    call DclSetParm( 'FIX_ARROWHEAD_PROPORTION', .false. )
    call DclSetParm( 'ARROWHEAD_SIZE', 0.05 )
    x1 = 7.0
    y1 = 7.0
    do n = 1, nd
      call DclDrawArrow( x1, y1, x1+rx(n), y1+ry(n), index=2 )
    end do

    do i = 1, 8
      call DclSetParm( 'ARROWHEAD_ANGLE', 10.0*i )
      call DclDrawArrow( real(i), 2.0, real(i)+1, 3.0 )
    end do

    call DclCloseGraphics

end program



関連リンク

DclDrawArrow
(SGLAU,SGLAZU)
ユーザー座標系で矢印付き線分を描く.
DclDrawArrowNormalized
(SGLAV,SGLAZV)
正規座標系で矢印付き線分を描く.
DclDrawArrowProjected
(SGLAR,SGLAZR)
透視座標系で矢印付き線分を描く.
DclSetArrowLineType
(SGSLAT )
矢印付き線分のラインタイプを設定する.
DclSetArrowLineIndex
(SGSLAI)
矢印付き線分の ラインインデクスを設定する.

* 括弧の中は、対応するf77インターフェイス名.