AXIS, GSYMBL 等 (旧ソフト互換用)

axis | scale, line | csymbl | symbol, number
| gsymbl, chtype, pchar, pnorm, psubsc, psupsc, pshift

AXIS
1.機 能
    座標軸を作画する.

2.呼出し手順と引数
      call axis(xp, yp, text, ltx, axlen, angle, firstv, deltav)
  xp, yp  [float] 座標軸の始点の座標値(cm単位)
  text    [char]  座標軸の名前の文字列
  ltx     [int]   文字列 text の文字数(0 であってはならない)
                  正の値で与えると,座標軸の反時計回りの側に座標軸の名前を作
                  画し,負の値で与えると,時計回りの側に作画する.
  axlen   [float] 座標軸の長さ(cm単位,2 cm 以上でなければならない)
  angle   [float] 座標軸の方向(度単位:+X方向から反時計回りにはかる)
  firstv  [float] 座標軸の目盛の初期値
  deltav  [float] 座標軸の1cmあたりの増分値
                  値が 0. のとき,1.0 とみなす.

3.使 用 例

      dimension p(2,12)
      do 10 i=1,10
        p(1,i) = float(i-1)
        p(2,i) = sqrt(p(1,i))
   10 continue
      call scale(p(1,1), 10., 10, 2)
      call scale(p(2,1), 10., 10, 2)
      call psopn('axis.ps', 'a4p')
      call plots(2., 2.)
      call axis(1., 1., 'Axis-X', -6, 10., 0., p(1,11), p(1,12))
      call axis(1., 1., 'Y=sqrt(X)', 9, 10., 90., p(2,11), p(2,12))
      call line(p(1,1), p(2,1), 10, 2, 1, 4)
      call plote
      call pscls
      stop
      end

SCALE, LINE
1.機 能
    scaleルーチンは,配列で指定された座標データ群を 指定の座標軸長におさ
  めるのに必要な 軸目盛の初期値と増分値を求めて,配列中に格納する.
    lineルーチンは,配列に格納されている座標データを用いて,指定された
  タイプの折れ線またはマークを作画する.

2.呼出し手順と引数

      call scale(va, axlen, npt, inc)
  va      [float] 座標データが格納されている配列(その先頭要素位置)
  axlen   [float] 座標軸の長さ(cm単位,2 cm 以上でなければならない)
  npt     [int]   座標データ点の個数(2 以上の値でなければならない)
  inc     [int]   座標データ配列から各座標データ値を取り出す間隔
                  (正の値でなければならない)
              求められた軸目盛の初期値および増分値は,座標データの先頭要素を
            配列要素 va(1) としたとき,配列要素の va(npt*inc + 1) および 
            va(npt*inc + inc + 1) に格納される. 従って,そのために必要な配列
            のサイズが確保されていなければならない.

      call line(xa, ya, npt, inc, ltype, mark)
  xa, ya  [float] 座標データが格納されている配列(その先頭要素位置)
  npt     [int]   座標データ点の個数(正の値でなければならない)
  inc     [int]   座標データ配列から各座標データ値を取り出す間隔
                  (正の値でなければならない)
  ltype   [int]   タイプの指定
                  0 または正のとき,各データ点間を実線で結び,
                  0 でないとき,|ltype| 点毎にマークを作画する.
  mark    [int]   マークの種別を示すセンタシンボル番号.
              このルーチンの呼び出しに先立って,scaleルーチンを call するか 
            もしくは利用者自身の設定によって,配列 xa および ya に対して座標
            軸の初期値と増分値が与えられていなければならない.この初期値およ
            び増分値の各配列での先頭要素に対する相対位置は,(npt*inc) および
            (npt*inc + inc) である.

CSYMBL
1.機 能
  ペンの移動を行い,センターシンボルを描く.

2.呼出し手順と引数
      call csymbl(xx, yy, size, ic, angle, mode)
  xx, yy  [float] センターシンボルを描く中心位置の座標(cm単位)
  mode    [int]   偶数のとき ペンの現在位置から (xx,yy) まで実線を描き,
                  奇数のとき これを描かず (xx,yy) へペンを移動する.
  size    [float] 描くセンターシンボルの大きさ(cm単位)
  ics     [int]   描くセンターシンボルの種類(0〜39)
                  この値が40以上または負のときは,センターシンボルは描かれない
                  が,xx,yy,mode の値に従ったペンの移動は行われる.
  angle   [float] 描くセンターシンボルの回転角(度単位)

3.シンボル形状一覧

