DCL:らくらくDCL:描画の基本(2):ユーザー座標系(U-座標系)での基本描画
変換関数を変えることによってさまざまな座標系での描画が可能です. SGPACK
で扱える座標系には, 大別して, 直交直線座標系(1〜4), 直交曲線座標系
(5〜7), 地図投影座標系(10番台〜30番台), ユーザー定義座標系
(99), の4種類があります. 括弧内の数字は変換関数番号です. KIHON8
のプログラム例では, よく使う直交直線座標系の4つを見ておきましょう.
サブルーチン BPLOT では, ビューポートの枠を描き, 一次関数を実線
で, 指数関数を破線で, 対数関数を点線で描き, (X=30,Y=40) を中心に
SGTXU で文字列 '(30,40)' を描きます. SGSTRN ルーチン
で変換関数番号を1と指定すると,直角一様座標(左上)となります. 2ならばy軸が対数の片対数座標(右上), 3ならばx軸が対数の片対数座標(左下), 4な
らば両対数座標(右下)となります.
PROGRAM KIHON8
PARAMETER( XMIN=1., XMAX=100., YMIN=1., YMAX=100. )
WRITE(*,*) ' WORKSTATION ID (I) ? ;'
CALL SGPWSN
READ (*,*) IWS
CALL SGOPN( IWS )
CALL SGLSET( 'LCLIP', .TRUE. )
CALL SGFRM
*-- 直角一様座標(左上) ----
CALL SGSWND( XMIN, XMAX, YMIN, YMAX )
CALL SGSVPT( 0.1, 0.4, 0.6, 0.9 )
CALL SGSTRN( 1 )
CALL SGSTRF
CALL BPLOT
*-- 片対数(y)座標(右上) ----
CALL SGSWND( XMIN, XMAX, YMIN, YMAX )
CALL SGSVPT( 0.6, 0.9, 0.6, 0.9 )
CALL SGSTRN( 2 )
CALL SGSTRF
CALL BPLOT
*-- 片対数(x)座標(左下) ----
CALL SGSWND( XMIN, XMAX, YMIN, YMAX )
CALL SGSVPT( 0.1, 0.4, 0.1, 0.4 )
CALL SGSTRN( 3 )
CALL SGSTRF
CALL BPLOT
*-- 対数座標(右下) ----
CALL SGSWND( XMIN, XMAX, YMIN, YMAX )
CALL SGSVPT( 0.6, 0.9, 0.1, 0.4 )
CALL SGSTRN( 4 )
CALL SGSTRF
CALL BPLOT
CALL SGCLS
END
*-----------------------------------------------------------------------
SUBROUTINE BPLOT
PARAMETER( NMAX=50 )
REAL X(NMAX), Y(NMAX)
CALL SLPVPR( 1 )
*-- 一次関数 ----
DO 10 N=1,NMAX
X(N) = 2.*N
Y(N) = X(N)
10 CONTINUE
CALL SGSPLT( 1 )
CALL SGPLU( NMAX, X, Y )
*-- 指数関数 ----
DO 20 N=1,NMAX
Y(N) = EXP(0.05*X(N))
20 CONTINUE
CALL SGSPLT( 2 )
CALL SGPLU( NMAX, X, Y )
*-- 対数関数 ----
DO 30 N=1,NMAX
Y(N) = 20.*LOG(X(N))
30 CONTINUE
CALL SGSPLT( 3 )
CALL SGPLU( NMAX, X, Y )
*-- 文字列 ----
CALL SGSTXS( 0.02 )
CALL SGTXU( 30., 40., '(30,40)' )
RETURN
END