SYMBOL, NUMBER
1.機 能
    文字列または数値を描く.
    symbolルーチンは,gsymblルーチンによる文字列に比して横幅が 7/6 倍に
  なっており,文字の高さと文字間隔が等しい文字列となる.
    numberルーチンは,小数点以下の桁数を指定して左づめで数値を描く.
  gsymblルーチンによる数字出力の実際に描く高さが,指定した文字高の 6/7 倍
  であり,文字間隔に等しいのに対し,このルーチンでは,指定した文字高が,
  実際の数字の文字高および文字間隔に等しくなるように,数値を描く.(文字列
  描画の上では,単に文字高を 7/6 倍に設定し直しているだけである.)

2.呼出し手順と引数
      call symbol(xp, yp, high, text, ang, nc)
      call number(xp, yp, high, fv, ang, ndec)
  xp, yp  [float] 文字を描く始点の座標値(cm単位)
                  xp=yp=999. のとき ペンの現在位置が始点となり,xp,yp のいず
                  れか一方のみが 999. に等しい場合は,その座標軸に関してのみペ
                  ンの現在位置の座標を始点の座標値とする.
  high    [float] 文字の高さ(cm単位)
  ang     [float] 文字を描く方向(度単位:+X方向から反時計回りにはかる)
  text    [char]  作画する文字列(またはセンタシンボルコード)
  nc      [int]   描く文字列(text)の文字数
                  正のとき text の先頭からその文字数分の文字列を描き,0 または
                  負のとき text の先頭文字をセンタシンボルコードとみなし,指定
                  の点にそのセンタシンボルを描く. なお,-2 以下のときは,ペン
                  の現在位置から指定の点まで線を描く.
  fv      [float] 作画する数値
                  整数部は,負の場合の符号を含めて 21桁以下でなければならない.
  ndec    [int]   小数点以下の作画する桁数
                  負のとき 小数点を除いた整数部分のみを作画するが,-2 以下のと
                  き整数部の下位 (|ndec| - 1) 桁を作画しない.
                  +9 以上のときは +9,-9 以下のときは -9 とみなされる.

GSYMBL, CHTYPE, PCHAR, PNORM, PSUBSC, PSUPSC, PSHIFT
1.機 能
    線画で文字を描くためのルーチン群であり,任意の位置に任意の向きの文字
  を描け,斜体をも描くことができる. 実際に文字を描くのは pchar/gsymbl
  ルーチンであり,gsymblルーチンは直立体の文字を描く. chtypeルーチンは,
  pcharルーチンで描く文字の高さ・傾き等を与える.なお,gsymblルーチンの
  呼出しは,chtypeルーチンによる設定の ang と high の値を変更し,
  slope=0., ratio=1. に再設定する結果となる.
    pnorm/psubsc/psupsc の各ルーチンは,pcharルーチンおよび gsymbl
  ルーチンに対して,ノーマルモード/下つきモード/上つきモードで描くこと
  を指定し,pshiftルーチンは,上つきシフトコードおよび下つきシフトコード
  とみなす2文字を指定する.すなわち,下(上)つきシフトコードと指定された
  文字は,上(下)つきモード中を除いて文字は描かれず,描く文字のモードを,
  ノーマルから下(上)つきへ,下(上)つきからノーマルへ変更する機能を持つ.
    下つきモード/上つきモードでは,下つき/上つきにふさわしく下上にずら
  した位置に,文字高が 0.7倍の大きさの文字が描かれる.但し,確保される
  文字間隔はノーマルモードと同じである.
    ここで使用する文字は,英大文字 26字,英小文字 26字,数字 10字,空白
  1字,および下記の特殊文字 32字 の 合計95種の文字であり,それ以外の文字
  は使用しないものとする.

     ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~

2.呼出し手順と引数

      call gsymbl(xx, yy, high, bcd, angle, nc)
      call chtype(angle, slope, high, ratio)
      call pchar (bcd, nc, xx, yy, kk)
  bcd     [char]  描くべき文字列
  nc      [int]   描くべき文字列の字数(シフトコードを含む)
  xx, yy  [float] 文字を描き始める位置(始点)の位置座標
  kk      [int]   kk≠0 のとき,(xx,yy) を始点とするが,kk=0 のとき,
                   xx と yy の値は無視され,ペンの現在位置が始点となる.
  high    [float] 描く文字の高さh(cm単位)
  angle   [float] 文字を描く方向a(度単位)
  slope   [float] 描く文字の傾斜s(度単位)
  ratio   [float] 描く文字の縦横比倍率r        (下図参照)

      call pnorm
      call psubsc
      call psupsc
      call pshift(cs)
  cs      [char]  シフトコードに指定する2文字.第1文字が下つきシフトコード,
                  第2文字が上つきシフトコードを示す.当該コードが,前記の95種
                  以外であるかまたは空白の場合,当該シフト機能の解除とみなす.

3.字体一覧および使用例