AdvancedDCL

本ライブラリはrbdclのラッパーとして作成され、rbdclよりもより使いやすい 描画ライブラリとなっている。rbdclとの違いのひとつにパラメタのセット方法が 挙げられる。本ライブラリではパラメタを描画メソッドのキーワード引数として セットできる。詳しくはパラメタの取り扱いについてを参照のこと。

DCLオンラインマニュアルのページ

<URL:http://www.gfd-dennou.org/arch/dcl/dcl-f77doc/rc1/ >

モジュール構成は以下の通りである。メソッド一覧は本ライブラリの構成を参照のこと。

本ライブラリの使用法

本ライブラリは既にインストールされているものとする。(インストール方法はINSTALL、INSTALL.jp(日本語)を参照)

使用するには

require 'advanceddcl'

とすればよい。

また、

include NumRu::AdvancedDCL

とすることにより、NumRu::AdvancedDCL::Contour.xxx の NumRu::AdvancedDCL の部分が省略でき、Contour.xxx などで各モジュールが扱えるようになる。

本ライブラリの基本構造

デバイスとフレーム

図形を描くためには, まずディスプレイやプリンタなど デバイス の準備をする必要がある. その準備をする操作を「オープン」という. そして, 最後に描画を終了する時の操作を「クローズ」という. すべての図形は, デバイスをオープンしてからクローズするまでの間に 描かれなければならない. 地球流体電脳ライブラリでは, 一度に1つのデバイスをオープンすることがで きる. 同時に2つ以上のデバイスをオープンすることはできないが, オープン時にいくつかのデバイスの中の1つを選択できる.

デバイスに出力される図形が複数ページにわたることがあるが, 地球流体電脳ライブラリでは, ページという言葉の代わりにフレームという言葉を使う. これは, デバイスによってはページという概念のないもの (例えば, 巻物のような長い紙に出力するようなデバイス) があったり, 後述のように物理的な1ページの中に複数のフレームを設定することもあるので, 物理的なページと区別するためである.

グラフィックを使うプログラムの形態は次のようになる.

Dev.open("X")           ! デバイス"X"をオープン
Frame.new               ! フレームを用意
・・・・・・・・        ! 1ページ目の描画プログラム
Frame.new               ! 改ページ
・・・・・・・・        ! 2ページ目の描画プログラム    
   ・
   ・
   ・
Dev.close               !デバイスのクローズ

座標系と変換

本ライブラリで使用する座標系には 4 つのレベルがある. それぞれのレベルには上位レベルから順に U, V, R, W という記号が付けられ, 「U座標系」, 「V座標系」, 「R座標系」, 「W座標系」というように呼ばれる (図 1.3 参照). この U, V, R, W という文字は, それぞれ次のような名前に由来するが, これらの名前が長いので, 以後は単に 「U座標系」などの用語を使うことにする (さらに UC などとも略記する).

レファレンスマニュアルの引数の説明でも, U座標系の座標値は (UX,UY) というように, 座標系を表す文字をつけて記述してある. (正規直角座標系を N 座標系でなく R 座標系と呼ぶのは, 実変数に関する FORTRAN の規則による.)

座標系と変換関数との関係
                   2次元座標    3次元座標
   ユーザ座標         UC           UC3
                       |            |
                     (TC)           |      正規化変換
                       |            |
   仮想直角座標       VC-----------VC3
                       |            |      透視変換
   正規直角座標       RC-------------
                       |                   ワークステーション変換
   装置座標           WC

最も上位の U座標系は普通のX-Y座標から地図投影座標まで多くの座標系を含む. その一つ下位のV座標系には2次元, 3次元のそれぞれ1つずつの直角座標系が定義されており, 多様なU系の座標はすべてこの2種類の座標系に変換される. この変換のことを「正規化変換」 と呼ぶ.

一方, 最も下位の座標系である W 座標系はデバイス固有の座標系で, デバイスによって異なる. これを統一するために, その一つ上位に R 座標系を定義して, すべてこの R 座標系を経由して W座標系に変換される. この変換を「ワークステーション変換」と呼ぶ. R座標系は2次元の直角座標系で, x軸, y軸 ともに定義域は[0,1] である.

これらの上位2つと下位2つの座標系を結ぶ V座標系から R 座標系への変換は 「透視変換」 と呼ばれる. 透視変換はその名の通り, 透視図法すなわち遠近法による変換で, 基本的に3次元のV座標系から 2次元のR座標系への変換である. 2次元のV座標系は, 一旦, 3次元のV座標系に割り付けられてから透視変換される. この時2次元のV座標系を割り付ける位置は, 3次元座標の x軸, y軸 または z軸に垂直な任意の平面にとることができる. これにより, 2次元的に描いた1枚の図を斜めから眺めたような描写が可能になる.

初期状態では, 2次元V座標系からの透視変換は恒等変換となっているため, 2次元の座標系を普通に使う限り, 透視変換を意識する必要はないが, あとで透視変換を使いたくなることも考えて, V座標系とR座標系は使い分けておいた方が良い. すなわち, 座標軸などの「図に付随した情報」は, 透視図法で図とともに変換すべき情報なので V 座標系で描画し, ページ数やパラメタの数値などのように「紙に付随した情報」は R 座標系で描画すべきである.

なお, 地図座標系の正規化変換は, 座標の「回転」と「投影」の2段階で行なわれ, その中間の座標 (U座標系を回転した座標) を T 座標 (Terrestrial coordinate) という. T 座標はx軸の定義域が [-180, 180], y軸の定義域が[-90, 90]の座標系で, この座標系から各地図投影の定義式に従って変換される. 任意の経線を中央経線としたり, 横軸法や斜軸法の投影をするためには投影の前に回転操作が必要となる.

T座標系は正規化変換の際の一時的な作業座標系であるので, これを意識しなければならないことは少いが, 地図座標のクリッピングだけは U座標系ではなくT座標系で行なわれるので, この座標系を意識する必要がある.

2次元正規化変換

座標系の種類

2次元のU座標系には次のような種類があり, ユーザーはその中から関数番号で指定する (略号, または名称から関数番号を返す関数も用意されている). 各座標系は, その種類によって正規化変換に必要なパラメータが異なる.

ユーザー定義座標系はユーザーが必要な変換関数を用意するものである.

地図投影法

地球流体電脳ライブラリでは地図投座標も普通のU座標系の 一つとして扱われる. 地図投影法には実にさまざまな種類があり, すべてを解説するためには1冊の本が必要であるが, ここでは地球流体電脳ライブラリを利用するために知っておくべき基本的事柄 を解説する. なお, 地図学の詳しい解説は 野村 正七 著 「地図投影法」 などを参考にさ れたい (ただし, この本は絶版).

地図投影法は基本的に「球面を何らかの方法で2次元平面に投影する」方法で ある. 実際の地球は完全な球面ではなく回転楕円体に近いので, 厳密な地図投影を行なうためには回転楕円体の表面を平面に投影しなければならない. しかし, 本ライブラリでは回転楕円体からの投影ではなく, 球面からの投影のみをサポートする. なお, 投影された図形は投影法によっては3次元的な雰囲気を持つが, 地図投影座標はあくまでも2次元座標であることに注意されたい.

地図投影の多くの図法では幾何学的な方法で球面から平面に投影される. その際の平面の形状によって次のようにいくつかの図法に分類される.

これらの円筒や円錐の軸, または方位図法における接点からの垂線が 地球の自転軸と一致するものを正軸法, 直交するものを横軸法, 斜めに交わるものを斜軸法と呼ぶ. 一般に, 円筒図法は全球の表示に向いており, 円錐図法は中緯度の表示に向いている.

地図投影では球面を平面に投影するため, どうしてもひずみが生じてしまう. そこで, 多くの図法では 面積 または 角度 のどちらかが 保存されるように工夫されている. 原理的に, この二つを同時に保存するような投影は不可能である. この様な保存性に関する性質によって次のように分類される.

本ライブラリでは以下のような地図投影がサポートされる.

ハンメル図法は地図学上, ランベルト正積方位図法の変種として方位図法に分類されるが, その形状や用途はむしろ円筒図法に近いので, ここでは便宜的に円筒図法に分類する. これらの図法すべてについて, 正軸法, 横軸方, 斜軸法が可能である.

なお, 普通の地図投影法には含まれないが, 正射図法の変形として人工衛星から眺めたような投影法 (Satellite View) もサポートされている. 普通の正射図法は地球儀を無限遠から眺めたような投影になっているが, これを有限の位置から眺めたような投影に変形したものである.

正規変換パラメタ

上記のU座標を2次元V座標に変換する 正規化変換に必要なパラメータには以下のものがある. これらは Fig により 一つずつ設定/参照できる.

ビューポート ( VXMIN, VXMAX, VYMIN, VYMAX )

ビューポートを指定するパラメタは, すべての変換に共通で必須である. ビューポートとは, 通常座標軸が描かれる矩形の枠である. クリッピングをするように指定すると, この枠からはみ出した部分は 描画されない. ビューポートを指定するには, その左下と右上の角のVCにおける座標値 を指定する. これらのパラメータは Figのviewport によって 設定/参照できる.

ウインドウ ( UXMIN, UXMAX, UYMIN, UYMAX )

ウインドウは直角直線座標系を設定するのに必要なパラメタである. これは, ビューポートに対応する座標値を UC の値で指定する.

地図投影座標系の場合には, GRPH1 の範囲ではこの情報を必要としないが, GRPH2 のパッケージが「注目している緯度経度範囲」という意味で 参照する場合がある. この場合には, 一般にビューポートとウインドウは一致しない. これらのパラメータは FigのWindow によって 設定/参照できる.

相似変換パラメタ ( SIMFAC, VXOFF, VYOFF )

直交曲線座標系および地図投影変換の場合の, 相似変換 (拡大縮小と原点移動) のパラメタ. 直交曲線座標系の関数は MATH1/CTRLIB, 地図投影座標系の関数は MATH1/MAPLIB の関数によって 定義されている. GRPH1 では, これらの関数が返す値に, SIMFAC を掛けて VC の値に変換し, 原点をビューポートの中心から (VXOFF, VYOFF) 平行移動した位置に 設定する. これらのパラメータは Figのsimtrans によって 設定/参照できる.

地図座標回転パラメタ ( PLX, PLY, PLROT )

地図投影変換は常に経度範囲 [-180潤・!-- MATH: $[-180^\circ , 180^\circ ]$ -->,180潤・!-- MATH: $[-180^\circ , 180^\circ ]$ -->] 緯度範囲 [-90潤・!-- MATH: $[-180^\circ , 180^\circ ]$ -->,90潤・!-- MATH: $[-180^\circ , 180^\circ ]$ -->] に対して行なわれるので, 任意の視点からの投影を行なうためには, 地図投影を行なう前に緯度経度座標を回転させておく必要がある. (PLX, PLY) は投影座標 (TC) の極をおく経度・緯度(UC)を 指定し, PLROT は投影座標の極の回りの回転角を指定する.

これらのパラメタと, 一般に3次元の回転角を指定するのに使われる 「オイラーの角(θ,φ,ψ)」 との関係は, θ=π/2-PLY, φ=PLX, ψ=PLROT である. (オイラーの角の意味については, 数学辞典などを参照のこと.)

これらのパラメータは Figのmapangle によって 設定/参照できる.

実際の操作としては, UC と TC (投影座標) が一致している状態を初期状態として, (1) 北極を中心として TC を φ 回転させる. (経度 PLX の経線を中央経線とする) (2) TC の北極を中央経線の方向に θ回転させる. (経度・緯度 (PLX, PLY) の地点を, TC の北極とする)

  1. TC の北極の回りに, ψ 回転させる. (経度PLX の経線と, TC の中央経線のなす角を PLROT とする. ) となる.

TC から VC への変換は上記の相似変換パラメタによって 決められる. その際地図投影のタイプによって VC 原点に投影される TC の 値が異なる.

図 法 原点に投影される TC 
* 円筒図法 (0, 0) 
* 方位図法 (90, 0) 
* 円錐図法 円錐の頂点 

原点に投影されるこれら TC の値は, オイラーの角を (0,0,0) と したとき, すなわち (PLX,PLY,PLROT)=(λ,90.,0) と した場合に対応する.

通常の円筒図法や円錐図法 (正軸法) で, 経度λの経線を中央経線とするには, (PLX,PLY)=(λ,90.,0) とする.

方位図法において, 経度・緯度 (λ,φ) を中心とした 地図を描くには, (PLX,PLY)=(λ,φ) とし, 必要に応じて PLROT を指定する PLROT=0 の時, 必ずUCの南極が原点の下になる.

横軸法の円筒図法などでは, (PLX,PLY)として赤道上の点を 指定する. PLROT=0 の時, UCの南極が中央経線上に投影される. 例えば, 北極海, 大西洋, 南極環海を一つながりの海として 横軸法で表すには, (PLX, PLY, PLROT) = (60.,0.,-90.) とする.

標準緯度 ( STLAT1, STLAT2 )

円錐図法の投影では上記のパラメタ以外に, 標準緯度が必要である. ランベルト正角円錐図法は標準緯線が二つあるので, STLAT2 も指定しなければならないが, その他の円錐図法は STLAT1 の値のみを使う. これらのパラメータは Fig によって 設定/参照できる.

衛星軌道半径 ( RSAT )

正射図法は本来, 無限遠から地球を眺めたような投影法であるが, オプションとして有限の位置にいる衛星から眺めたような投影 (Satellite View) が可能である. 正射図法でこのオプションを選択するには, RSAT を 1 以上の値に設定する. RSAT は, 地球半径を 1 とした時の「衛星の軌道半径」である. これらのパラメータは Fig によって 設定/参照できる.

U座標系の設定

U座標系で描画するためには, Frame.new を呼んだ後でかつ描画をはじめる前に 変換関数を決めるパラメータを指定しておかなければならない. 指定すべきパラメータは座標系によって異なるが, 主要なパラメタはすべて Fig によって管理されている.

具体的に変換パラメタを設定するには Frame.new のあとで次のように コーディングする.

円錐投影の場合は, これ以外に SGRSET によって標準緯線の緯度 (STLAT1, STLAT2) を与えておく必要がある.

これらのパラメタはどのような順番で指定しても構わない. 変換関数名または略号を指定して, 変換関数番号を返す関数も用意されている.

3次元正規化変換

座標系の種類

3次元のユーザー座標系 (UC) は次のような種類があり, ユーザーはその中から関数番号によって 1 つを選択する.

番号

  1. 直角座標
  2. 円筒座標
  3. 球座標

3 次元座標系は2 次元座標系と異なり対数軸のしていは関数番号ではなく, 対数スイッチ (後述) によって指定する.

3次元正規変換パラメタ

上記の3次元U座標を3次元V座標に変換する正規化変換に必要なパラメータには以下のものがある. これらは Fig により一つずつ設定/参照できる.

ビューポート ( VXMIN3, VXMAX3, VYMIN3, VYMAX3, VZMIN3, VZMAX3 )

直角直線座標 (ITR=1) の変換に必要なパラメタで, ウィンドのパラメタと共に指定する.2次元のビューポートと異なり クリッピングの範囲とは関係がない. これらのパラメータは Figのviewport3d によって 設定/参照できる.

ウインドウ ( UXMIN3, UXMAX3, UYMIN3, UYMAX3, UZMIN3, UZMAX3 )

ITR=1 の時, ビューポートに対応する座標値を UC の値で指定する. これらのパラメータは Figのwindow3d によって 設定/参照できる.

対数スイッチ ( LXLOG3, LYLOG3, LZLOG3 )

ITR=1 の時, それぞれの軸を対数にしたいときに, true にする. これらのパラメータは Figのlog3d によって 設定/参照できる.

相似変換パラメタ ( SIMFAC3, VXORG3, VYORG3, VZORG3)

円筒座標と球座標の時に指定する 相似変換 (拡大縮小と原点移動) のパラメタ. 座標原点を(VXORG3, VYORG3, VZORG3) に設定する. これらのパラメータは Figのoriginによって 設定/参照できる.

座標系の設定

3次元のU座標系で描画するためには, 2次元座標系と同様 Frame.new を呼んだ後でかつ描画をはじめる前に 変換関数を決めるパラメータを指定しておかなければならない. 3次元のパラメタは2次元のパラメタとは独立である.

主要なパラメタはすべて Fig によって管理されている.

具体的に変換パラメタを設定するには Frame.new のあとで次のように コーディングする.

透視変換

透視変換とは, 任意の視点から3次元空間を眺めて遠近感を出す変換である. 電能ライブラリにおいては, 3次元V座標系から2次元R座標系への変換を指す.

一般に, この変換では3次元空間上の平行線は投影された2次元平面上では平行にならない. 視点を無限遠に持っていけば, 平行線は平行線に投影されるが, そのように投影された図形はかえって不自然に感じられる.

透視変換を行なうには, 「視点」 と「焦点中心」を設定しなければならない. 視点とは読んで字の通り3次元空間を眺める位置であり, カメラのレンズの位置であると思えば良い. これに対して, 焦点中心はカメラのフィルム上の焦点ではなく, 注目している点, すなわち視点から「見つめる点」である. この視点と焦点中心を結ぶ線が「視線」 である. 透視変換によって 3次元図形の各点は, その点と視点を結ぶ線が 「投影面」と交わる点に投影される. 地球流体電脳ライブラリでは, 投影面は焦点中心を通り, 視線に垂直な面である.

2次元座標系の場合, 2次元のV座標系を3次元のV座標系の1平面に割り付けることで, 透視変換が可能になる. この際に割り付けることができる平面は, 3次元 X, Y, Z 座標軸のいずれかに垂直な平面であり, 斜めの面に割り付けることはできない. (斜めに見るには視点を動かせば良い)

変換パラメタ

視点 ( XEYE3, YEYE3, ZEYE3 )

3次元空間上での視点. この位置にカメラを構えていると思えば良い.

焦点中心 ( XOBJ3, YOBJ3, ZOBJ3 )

3次元空間内で視線を向ける目標点. カメラを向ける被写体の位置と思えば良い. なお, 焦点中心を通り, 視線(視点と焦点中心を結ぶ線)に垂直な面が 投影面となる. すなわち, 3次元空間上の点(X,Y,Z) は, その点と視点を通る線が 投影面と交わる点に投影される.

画角 ( ANGLE3 )

視点からこの角度で見える投影面上の長さが, 正規直角座標系の単位長さとなる.

傾き ( TILT3 )

Z 軸の傾き. カメラの光軸回りの傾きに相当する. この角度が0 の時, 3次元空間のZ軸は正規直角座標のY軸に並行にな る. 視線がZ 軸と平行な場合には, Y 軸が基準になる.

オフセット ( XOFF3, YOFF3 )

正規直角座標系に投影された焦点中心の位置を, 中心からの位置で指定する. 通常この値は (0,0) で良い.

2次元平面位置 ( IXC3, IYC3, SEC3 )

2次元平面を3次元空間のどこに位置付けるか指定する. IXC3, IYC3 はそれぞれ2次元平面のX座標, Y座標に対応する 3次元座標を (1,2,3) の数字で指定するもので, 数字はそれぞれ X座標, Y座標, Z座標に対応する. これらの数値に負の値を指定すると, 正負を逆に割り当てる. SEC3 は残りの座標の座標値である.

透視変換の設定

透視変換のパラメタも Frame.new を呼んだ後でかつ描画をはじめる前に 変換関数を決めるパラメータを指定しておく. 透視変換のパラメタは, 2次元およおよび3次元正規化変換と独立である.

主要なパラメタはすべて Fig によって管理されている.具体的に変換パラメタを設定するには Frame.new のあとで次のように コーディングする.

Fig.eyepoint=[XEYE3, YEYE3, ZEYE3]
Fig.objpoint=[XOBJ3, YOBJ3, ZOBJ3]

そのほかのパラメタは必要に応じて SGpSETで指定する.

なお, 2次元平面を3次元平面に割り付けるには,

Fig.plane=[IXC3, IYC3, SEC3] 

を呼ぶ. これにより, 2次元平面上の描画ルーチンを 3次元空間内の平面上で使うことができるようになる

出力プリミティブ

図形を構成する基本要素を出力プリミティブという. GRPH1 の出力プリミティブには次のものがある.

このほか, 補助的に次のプリミティブがある.

これら6つのプリミティブのうち, トーンプリミティブ以外の5つはすべて線分で構成される. 線分にはラインインデクスとラインタイプ呼ばれる属性がある. また, トーンには, トーンパターン番号という属性がある. これらの属性は, 以下のように定義されている.

扱われる座標系には曲線座標系も含まれるので, 線分やトーンの境界を指定する座標点の間を直線でつなぐと不都合が起こる場合がある. そこで, 座標点の間をいくつかに分割して, 補間する機能がある. さらに, すべてのプリミティブはある境界でのクリッピングの対象となる.

ラインインデクス

描かれる線分の太さと色はラインインデクスと呼ばれる 3桁の整数(nnm)で指定される. 線の太さと色のうちどちらか一方しか変えられないような デバイスに出力する場合でも, ラインインデクスの異なる2本の線が識別できるようにするため, ラインインデクスは次のような規則にしたがって太さと色に対応づけられる.

線の太さと色が両方変えられるようなシステムでは, 上位2桁(nn=0- 99)が色番号, 下位1桁(m=0- 9)が線の太さを表す. 色番号は, 1から5 までは標準的に

  1. 白または黒 (フォアグラウンド)

と決められているが, それより大きな番号に関しては colormap ファイルの定義による. またm: 1(細) → 9(太)となっている. 線の太さだけが変えられるような出力装置では, m=0のときに限ってnnをmとして読みかえる. また, 線の色だけがかえられるような出力装置では, nn=0のときに限ってmをnnとして読みかえる. したがって線の太さと色を明示したいとき以外は, 1桁のラインインデクスを指定しておけば, とりあえず装置に固有な方法によって線分は識別可能となる.

ラインタイプ

ラインタイプとは, 実線, 破線などの線種である. 1から4までの番号にはあらかじめ以下のタイプが決められている.

  1. 実線
  2. 破線
  3. 点線
  4. 1点鎖線

その他の0以外の整数は下位Nビット (Nは Plotのnbits で決まる値. 初期値は16; 2.4.4節参照) のビットパターンを用いて線種が設定される. たとえばN=16でITYPE = Z'0000F0F0' (16進定数)のとき, '4bits ON 4bits OFF 4bits ON 4bits OFF' のような破線が設定される. 1ビット当たりの長さは Plotのbitlen が決める.

トーン番号

トーンパターン番号には色の情報と, パターンの情報が両方含まれており, 下位3桁がパターン番号, それより上位の桁は色を指定する. 色を指定しない (3桁の番号だけ指定) 場合は, フォアグラウンド (色番号1) と解釈される.

パターン番号の最上位桁は, パターンの種類をあらわす.

  1. ドット
  2. 横線
  3. 斜線 (右上がり)
  4. 縦線
  5. 斜線 (左上がり)
  6. 格子 (縦横)
  7. 格子 (斜め)

2桁めは, ドットの大きさや斜線の太さを0から5の間で指定する. 値が大きくなるにつれてドットは大きくなり斜線は太くなる. 最下位桁はドットや斜線の密度を0から5の間で指定する. 値が大きくなるにつれてドットや斜線の密度があがる. ただし0のときは何も描かれない.

パターン番号として999を指定するとべたぬりとなる.

カラーの端末やカラーのプリンターでは, 色を指定したべた塗りによる塗りわけがしばしばおこなわれる. このプログラムをカラーがサポートされない環境で実行しても, それなりな見わけがつくようにドットによる塗りわけとして表現するようなオプションも用意されている.

これらの組合せ以外の整数値はパターンが定義されていない.

補間とクリッピング

補間機能には次の2つがある.

地図投影関数の場合には, TC において特異点は必ず極になっているので, 大円補間を指定することにより, 特異点付近での線分がより適切に描けるよう になる. この機能に関する Fig のパラメタは以下の通り.

クリッピングは次の場所で行なわれる.

それぞれのクリッピングは, その座標系の座標軸に平行な線で囲まれる矩形領 域に対して行なわれる. したがって, 地図投影の際に極を移動する回転を行なうと, TC におけるクリッピング境界はは経緯線に一致しなくなる.

この機能に関する Fig のパラメタは以下の通り.

LCLIP (L) ビューポートでのクリッピングを 行なうかどうか指定するフラグ (省略値 .FALSE.).

ビューポートにおけるクリッピングは Figのlclip によって ON/OFF できるが, 他のクリッピングは常におこなうようになっている. 正射図法で TC におけるクリッピング境界を省略値のまま使うと, 裏側の線分なども描くことになる. 表側だけを描くためには'TYMIN' を 0 にする.

トーンのクリッピングに関する注意

地球流体電脳ライブラリのトーンは通常 (クリッピングされなければ) 指定された境界線が交わっていても, その図形の内側が塗りつぶされる. 正確には, ソフトフィルは Even Odd Rule にしたがって塗りつぶしが行われ, ハードフィルは機種依存であるが, できるだけソフトフィルに近い規則で塗りつぶされる様になっている.

旧バージョンではハードフィルはクリッピングの対象になっていなかったが, DCL ver.5 からハードフィルもソフト的にクリッピング できるようになった. すなわち, トーンのクリッピングはハードウェアが行うのではなく, 指定された領域とクリッピング範囲が重なる部分を指定する境界点を生成して, そのデータをトーンルーチンに渡すようになっている. このクリップされた境界線を求めるアルゴリズムは, 境界線の向きが決まっていることを前提としている. ここで, 境界線の向きとは境界線を指定する点列を, 時計回りに指定するか, 反時計回りに指定するかということを言う. このアルゴリズムは旧来のトーンの塗りつぶし規則と整合性が悪いが, 地図上 (T 座標系) では境界線の向きがわからないと内側と外側を判断することができない.

具体的にはトーンをクリッピングする手順は次のようになる.

  1. 境界線をクリップして, いくつかの線分に分割する.
  2. 切断された線分を接続しなおし, 閉じた境界を生成する.
IRMODE=0 の時, 反時計回り; IRMODE=1 の時, 時計回り に接続する. 
  1. 生成された境界線に対して旧来の規則にしたがって塗りつぶしを行う. クリッピングされない領域に関しては, 旧来の規則がそのまま適用され, IRMODE は何の意味ももたない. つまり, IRMODE を適当に指定することで, 境界線の外側を塗りつぶすことができるわけではない.

したがって, 境界線が交わるような図形を塗りつぶす時に, クリッピングを行うのは危険である. クリッピングを行う時は, 安全のために 境界線の向きを決めて, 小さな単純な図形にする様にしていただきたい.

なお, 図形の外側を塗りつぶしたい時には, その図形が確実にクリッピングされるように領域を2分割し, クリッピング領域 (ビューポート) を設定しなおして, 2度トーンルーチンを呼ぶ.

レイアウト

R座標系はx軸, y軸ともに0 から 1の値をとり, 描画範囲は 1:1 の縦横比を持つ. これに対して, 実際のデバイスの縦横比はいろいろである. 描画範囲とデバイスの縦横比が一致しない時には, 通常 Frame.new が呼ばれた段階で, デバイスの中央に描画範囲が最大内接するように ワークステーション変換が設定される.

しかし, デバイスの描画領域をいっぱいに使いたかったり, 逆に, 図の回りに適当なマージンをとりたい場合もある. そのような時には, Frame を使う. Frame は基本的にワークステーション変換を設定するもので, 描画範囲の縦横比を変える以外に, マージンにタイトルなどの文字列を書いたり 1枚の紙に複数のフレームを並べたりする機能がある. この様な機能をレイアウト機能と呼ぶ.

このレイアウト機能を使うには, デバイスをオープンした後で Frame.new を呼ぶ前に, 適切な設定を行なう. 例えば,

Dev.open
Frame.div('S', 4, 3)   ! 1ページを4×3に分割する
Frame.new
・・・・・・・・
Frame.new
・・・・・・・・
Dev.close

とすることで, 1ページに12枚のフレームを設定することができる

本ライブラリの構成

次に本ライブラリの構成及び各モジュールのメソッドを示す。

パラメタの取り扱いについて

AdvancedDCLにおけるパ ラメタはDCLで言うところの内部変数である。また、パラメタ設定の機能を持 つサブルーチンのパラメタ化を行い、パラメタとして扱うことが可能である。

パラメタの設定、参照はset、getメソッドを用いて行う。(モジュール名). set( (パラメタ名), 値 ) でパラメタを設定し、(モジュール名).get( (パラ メタ名) ) でパラメタを参照する。また、set、get の代りに (モジュール名). (パラメタ名)= 、 (モジュール名).(パラメタ名) を用いても同じである。以 上まとめると次のようになる。

パラメタ名lineindexの場合、

  1. Plot.set("lineindex", 3)
  2. Plot.lineindex=3
  3. Plot.get("lineindex")
  4. Plot.lineindex

上の場合、1と2は同じでありパラメタlineindexを3に設定する。また、3と4も同じ意味で現在のlineindexを参照する。

また、setメソッドの引数valにnilを指定した場合、もしくはresetメソッドを 用いることによりパラメタ値をリセットすることが可能である。この場合値は 全てDCLのデフォルト値(ない場合はnilに)設定される。

更に、AdvancedDCLではパラメタ設定方法としてテンポラリパラメタとしての パラメタ設定もサポートしている。その方法は描画メソッドのキーワード引 数として用いるものであり以下のように用いる。Plot.draw(x, y, {"lineindex"=>3})ここで設定されたlineindex=3というパラメタはプロット を行うときのみ有効となり、描画が終わると元に戻る。

(補足)AdvancedDCL内部におけるパラメタの扱いについて

AdvancedDCLにおいてパラメタは各モジュール毎にまとめられたものをParameter オブジェクトとしている。すなわち、各モジュールが1つのパラメタオブジェクト を持つことになる。また、各モジュールはそれとは別tempパラメタ用の パラメタオブジェクトをもっている。パラメタオブジェクトはパラメタクラスの オブジェクトであり、パラメタクラスは以下の内部変数を持っている。

具体的には、

valueは長さlenのArrayでなければならず、中身もklassクラスでなければならない。
* Array : [len1, [ len2, Class]]
valueは長さlen1のArrayでなければならず、その中身は長さlen2のArray、さらにその中身はklassクラスでなければならない。

パターンはsetと同じである。ただし、パターン3はない。

NumRu::AdvancedDCL::Common

Commonモジュールとは

Commonモジュールは、共通パ ラメタを管理するモジュールである。全体パラメタとはDCL(rbdcl)全体に影響 を及ぼすパラメタでありCommonモジュールで管理される。また、DCL(rbdcl)に は同様の機能を持つパラメタが幾つか存在するが、それらのパラメタを同時に 設定するのがCommonモジュールの持つ役割である。Commonパラメタlineindex を例に挙げると、Common.lineindex= でPlotやBoxなどのlineindexを同時に変 更可能である。ただし、あらかじめPlot.lineindex= などで個々のパラメタを 設定している場合はそちらが優先となる。

パラメタ名 パラメタの型(モジュール名)

iundef (Fixnum) (Axis, Arrow, Bar, Box, Contour, Errbar, Gap, Fig, Lin, Mark, Plot, ThreeD, Tone, Vector)

不定であることを示す整数型の値(初期値は-999)

rundef (float) (Arrow, Bar, Box, Contour, Errbar, Gap, Fig, Mark, Plot, ThreeD, Tone, Vector)

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) (Arrow, Bar, Box, Contour, Errbar, Gap, Fig, Mark, Plot, ThreeD, Tone, Vector)

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) (Arrow, Bar, Box, Contour, Errbar, Gap, Fig, Mark, Plot, ThreeD, Tone, Vector)

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) (Arrow, Bar, Box, Contour, Errbar, Gap, Mark, Plot, Fig, ThreeD, Tone, Vector)

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

lineindex (Numeric) (Plot, Bar, Box, ThreeD, Vector)

折れ線のラインインデクスを指定する.

linetype (Numeric) (Bar, Box, Plot)

折れ線のラインタイプを指定する.

indexmj (Fixnum) (Contour, Map)

major lineのラインインデクス

indexmn (Fixnum) (Contour, Map)

minor lineのラインインデクス

uref (Float) (Box, Bar, Gap, Errbar)

Box、Bar、Gap、Errorにおいて、描画メソッドの引数x1, y1 または x2, y2 に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.

itpat (Array[2, Numeric]) (Bar, Box, Gap)

内部領域を塗るトーンパターンを指定する. ここで設定する番号は Gap.tone,Bar.tone,Box.tone で使われる.

npmskip (Fixnum) (Mark, ThreeD)

MarkやThreeDでマーカーを描くとき,何個に1個の割合で描くかを指定する(初期値は1;すべてマーカーを描く.Mark.drawがバッファリングする最大個数50以下でなければならない).

marktype (Numeric) (Mark, ThreeD)

Mark.draw、ThreeD.markなどで描くマーカータイプを設定する.(初期値は1)

markindex (Numeric) (Mark, ThreeD)

Mark.draw、ThreeD.markなどで描くマーカーのラインインデクスを設定する. (初期値は1)

marksize (Numeric) (Mark, ThreeD)

Mark.draw、ThreeD.markなどで描くマーカーの大きさを設定する. (初期値は0.01)

frtype (Numeric) (Bar, Box)

枠のラインタイプを指定する. 設定する属性は Bar.frame,Box.frame で使われる.

frindex (Numeric) (Bar, Box)

枠のラインインデクスを指定する. 設定する属性は Bar.frame,Box.frame で使われる.

variablerange (Numeric) (Bar, Box, Gap, Error)

独立変数の定義域を指定する. (注)現在、DCLにおいては利用されていない。

xttl (Float) (Contour, Vector)

グラフの下部マージンに書くメッセージの位置を決める内部変数. -1 から +1 までの実数値をとりうる. -1 のとき左よせ, 0 のときセンタリング, +1 のとき右よせする(初期値は 0 ).

nlev (Fixnum) (Contour, Tone)

コンターレベルを自動的に生成するとき,この内部変数を参照して約 nlev 本のコンターレベルを生成する(初期値は12).

icycle (Fixnum) (Contour, Tone)

minor line を major line の間に何本引くかを指定する. すなわち icycle で参照する値に1本の割合で major line を引き, 残りは minor line を引く(初期値は2).

なお、Array[2, Float]などという表記は中身がFloat型の配列である長さ2のArrayであることを意味している。

また、これらのパラメタはメソッドとして用いることができる。すなわち、Common.frtypeでパラメタfrtypeの参照が、Common.frtype=でパラメタfrtypeの変更ができる。

Common.set(key, val)

パラメタの設定を行う。

引数

使用例

Common.set("frindex", 3)      # 枠のラインインデクスを3に設定する

Common.get(key)

パラメタを参照する。

引数

使用例

Common.get("frindex")      #枠のラインインデクスを参照する

Common.help_params

Commonで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Common.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

NumRu::AdvancedDCL::Dev

本モジュールについて

Devモジュールはデバイス関連のモジュールであり、また全体パラメタの管理も行う。 全体パラメタとはDCL(rbdcl)全体に影響を及ぼすパラメタである。

Dev の機能には「基本機能」と「拡張機能」があり, 基本機能はすべてのデバイスにおいて実現される (と仮定している) が, 拡張機能はデバイスによって実現できないものもある.

上位ルーチンは拡張機能が使えない場合があることを想定して, コーディングされなければならない. これらの機能が使えるかどうかは, Dev を通して取得できる.

線の太さと色はデバイスの能力によって切替えられる. また, ハードフィルのできないデバイスでは, ソフトフィルによる網かけに自動的に変更する.

イメージ表示機能とポインティング機能に関しては代替処置がないので, これらの機能を使う時には注意が必要である.

なお, Dev の管理するパラメタは, デバイスのオープン時にすべて読み込まれて, その後は参照されないので, Devのパラメタは Dev.openの前に設定しなければならない.

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

全ての出力装置に共通なパラメタ

maxwnu (Fixnum) <SWPACK>

Dev が実現している出力装置の数、標準ライブラリにおける値は3(X,PS,Tek)である。

iws (Fixnum) <SWPACK>

オープンする装置番号。1から maxwnu の間の値を指定する。(初期値は1)。

wsname01, wsname02, wsname03 (String) <SWPACK>

ワークステーション名。標準ライブラリにおける値は、wsname01 = X (Xサーバー),wsname02 = PS (ポストスクリプト), wsname03 = Tek (テクトロ端末)となっている。

Xサーバ(X)及びポストスクリプト(PS)に共通なパラメタ

iwidth (Fixnum) <SWPACK>

イメージウィンドウの横方向のサイズ(省略値は900)

iheight (Fixnum) <SWPACK>

イメージウィンドウの縦方向のサイズ(省略値は650).Xでは、iwidth, iheight のウィンドウがオープンされる。PSでは、縦横比が iheight : iwidth の描画領域が最大描画領域に最大内接するように用意されている。

Xサーバに関するパラメタ

iposx (Fixnum) <SWPACK>

ウィンドウの位置を示すX座標。(省略値はー999)。

iposy (Fixnum) <SWPACK>

ウィンドウの位置を示すY座標。(省略値はー999)。 (iposx, iposy)=(-999,-999)のときユーザーがマウスで指定する。

lwait (true or false) <SWPACK>

改ページのタイミングで一時停止するかどうかを指定する。trueなら一時停止する; false なら一時停止しない。(省略値は true)

lwait0 (true or false) <SWPACK>

デバイスをオープンするタイミングで一時停止するかどうかを指定する。true なら一時停止する; false なら一時停止しない。(省略値は false)

lwait1 (true or false) <SWPACK>

デバイスをクローズするタイミングで一時停止をするかどうかを指定する。true なら一時停止する; false なら一時停止しない。(省略値は true)

ldump (true or false) <SWPACK>

Xのダンプファイル(xwd)を作成するかどうかを指定する。true なら作成する; false なら作成しない。(省略値は false)

lalt (true or false) <SWPACK>

裏画面で描画するかどうかを指定する。true なら裏画面で描画する;false なら裏画面で描画しない。(省略値は false )

lkey (true or false) <SWPACK>

一時停止しているときに、キーボードからの指定を有効にするかどうかを指定する。 true なら有効にする; false なら有効にしない。(省略値は true)

bitmap (String) <SWPACK>

ビットマップを収めたファイル名。標準ライブラリにおける値は'bitmap'。

ポストスクリプト(PS)に関するパラメタ

lcorol (true or false) <SWPACK>

カラー対応したPSファイルを出力するかどうかを指定する。true ならカラー用のPSファイルを出力する;false ならモノクロ用のPSファイルを出力する。(省略値は true)

lsep (true or false) <SWPACK>

出力ファイルを1ページごとに分割して出力するかどうかを指定する。true なら分割する; false なら分割しない。(省略値は false)

lprint (true or false) <SWPACK>

作成された出力ファイルをプリンターに直接出力するかどうかを指定する。true ならプリンターに直接出力する;false なら出力しない。(省略値は false)

lpr (String) <SWPACK>

lprint を true としたときに用いられるプリントコマンドを指定する。(省略値は'lpr')

テクトロ端末(Tek)に関するパラメタ

lwait (true or false) <SWPACK>

改ページのタイミングで一時停止するかどうかを指定する。trueなら一時停止する; false なら一時停止しない。(省略値は true)

nlnsize (Fixnum) <SWPACK>

テクトロ画面のうちコンソール部分の1行の長さわ指定する。(省略値は21)

AdvancedDCL全体のパラメタ

font1, font2 (String) <SWPACK>

フォントファイル名. 標準ライブラリにおける値は、font1 = 'font1u', font2 = 'font2u'.

fname (String) <SWPACK>

出力ファイル名(省略値は'dcl')。この値が'*'あ

るいは空白のとき、現在実行中のプログラム名が用いられる。Xのダンプファ イル名、PSの複数ページ出力のためのファイル名として用いられるとき、この 名前に'_nnn' (nnnはページ番号)をつけたものとなる。さらにXのダンプファ イル名の場合は'.xwd'のサフィックスがつく;PSファイル名の場合は'.ps'の サフィックスがつく。

title (String) <SWPACK>

タイトル名(省略値は'*')。

この値が'*'あるいは空白のとき、DCLVNM(DCL の MISC1/MISKLIB 参照)が返 すバージョン名となる。Xの場合、このタイトル名はウインドウのタイトル名 として用いられる;PSの場合、タイトル名はコメント部分のCreater部分に書 かれる。

clrmap (String) <SWPACK>

カラーマップを収めたファイル名。標準ライブラリにおける値は'colormap'。

cl2tn (String) <SWPACK>

カラー番号を

トーンパターン番号に読み替えるためのファイル名。標準ライブラリにおける 値は'cl2tnmap'.

maxmsg (Fixnum) <SYSLIB>

出力する最大メッセージ数 (初期値は20).

msglev (Fixnum) <SYSLIB>

出力するメッセージレベル. 0以下ならすべてのレベルのメッセージを出力

する; 1なら警告, エラーメッセージを出力する; 2以上ならエラーメッセージ だけ出力する (初期値は0).

nlnsize (Fixnum) <SYSLIB>

一行に出力するメッセージの 最大文字数(初期値は78). メッセージを出力する

際, 各行の第一カラムにはブランクを書き出すので, 実際の一行の長さは nlnsize+1 である.

lepsl (true or false) <SYSLIB>

実数値を比較するとき, 誤差を含めた判断をするかどうかを指定する (第8,9,

10,11章参照). trueなら誤差を含めた判断をする; falseなら誤差を含めた判断を しない (初期値は false).

repsl (Float) <SYSLIB>

誤差を含めた判断をするときの相対誤差の基準値. システム依存(備考参照).

rfact (Float) <SYSLIB>

誤差を含めた判断をするとき, 相対誤差の基準値にかけるスケーリングファ

クター (初期値は1.0). repsl×rfact が相対誤差として用いられる.

  1. repsl があらわす相対誤差の基準値は, 実数表現の相対誤差の最大値の10倍

とする. この10倍という値には任意性があるが計算結果の精度の目安 として安 全率を10倍としたものである. 実数表現の相対誤差は内部表現の形から 論理的 にもとめることができるが, 実際に実数の仮数部の最下位 bit を on/off する ことでも求めることができる. 1語の中の仮数部の位置はシステムによるが,1語 の最下位 bit が仮数部の最下位 bit であることが多い.

  1. システムに依存するパラメーターのうち repsl は大きく分けて, メインフ

レーム系の大型計算機とUNIX系の計算機とでは 次の値をとることが多い.

メインフレーム系       UNIX系
     0.95E-5           1.2E-6

これらのパラメタはメソッドとして用いることができる。すなわち、Dev.iwidth でパラメタ iwidth の参照が、Dev.iwidth= でパラメタ iwidth の変更ができる。

Dev.open(device="X", rot=false)

図形出力装置をオープンする(初期化処理をおこなう).

引数

備考

  1. このメソッドはGROPNを呼んでいる。
  2. また,パラメタ lcntl を true にする.

Dev.close

図形出力装置をクローズする(終了処理をおこなう).

引数 なし

備考

  1. このメソッドはGRCLSを呼んでいる。

Dev.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Dev.set("iwidth", 1000)      # イメージウィンドウの横方向のサイズを1000に設定

Dev.get(key)

パラメタを参照する。

引数

使用例

Dev.get("iwidth")      # イメージウィンドウの横方向のサイズを参照する。

Dev.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Dev.reset("iwidth")      # イメージウィンドウの横方向のサイズを初期値に戻す

Dev.help_params

Devで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Dev.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

NumRu::AdvancedDCL::Page

本モジュールについて

Pageモジュールは図のデザインに関するモジュールである。

パラメタ パラメタ名 パラメタの型 対応するDCLパッケージ

index (Fixnum) <SGPACK>

第1レベル目のマージンに描く文字列とコーナーマークのラインインデクス(初期 値は1).

lcorner (true or false) <SGPACK>

コーナーマークを描くかどうかを指定する. true ならコーナーマークを描く; false なら描かない(初期値は true).

corner (Float) <SGPACK>コーナーマークの長さ(初期値は0.01).単

位は第1レベル目の長辺を1とする.

lwide (true or false) <SGPACK>文字列

(タイトル)を描く第1レベル目のマージンの定義をする. true のときマージン の幅を第1レベル目のフレーム幅いっぱいにとる; false のとき横方向のマー ジンを取った残りの部分をマージンの幅とする(初期値は false).

xpad

(Float) <SGPACK>第1レベル目のマージンに描く文字列の左右にとるすきまの 和を文字高を単位として指定する(初期値は1.0).

ypad (Float) <SGPACK>第

1レベル目のマージンに描く文字列の上下にとるすきまの和を文字高を単位と して指定する(初期値は1.0).

また、これらのパラメタはメソッドとして用いることができる。すなわち、 Page.indexでパラメタindexの参照が、Page.index=でパラメタindexの変 更ができる。

Page.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Fig.set("index", 3)      # インデクスを3に設定する

Page.get(key)

パラメタを参照する。

引数

使用例

Page.get("index")      # インデクスを参照する

Page.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Page.reset("index")      # インデクスを初期値に戻す

Page.help_params

Pageで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Page.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Page.size(csize)

A系列およびB系列の紙の大きさで, 第1レベル目のフレームを再設定する.

引数

備考

  1. このメソッドは SLSIZE を呼んでいる。
  2. フレームの大きさはA系列またはB系列(A4,B5など)で指定する. フレームの向きは,

    • 縦長に割り付けるなら 'T'ate または 'P'ortrait
    • 横長に割り付けるなら 'Y'oko または 'L'andscape

    とする. また 'A'utoとすると DCL(rbdcl) の SLINIT で指定された最大作図範囲の 縦・横比を見て, 横長なら 'Y'oko, 縦長なら 'T'ate として割り付ける. たとえばA4の大きさで横長のフレームを設定するには 'A4Y'と指定する.

Page.form(dxa, dya)

縦横の長さを実長で指定して, 第1レベル目のフレームを再設定する.

引数

備考

  1. このメソッドは SLFORM を呼んでいる。

Page.settitle(title, cside, px, py, ht, nt)

1レベル目のトップマージンまたはボトムマージンに描く文字列を設定する.

引数

pyについては,

-1.0:下よせ
 0.0:中央あわせ
+1.0:上よせ

備考

  1. このメソッドは SLSTTL を呼んでいる。
  2. このルーチンは文字列を設定するだけで, 実際に文字列を描くのは DCL(rbdcl)の SLPTTL である. SLPTTL は Frame.newのなかで呼ばれるので,ユーザーはSLPTTLを直接呼ぶ必要はない. またこのとき同時にSLPCNRが最大作画領域の4隅に コーナーマークをつける. なお Page.settitle はほかの SGPACK のルーチンと違って, Frame.newの あとでも呼べる. こうすることによってページごとに異なるタイトルを書くことができる. Page の管理するパラメタ lcorner を false とするとコーナーマークを描かない(初期値は.TRUE.); また ltitle を false とするとタイトルを描かない (初期値は true).
  3. 設定できる文字列の最大数は5である.
  4. 設定した文字列を無効にしたいときは

    Page.deltitle(nt) 

    とすると第nt番目の設定が無効になる.

Page.deltitle

Frame.settitleで設定した文字列を無効にする。

引数

なし

備考

なし

Page.pwvr(index)

最大作画領域の枠を描く.

引数

備考

  1. このメソッドは SLPWVR を呼んでいる。
  2. index は1以上でなければならない. ただし index が0のとき, メッセージは出力されるがなにもしない.

NumRu::AdvancedDCL::Frame

本モジュールについて

Frameモジュールは図を描く枠に関するモジュールである。

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

lfull (true or false) <SGPACK>

Frame.new で設定するワークステーションビューポートを作画可能な範囲いっぱいにとるかどうかを指定する. true のときいっぱいにとる; false のとき正方形にとる(初期値は false )

また、これらのパラメタはメソッドとして用いることができる。すなわち、Frame.lfull でパラメタ lfull の参照が、Frame.lfull= でパラメタ lfull の変更ができる。

Frame.new

新しい作画領域を設定するとともに, 新しい図を描くために必要な初期化をする.

引数

なし

備考

  1. このメソッドは GRFRM を呼んでいる。
  2. GRFRM は変換関数に関する内部変数をすべて「未定義」にするとともに, DCL(rbdcl)における UZPACK, USPACK の初期化をおこなったのち, SGFRM を呼ぶ.

Frame.div(cform, ix, iy)

フレームの分割をおこない, 次のレベルのフレームを定義する.

引数

備考

  1. このメソッドは SLDIV を呼んでいる。
  2. Frame.div は2回まで呼ぶことができる. すなわち最大のレベル数は3である.
  3. 各レベルのフレームの総計は40である.

Frame.mgn(xl, xr, yb, yt)

今のレベルのフレームすべてについて指定したマージンをとる.

引数

備考

  1. このメソッドは SLMGN を呼んでいる。
  2. 0≧xl, xr, yb, yt≦1かつ, xl+xr<1, yb+yt<1で なければならない.

Frame.rat(rx, ry)

今のレベルのフレームすべてについて, 縦横比を指定してフレームが最大内接するようにマージンをとる.

引数

備考

  1. このメソッドは SLRAT を呼んでいる。
  2. rx, ry>0でなければならない.

Frame.pvpr(index)

ビューポートの枠を描く.

引数

備考

  1. このメソッドは SLPVPR を呼んでいる。
  2. index は1以上でなければならない. ただし index が0のとき, メッセージは出力されるがなにもしない.

Frame.pwwr(index)

ワークステーションウインドウの枠を描く.

引数

備考

  1. このメソッドは SLPWWR を呼んでいる。
  2. index は1以上でなければならない. ただし index が0のとき, メッセージは出力されるがなにもしない.

Frame.pvpc(index, rc)

ビューポートのコーナーマークを描く.

引数

備考

  1. このメソッドは SLPVPC を呼んでいる。
  2. index は1以上でなければならない. ただし index が0のとき, メッセージは出力されるがなにもしない.
  3. rc は0より大きくなければならない. ただし rc が0のとき, メッセージは出力されるがなにもしない.

Frame.pwwc(index, rc)

ワークステーションウインドウのコーナーマークを描く.

引数

備考

  1. このメソッドは SLPWWC を呼んでいる。
  2. index は1以上でなければならない. ただし index が0のとき, メッセージは出力されるがなにもしない.
  3. rc は0より大きくなければならない. ただし rc が0のとき, メッセージは出力されるがなにもしない.

Frame.pwwc(index, rc)

最大作画領域のコーナーマークを描く.

引数

備考

  1. このメソッドは SLPWVC を呼んでいる。
  2. index は1以上でなければならない. ただし index が0のとき, メッセージは出力されるがなにもしない.
  3. rc は0より大きくなければならない. ただし rc が0のとき, メッセージは出力されるがなにもしない.

Frame.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Frame.set("lfull", true)      # フレームを作画可能範囲一杯にとるよう設定する。

Frame.get(key)

パラメタを参照する。

引数

使用例

Frame.get("lfull")      # フレームを作画可能範囲一杯にとるかどうか参照する。

Frame.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Frame.reset("lfull")      # lfull を初期値に戻す

Frame.help_params

Frameで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Frame.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ xラメタを陽にsyncできるためのメソッドである。

NumRu::AdvancedDCL::Fig

本モジュールについて

Figモジュールは各種変換に関するモジュールである。

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

mapangle (Float(3)) <GRPACK::GRSMPL>

地図投影の極の設定.

simtrans (Float(3)) <GRPACK::GRSSIM>

相似変換の設定.

transnum (Fixnum) <GRPACK::GRSTRN>

正規化変換の変換関数番号を指定する.

transnum3d (Fixnum) <SCPACK::SCSTRN>

3次元図における正規化変換の変換関数番号を指定する.

viewport (Float(4)) <GRPACK::GRSVPT>

正規化変換のためのビューポートを設定する.

viewport3d (Float(6)) <SCPACK::SCSVPT>

3次元図における正規化変換のためのビューポートを設定する.

window (Fixnum(4) or Float(4)) <GRPACK::GRSWND>

ウインドウの設定.

window3d (Fixnum(6) or Float(6)) <SCPACK::SCSWND>

3次元図におけるウインドウの設定.

l2to3 (true or false) <SGPACK>

2次元透視変換の指定. l2to3 が true なら2次元平面を3次元空間に割り付ける; false ならV座標とR座標を同一のものとして扱う.(初期値は false ).

eyepoint (Fixnum(3) or Float(3)) <SCPACK::SCSEYE>

視点の設定.

objpoint (Fixnum(3) or Float(3)) <SCPACK::SCSOBJ>

焦点の設定.

plane (Fixnum(3) or Float(3)) <SCPACK::SCSPLN>

2次元平面の割付.

mapwindow (Fixnum(4) or Float(4)) <GRPACK::GRSTXY>

地図投影におけるクリッピング境界を設定する。

origin (Fixnum(4) or Float(4)) <SCPACK::SCSORG>

スケーリングファクターと原点の設定.

log3d (Fixnum(3) or Float(3)) <SCPACK::SCSLOG>

対数軸の設定.

contactpoint (Fixnum(3) or Float(3)) <UMPACK::UMSCNT>

投影面の「接点」を指定する. contactpoint=[uxc, uyc, rot] のとき、

circlewindow (Float(3)) <UMPACK::UMSCWD>

円形のウィンドウを設定する.

stlat1, stlat2 (Float) <SGPACK>

標準緯度(初期値は0.0, 0.0).

lclip (true or false) <SGPACK>

ビューポートでのクリッピングのフラグ(初期値は false ).

ldeg (true or false) <SGPACK>

単位系の指定. ldeg が true なら度を単位とする; false ならラジアンを単位とする(初期値は true).

iundef (Fixnum) <SYSLIB>

不定であることを示す整数型の値(初期値は-999)

rundef (float) <SYSLIB>

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) <SYSLIB>

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) <SYSLIB>

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) <SYSLIB>

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

なお、Float(n)などという表記は中身がFloatである長さ n の配列であることを意味し、Array[2, Float]などという表記は中身がFloat型の配列である長さ2のArrayであることを意味している。

また、これらのパラメタはメソッドとして用いることができる。すなわち、Fig.windowでパラメタwindowの参照が、Fig.window=でパラメタwindowの変更ができる。

Fig.new

新しい図を描くために必要な初期化をする.

引数

なし

備考

  1. このメソッドは GRFIG を呼んでいる。
  2. このルーチンは変換関数に関する内部変数をすべて「未定義」に するとともに, DCL(rbdcl)における UZPACK, USPACK の初期化をおこなう. 一つのフレーム内に複数の図を描くとき, 2つ目以降の図を描き始める 前に, そのつど, このルーチンを呼ばなければならない.

Fig.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Fig.set("window", [0.0, 1.0, 0.0, 1.0])      # ウィンドウを[0.0, 1.0, 0.0, 1.0]に設定する

Fig.get(key)

パラメタを参照する。

引数

使用例

Fig.get("window")      # ウィンドウを参照する

Fig.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Fig.reset("window")      # ウィンドウを初期値に戻す

Fig.help_params

Figで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Fig.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Fig.inclpoint(xincl, yincl)

ウインドウ範囲に含めたいデータを指定する.

引数

備考

  1. このメソッドは USSPNT を呼んでいる。
  2. 絵を描く前にに何度でも呼ぶことができる. (複数の折れ線グラフを描く場合など.)
  3. X, Y の長さは必ずしも一致する必要はない。
  4. X または Y に パラメタ "rundef" もしくは nil を指定した時には, その座標値に関しては何もしない.

Fig.included_range

Fig.inclpointにより設定されているウィンドウ範囲を参照する。

引数

なし

備考

  1. このメソッドはUSRGETにより内部変数"xdtmin", "xdtmax", "ydtmin", "ydtmax"に設定されている値を参照し、[xmin, xmax, ymin, ymax]の形で返す。

Fig.sname2lname(sname)

変換関数の略称から名称を求める.

引数

使用例

Fig.sname2lname('MER')       #メルカトル図法の略称'MER'から名称'MERCATOR'を得る。

Fig.sname2trn(sname)

変換関数の略称から変換関数番号を求める.

引数

使用例

Fig.sname2trn('MER')       #メルカトル図法の略称'MER'から変換関数番号11を得る。

Fig.lname2sname(lname)

変換関数の名称から略称を求める.

引数

使用例

Fig.lname2sname('MERCATOR')       #メルカトル図法の名称'MERCATOR'から略称'MER'を得る。

Fig.lname2trn(lname)

変換関数の名称から変換関数番号を求める.

引数

使用例

Fig.lname2trn('MERCATOR')       #メルカトル図法の名称'MERCATOR'から変換関数番号11を得る。

Fig.trn2sname(num)

変換関数番号から略称を求める.

引数

使用例

Fig.trn2sname(11)       #メルカトル図法の変換関数番号11から略称'MER'を得る。

Fig.trn2lname(num)

変換関数番号から名称を求める.

引数

使用例

Fig.trn2lname(11)       #メルカトル図法の変換関数番号11から名称'MERCATOR'を得る。

NumRu::AdvancedDCL::Axis

本モジュールについて

Axisモジュールは自動で軸を描くためのモジュールである。

座標軸の場所

Axis, Axis::Lin, Axis::Log を使うためには, あらかじめ変換関数番号が 1〜4 (直角直線座標系)の正規化変換が設定されていなければならない ( 本ライブラリの基本構造 参照). たとえば

Fig.viewport=[VXMIN,VXMAX,VYMIN,VYMAX]
Fig.window=[UXMIN,UXMAX,UYMIN,UYMAX] 
Fig.transnum=ITR

が呼んであるとする. このとき Axis::Lin は次の場所に座標軸を設定できる.

X軸については

'B'ottom - (UXMIN, UYMIN)と (UXMAX, UYMIN)を結ぶ線
'T'op - (UXMIN, UYMAX)と (UXMAX, UYMAX)を結ぶ線
'U'ser - (UXMIN, UYUSER)と (UXMAX, UYUSER)を結ぶ線

Y軸については

'L'eft - (UXMIN, UYMIN)と (UXMIN, UYMAX)を結ぶ線
'R'ight - (UXMAX, UYMIN)と (UXMAX, UYMAX)を結ぶ線
'U'ser - (UXUSER, UYMIN)と (UXUSER, UYMAX)を結ぶ線

X軸に関する'B', 'T', 'U', Y軸に関する'L', 'R', 'U'は, 座標軸の構成要素(次節参照)を作画する場所を示すためのパラメーター(CSIDE)として用いられる. UXUSER, UYUSERはパラメタ uxuser, uyuser を設定して初めて有効となる(初期値は不定). 座標軸を設定できるこれらの場所は, X軸については Axis::Lin.xsaxs によって Y方向に平行移動することができる; Y軸については Axis::Lin.ysaxs によって X方向に平行移動することができる.

座標軸の構成要素とその属性

Axis::Lin が作画する座標軸の構成要素には次のものがある (カッコ内はその構成要素を描くサブルーチン名).

  1. 軸を示す線分 (Axis::Lin.xpaxs/ypaxs)
  2. 目盛 (Axis::Lin.xptmk/yptmk)
  3. ラベル

  4. タイトル (Axis::Lin.xpttl/ypttl)

それぞれの構成要素は次のような属性を持っている.

  1. 軸を示す線分については

    a. 線分のラインインデクス <ISLCT>
  2. 目盛については

    a. 目盛の長さ <ISLCT>
    b. 目盛を描く線のラインインデクス <ISLCT>
  3. ラベルについては

    a. 文字の高さ <ISLCT>
    b. 文字列の回転角 <CSIDE>
    c. 文字列のセンタリングオプション <CSIDE>
    d. 文字列を描く線のラインインデクス <ISLCT>
  4. タイトルについては

    a. 文字の高さ <ISLCT>
    b. 文字列の回転角 <CSIDE>
    c. 文字列のセンタリングオプション <引き数>
    d. 文字列を描く線のラインインデクス <ISLCT>

これらの属性の指定方法および <ISLCT>, <CSIDE>, <引き数>の 意味については次節で述べる.

座標軸の設定を'U'ser以外でおこなった場合, ラベルとタイトルは常にウインドウの外側に向かって描かれる. 'U'serで設定をおこなった場合, ラベルとタイトルを軸のどちら側に書くかは 内部変数'IFLAG'が決める.

属性の指定方法

Axis::Lin の各サブルーチンにはISLCT, CSIDEという2つの引き数がある. この2つの引き数およびその他の引き数が各構成要素の属性を決める.

  1. ISLCTは0,1,2の値をとりうる. 3.3節で述べた 属性のうち<ISLCT>とあるものは,この引き数によって定まるパラメタを参照して決まる. ISLCT=0,1,2の具体的な意味は,

たとえば, 軸を示す線分のラインインデクスについては, ISLCT=0,1,2それぞれについて indext0, indext1, indext2 というパラメタがあって(初期値は順に, 不定, 1, 3) これを参照して属性が決まる. 以下では以上の表現をまとめて次のように略記する. -- 「パラメタ index(i) で指定してある値を参照してラインインデクスの属性が決まる(初期値は, 不定, 1, 3)」. これらのパラメタは Axis::Lin.get, Axis::Lin.set によって 参照/変更できる.

  1. CSIDEは構成要素を描く場所を指定するとともに, 描く場所に依存する属性を決める. 前節で述べた属性のうち<CSIDE>とあるものは, この引き数によって定まるパラメタを参照して決まる. たとえば, X軸につけるタイトルの回転角については, CSIDE='B','T','U'それぞれについて irotcxb, irotcxt, irotcxu というパラメタがあって(初期値は順に, 0, 0, 0) これを参照して属性が決まる. 以下では以上の表現をまとめて次のように略記する. -- 「パラメタ irotcx(s) で指定してある値を参照して, X軸につけるタイトルの回転角に関する属性が決まる(初期値は, 0, 0, 0)」. また, Y軸につけるタイトルの回転角については, CSIDE='L','R','U'それぞれについて irotcyl, irotcyr, irotcyu というパラメタがあって(初期値は順に, 1, 1, 1) これを参照して属性が決まる. 以下では以上の表現をまとめて次のように略記する. -- 「パラメタ irotcy(s) で指定してある値を参照して, Y軸につけるタイトルの回転角に関する属性が決まる(初期値は, 1, 1, 1)」. さらに irotcx(s) と irotcy(s) をまとめて次のように略記する. -- 「パラメタ irotc(zs) で指定してある値を参照して,軸につけるラベルの回転角に関する属性が決まる(初期値は, 0, 0, 0, 1, 1, 1)」.
  2. 前節で述べた属性のうち<引き数>とあるものは, 引き数として直接指定することによって決まる.

前節で述べた属性は具体的に次のように決まる.

  1. 軸を示す線分については

    a. 線分のラインインデクス <ISLCT> 
    パラメタ indext(i)で指定してあるラインインデクスを用いて線分を描く (初期値は, 不定, 1, 3). 
  2. 目盛については

    a. 目盛の長さ <ISLCT> 

パラメタ rsizet(i)で指定してある長さ(単位はV座標系)の目盛を描く (初期値は, 不定, 0.007, 0.014).

b. 目盛を描く線のラインインデクス <ISLCT> 

パラメタ indext(i)で指定してあるラインインデクスを用いて目盛を描く (初期値は, 不定, 1, 3). (注:目盛を描く向きはパラメタ inner が決める. inner が正のとき内側に向かって目盛を描く; 負のとき外側に向かって目盛を描く(初期値は+1). )

  1. ラベルについては

    a. 文字の高さ <ISLCT> 

パラメタ rsizel(i) で指定してある高さ(単位はV座標系)の文字を描く (初期値は, 不定, 0.021, 0.028).

b. 文字列の回転角 <CSIDE> 

パラメタ irotl(zs) で指定してある回転角オプションを使ってラベルを描く(初期値は, 0, 0, 0, 0, 0, 0). 回転角オプションとは,ラベルを描くときの回転角を90度が 1単位の整数値で指定するものである. (たとえば90度のとき1, -90度のとき-1と指定する.)

c. 文字列のセンタリングオプション <CSIDE> 

パラメタ icent(zs) で指定してあるセンタリングオプションを使ってラベルを描く(初期値は, 0, 0, 0, +1, +1, +1). センタリングオプションとは, ラベルを描くときに左よせ(-1)するか, センタリング(0)するか, 右よせ(+1)するかを指定するものである.

d. 文字列を描く線のラインインデクス <ISLCT> 

パラメタ indexl(i) で指定してあるラインインデクスを用いて文字を描く (初期値は, 不定, 3, 3).

  1. タイトルについては

    a. 文字の高さ <ISLCT> 

パラメタ rsizec(i) で指定してある高さ(単位はV座標系)の文字を描く (初期値は, 不定, 0.028, 0.035).

b. 文字列の回転角 <CSIDE> 

パラメタ irotc(zs) で指定してある回転角オプションを使ってラベルを描く(初期値は, 0, 0, 0, +1, +1, +1). 回転角オプションとは, タイトルを描くときの回転角を90度が 1単位の整数値で指定するものである. (たとえば90度のとき1, -90度のとき-1と指定する. )

c. 文字列のセンタリングオプション <引き数> 

引き数で指定してあるセンタリングオプションを 使ってタイトルを描く. センタリングオプションとは, ラベルを描くときに左よせ(-1)するか, センタリング(0)するか, 右よせ(+1)するかを指定するものである.

d. 文字列を描く線のラインインデクス <ISLCT> 

パラメタ indexl(i) で指定してあるラインインデクスを用いて文字を描く (初期値は, 不定, 3, 3).

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

ireset(Fixnum)<USPACK>

USINITで自動的にパラメータを リセットすることを指定する変数. 初期値は1.

USINITは通常 Frame.newから呼ばれる.

lxinv(true or false)<USPACK>

TRUEの時, X軸の左右を逆にする.

lyinv(true or false)<USPACK>

TRUEの時, Y軸の上下を逆にする.

lmatch(true or false)<USPACK>

TRUEの時, X軸とY軸のラベル間隔及び 文字間隔を同じにする.

rmrgn(Float)<USPACK>

マージンの幅. 単位は文字幅. (9.524)

xfac*(Float)<USPACK>

X座標のファクター値 (999.)

yfac*(Float)<USPACK>

Y座標のファクター値 (999.)

xoff*(Float)<USPACK>

一様X座標のオフセット値 (999.)

yoff*(Float)<USPACK>

一様Y座標のオフセット値 (999.)

dxt*(Float)<USPACK>

一様X座標の目盛の間隔 (999.)

dyt*(Float)<USPACK>

一様Y座標の目盛の間隔 (999.)

dxl*(Float)<USPACK>

一様X座標のラベルの間隔 (999.)

dyl*(Float)<USPACK>

一様Y座標のラベルの間隔 (999.)

tfact(Float)<USPACK>

一様座標の目盛間隔の目安 (2).これらの値に文字幅 ( rsize1) を掛けた幅よりも 小さな間隔で, 切りのよい値をdutとして設定する.

mxdgtx(Fixnum)<USPACK>

一様X座標のラベルの最大桁数 (4)

mxdgty(Fixnum)<USPACK>

一様Y座標のラベルの最大桁数 (4).ラベルの桁数がこれらの値よりも大きくなるとき, uoff, ufac を設定して これらの桁数以内におさまるように試みる.

nblank1(Fixnum)<USPACK>

ラベルが座標軸と平行な場合の, ラベル間の最小空白数. (一様座標) (1)

nblank2(Fixnum)<USPACK>

ラベルが座標軸と直角な場合の, ラベル間の最小空白数. (一様座標) (2)

nlblx*(Fixnum)<USPACK>

対数X座標のラベル形式 (999)

nlbly*(Fixnum)<USPACK>

対数Y座標のラベル形式 (999)

nticksx*(Fixnum)<USPACK>

対数X座標の一桁の間の目盛の数 (999)

nticksy*(Fixnum)<USPACK>

対数Y座標の一桁の間の目盛の数 (999)

itypex*(Fixnum)<USPACK>

対数X座標のタイプ (999)

itypey*(Fixnum)<USPACK>

対数Y座標のタイプ (999)

mxdgtsx(Fixnum)<USPACK>

X軸のサブラベルが水平方向の場合, mxdgtsxで指定された文字数のラベルの範囲を 越えないようにサブラベルを描く.

mxdgtsy(Fixnum)<USPACK>

Y軸のサブラベルが垂直方向の場合, mxdgtsyで指定された文字数のラベルの範囲を 越えないようにサブラベルを描く.

lprtct(true or false)<USPACK>

サブラベルを他方の軸のラベル領域に まで描かないことを指定する. これが TRUEの時には mxdgtsx/mxdgtsy の指定は無視される.

soffxtr*, soffxtl*, soffxbr*, soffxbl*, soffxur*, soffxul*(Float)<USPACK>

X軸のサブラベルのオフセット値.

soffytr*, soffyrb*, soffylt*, soffylb*, soffyut*, soffyub*(Float)<USPACK>

Y軸のサブラベルのオフセット値.

xdtmax*, xdtmin*(Float)<USPACK>

Fig.inclpoint で設定された x 座標の最大最小値.

ydtmax*, ydtmin*(Float)<USPACK>

Fig.inclpoint で設定された y 座標の最大最小値.

cxttl(String)<USPACK>

X軸のタイトル (32文字以内)

cyttl(String)<USPACK>

Y軸のタイトル (32文字以内)

cxfmt(String)<USPACK>

X軸のラベルのフォーマット (注1)

cyfmt(String)<USPACK>

Y軸のラベルのフォーマット (注1)

cxside(String)<USPACK>

X軸を書く位置. 'T'(Top), 'B'(Bottom), 'U'(User) のうち 2文字まで指定できる. 2つの位置のうち最初に指定した位置に サブラベルとタイトルが書かれる. (注2)

cyside(String)<USPACK>

Yを描く位置. 'R'(Right), 'L'(Left), 'U'(User) のうち 2文字まで指定できる. 2つの位置のうち最初に指定した位置に サブラベルとタイトルが書かれる. (注2)

cxspos(String)<USPACK>

X軸のサブラベルを書く位置 'R' または 'L'

cyspos(String)<USPACK>

Y軸のサブラベルを書く位置 'T' または 'B'

cxunit(String)<USPACK>

X軸のサブラベルに書く単位 (32文字以内)

cyunit(String)<USPACK>

Y軸のサブラベルに書く単位 (32文字以内)

cblkt(String)<USPACK>

Y軸のサブラベルに書く単位 (32文字以内)

labelxb(true or false)<UZPACK>

ラベルを描くかどうかを指定する内部変数;TRUEなら描く, FALSEなら描かない(TRUE)

labelxt(true or false)<UZPACK>

ラベルを描くかどうかを指定する内部変数;TRUEなら描く, FALSEなら描かない(FALSE)

labelxu(true or false)<UZPACK>

ラベルを描くかどうかを指定する内部変数;TRUEなら描く, FALSEなら描かない(TRUE)

labelyl(true or false)<UZPACK>

ラベルを描くかどうかを指定する内部変数;TRUEなら描く, FALSEなら描かない(TRUE)

labelyr(true or false)<UZPACK>

ラベルを描くかどうかを指定する内部変数;TRUEなら描く, FALSEなら描かない(FALSE)

labelyu(true or false)<UZPACK>

ラベルを描くかどうかを指定する内部変数;TRUEなら描く, FALSEなら描かない(TRUE)

rsizet0(Float)<UZPACK>

目盛の長さを指定する内部変数(単位はV座標系)(不定)

rsizet1(Float)<UZPACK>

目盛の長さを指定する内部変数(単位はV座標系)(0.007)

rsizet2(Float)<UZPACK>

目盛の長さを指定する内部変数(単位はV座標系)(0.014)

rsizel0(Float)<UZPACK>

ラベルの文字の高さを指定する内部変数(単位はV座標系)(不定)

rsizel1(Float)<UZPACK>

ラベルの文字の高さを指定する内部変数(単位はV座標系)(0.021)

rsizel2(Float)<UZPACK>

ラベルの文字の高さを指定する内部変数(単位はV座標系)(0.028)

rsizec0(Float)<UZPACK>

タイトルの文字の高さを指定する内部変数(単位はV座標系)(不定)

rsizec1(Float)<UZPACK>

タイトルの文字の高さを指定する内部変数(単位はV座標系)(0.028)

rsizec2(Float)<UZPACK>

タイトルの文字の高さを指定する内部変数(単位はV座標系)(0.035)

uxuser(Float)<UZPACK>

Y軸の作画ルーチンにおいて場所を示すパラメーターとして'U'serを指定したときに用いられるX座標値(初期値は不定).

uyuser(Float)<UZPACK>

X軸の作画ルーチンにおいて場所を示すパラメーターとして'U'serを指定したときに用いられるY座標値(初期値は不定).

irotl(zs) (Fixnum) <UZPACK>

ラベルの文字列の回転角を指定するパラメタ; 回転角は90度を単位とする整数値で指定する(初期値は, 0, 0, 0, 0, 0, 0). DCL manual 3.4, 3.8.3節参照.

irotc(zs) (Fixnum) <UZPACK>

タイトルの文字列の回転角を指定するパラメタ; 回転角は90度を単位とする整数値で指定する(初期値は, 0, 0, 0, +1, +1, +1). DCL manual 3.4, 3.8.5節参照.

icent(zs) (Fixnum) <UZPACK>

ラベルの文字列のセンタリングオプションを指定するパラメタ; -1のとき左よせ, 0のときセンタリング,+1のとき右よせする(初期値は, 0, 0, 0, +1, +1, +1). DCL manual 3.4, 3.8.3節参照.

indext(i) (Fixnum) <UZPACK>

座標軸および目盛を描く線分のラインインデクスを指定するパラメタ(初期値は, 不定, 1, 3). DCL manual 3.4, 3.8.2節参照.

indexl(i) (Fixnum) <UZPACK>

ラベルおよびタイトルの文字を描く線分のラインインデクスを指定するパラメタ(初期値は, 不定, 3, 3). DCL manual 3.4, 3.8.3節参照.

loffset (true or false) <UZPACK>

座標系をリニアオフセットするかどうかを指定するパラメタ. true ならリニアオフセットする; false ならしない(初期値は false). DCL manual 3.6節参照.

xoffset (Float) <UZPACK>

loffset が true のとき,X軸のオフセット値を指定するパラメタ(初期値は0.0). DCL manual 3.6節参照.

yoffset (Float) <UZPACK>

loffset が true のとき,Y軸のオフセット値を指定するパラメタ(初期値は0.0). DCL manual 3.6節参照.

xfact (Float) <UZPACK>

loffset が true のとき,X軸のファクター値を指定するパラメタ(初期値は1.0). DCL manual 3.6節参照.

yfact (Float) <UZPACK>

loffset が true のとき,Y軸のファクター値を指定するパラメタ(初期値は1.0). DCL manual 3.6節参照.

pad1 (Float) <UZPACK>

1つ前に描いた座標軸の構成要素からどれだけ離してラベルを描くかを指定するパラメタ(初期値は0.7; 単位は今描こうとしているラベルの高さを1とする).

pad2 (Float) <UZPACK>

座標軸のオフセット量を内部的に決める時に用いるパラメタ(初期値は1.5; 単位はパラメタ rsizec2 の大きさを1とする).

iflag (Fixnum) <UZPACK>

座標軸の設定を'U'serでおこなった場合,ラベルとタイトルを軸のどちら側に描くかを指定するパラメタ. iflag が正のときラベルは Axis::Lin.xplbl については上側, Axis::Lin.yplbl については右側に描かれる.負のときはその逆である. (初期値は-1). DCL manual 3.8.3節参照.

lbtwn (true or false) <UZPACK>

ラベルを描く場所に関するオプションを指定するパラメタ. lbtwn が true なら間に描く; false ならその場所に描く(初期値は false). DCL manual 3.8.3節参照.

rbtwn (Float) <UZPACK>

ラベルを間に描くとき( lbtwn が true のとき),さらにその位置を詳しく指定する. -1.0のとき左よせ, 0.0のときセンタリング, +1.0のとき右よせする(初期値は0.0).

lbound (true or false) <UZPACK>

タイトルを描こうとして, 文字幅がビューポートの幅を越えてしまうようなとき,タイトルを描くかどうかを指定する. true なら描かない, false なら描く(初期値は false).

lbmsg (true or false) <UZPACK>

lbound が true でタイトルを描くスペースがないとき,エラーメッセージを出力するかどうかを指定する. true なら出力する, false なら出力しない(初期値は true).

inner (Fixnum) <UZPACK>

目盛を内側に向かって打つか,外側に向かって打つかを指定するパラメタ. inner が正のとき内側に向かって目盛を打つ; 負のとき外側に向かって目盛を打つ(初期値は+1).

iundef (Float) <UZPACK>

値が不定であることを示すパラメタ(初期値は-999).

cxfmt (String) <UXPACK::UXSFMT>
  1. これらのフォーマットを陽に指定した場合, ラベルの間隔などにこの情報は反映されないので, dxl, dyl も適切に指定しないと,ラベルが重なる場合がある.
  2. 内部変数 cxside, cyside で指定される最初の位置の label(zs)がFALSEの時には, サブラベル, タイトルともに描かない.

また、これらのパラメタはメソッドとして用いることができる。すなわち、Axis.iresetでパラメタiresetの参照が、Axis.ireset=でパラメタiresetの変更ができる。

Axis.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Axis.set("cxttl", "xtitle")      # X軸のタイトルを"xtitle"に設定

Axis.get(key)

パラメタを参照する。

引数

使用例

Axis.get("cxttl")      #X軸のタイトルを参照する。

Axis.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Axis.reset("cxttl")      # X軸のタイトルを初期値に戻す

Axis.help_params

Axisで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Axis.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Axis.zfact(rfact)

パラメタ 'rsize(i)', 'rsize(i)', 'rsizec(i)' (i=1,2) をすべて何倍かする.

引数

備考

  1. このメソッドはUZFACTを呼んでいる。

Axis.title(cxttl, cxunit, cyttl, cyunit)

Axis.drawで書く座標軸のタイトル及び サブラベルの中の単位を指定する.

引数

備考

  1. このメソッドはUSSTTLを呼んでいる。
  2. タイトルを付けたくないときには, 1文字以上のブランクを指定する.

Axis.xpttl(cside, islct, cttl, px, temp=nil)

タイトルを描く.

引数

備考

  1. このメソッドは UXPTTL を呼んでいる。
  2. タイトルの文字の大きさはパラメタ rsizec(i) が決める.
  3. タイトルの文字列の回転角はパラメタ irotc(zs) が決める.
  4. タイトルの文字を描く線分のラインインデクスはパラメタ indexl(i)が決める.
  5. パラメタ lbound が true で タイトルがウインドウの幅をこえるとタイトルを描かない; false ならウインドウの幅をこえても描く (初期値は false). また, パラメタ lbound が true で タイトルがウインドウの幅をこえて描けないとき パラメタ lbmsg が true なら その旨メッセージを出力する; false なら出力しない (初期値は true).

Axis.ypttl(cside, islct, cttl, py, temp=nil)

タイトルを描く.

引数

備考

  1. このメソッドは UYPTTL を呼んでいる。
  2. タイトルの文字の大きさはパラメタ rsizec(i) が決める.
  3. タイトルの文字列の回転角はパラメタ irotc(zs) が決める.
  4. タイトルの文字を描く線分のラインインデクスはパラメタ indexl(i)が決める.
  5. パラメタ lbound が true で タイトルがウインドウの幅をこえるとタイトルを描かない; false ならウインドウの幅をこえても描く (初期値は false). また, パラメタ lbound が true で タイトルがウインドウの幅をこえて描けないとき パラメタ lbmsg が true なら その旨メッセージを出力する; false なら出力しない (初期値は true).

Axis.xmttl(cside, cttl, px, temp=nil)

大きめのタイトルを描く.

引数

備考

  1. このメソッドは UXMTTL を呼んでいる。
  2. このメソッドは UXPTTL (ISLCT=2)を使って タイトルを描いている.

Axis.ymttl(cside, cttl, py, temp=nil)

大きめのタイトルを描く.

引数

備考

  1. このメソッドは UYMTTL を呼んでいる。
  2. このメソッドは UYPTTL (ISLCT=2)を使って タイトルを描いている.

Axis.xsttl(cside, cttl, px, temp=nil)

小さめのタイトルを描く.

引数

備考

  1. このメソッドは UXSTTL を呼んでいる。
  2. このメソッドは UXPTTL (ISLCT=1)を使って タイトルを描いている.

Axis.ysttl(cside, cttl, py, temp=nil)

小さめのタイトルを描く.

引数

備考

  1. このメソッドは UYSTTL を呼んでいる。
  2. このメソッドは UYPTTL (ISLCT=1)を使って タイトルを描いている.

Axis.draw(x=nil, y=nil, temp=nil)

デフォルトの座標軸を描く. タイトルが指定されていればタイトルも書く.

引数

備考

  1. このメソッドはUSDAXSを呼んでいる。
  2. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis.xax(cside, x=nil, y=nil, temp=nil)

現在設定されている正規化変換に対して 適当な目盛とラベル間隔を計算し, 指定された場所に座標軸を一本描く.

引数

備考

  1. このメソッドはUSXAXSを呼んでいる。
  2. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis.yax(cside, x=nil, y=nil, temp=nil)

現在設定されている正規化変換に対して 適当な目盛とラベル間隔を計算し, 指定された場所に座標軸を一本描く.

引数

備考

  1. このメソッドはUSYAXSを呼んでいる。
  2. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

NumRu::AdvancedDCL::Axis::Lin

本モジュールについて

概要

Axis::Linモジュールは直交座標系の座標軸をプロットするためのモジュールである. したがって, 変換関数番号(Figのtransnum)としては 1〜4 (直角直線座標系)の正規化変換に対してのみ使用できる. それ以外の変換関数番号を指定しても動作は保証されない.

パラメタ

uxuser (Float) <UZPACK>

Y軸の作画ルーチンにおいて場所を示すパラメーターとして'U'serを指定したときに用いられるX座標値(初期値は不定). 詳しくはDCL manual 3.2節参照.

uyuser (Float) <UZPACK>

X軸の作画ルーチンにおいて場所を示すパラメーターとして'U'serを指定したときに用いられるY座標値(初期値は不定). 詳しくは DCL manual 3.2節参照.

label(zs) (true or false) <UZPACK>

ラベルを描くかどうかを指定するパラメタ; true なら描く, false なら描かない(初期値は, true, false, true, true, false, true). DCL manual 3.6.3, 3.6.2, 3.6.1節参照.

irotl(zs) (Fixnum) <UZPACK>

ラベルの文字列の回転角を指定するパラメタ; 回転角は90度を単位とする整数値で指定する(初期値は, 0, 0, 0, 0, 0, 0). DCL manual 3.4, 3.8.3節参照.

irotc(zs) (Fixnum) <UZPACK>

タイトルの文字列の回転角を指定するパラメタ; 回転角は90度を単位とする整数値で指定する(初期値は, 0, 0, 0, +1, +1, +1). DCL manual 3.4, 3.8.5節参照.

icent(zs) (Fixnum) <UZPACK>

ラベルの文字列のセンタリングオプションを指定するパラメタ; -1のとき左よせ, 0のときセンタリング,+1のとき右よせする(初期値は, 0, 0, 0, +1, +1, +1). DCL manual 3.4, 3.8.3節参照.

indext(i) (Fixnum) <UZPACK>

座標軸および目盛を描く線分のラインインデクスを指定するパラメタ(初期値は, 不定, 1, 3). DCL manual 3.4, 3.8.2節参照.

indexl(i) (Fixnum) <UZPACK>

ラベルおよびタイトルの文字を描く線分のラインインデクスを指定するパラメタ(初期値は, 不定, 3, 3). DCL manual 3.4, 3.8.3節参照.

rsizet(i) (Float) <UZPACK>

目盛の長さを指定するパラメタ(単位はV座標系;初期値は, 不定, 0.007, 0.014). DCL manual 3.4, 3.8.2節参照.

rsizel(i) (Float) <UZPACK>

ラベルの文字の高さを指定するパラメタ(単位はV座標系;初期値は, 不定, 0.021, 0.028). DCL manual 3.4, 3.8.3節参照.

rsizec(i) (Float) <UZPACK>

タイトルの文字の高さを指定するパラメタ(単位はV座標系;初期値は, 不定, 0.028, 0.035). 3.4, 3.8.5節参照.

rsizec(i) (Float) <UZPACK>

タイトルの文字の高さを指定するパラメタ(単位はV座標系;初期値は, 不定, 0.028, 0.035). DCL manual 3.4, 3.8.5節参照.

loffset (true or false) <UZPACK>

座標系をリニアオフセットするかどうかを指定するパラメタ. true ならリニアオフセットする; false ならしない(初期値は false). DCL manual 3.6節参照.

xoffset (Float) <UZPACK>

loffset が true のとき,X軸のオフセット値を指定するパラメタ(初期値は0.0). DCL manual 3.6節参照.

yoffset (Float) <UZPACK>

loffset が true のとき,Y軸のオフセット値を指定するパラメタ(初期値は0.0). DCL manual 3.6節参照.

xfact (Float) <UZPACK>

loffset が true のとき,X軸のファクター値を指定するパラメタ(初期値は1.0). DCL manual 3.6節参照.

yfact (Float) <UZPACK>

loffset が true のとき,Y軸のファクター値を指定するパラメタ(初期値は1.0). DCL manual 3.6節参照.

pad1 (Float) <UZPACK>

1つ前に描いた座標軸の構成要素からどれだけ離してラベルを描くかを指定するパラメタ(初期値は0.7; 単位は今描こうとしているラベルの高さを1とする).

pad2 (Float) <UZPACK>

座標軸のオフセット量を内部的に決める時に用いるパラメタ(初期値は1.5; 単位はパラメタ rsizec2 の大きさを1とする).

iflag (Fixnum) <UZPACK>

座標軸の設定を'U'serでおこなった場合,ラベルとタイトルを軸のどちら側に描くかを指定するパラメタ. iflag が正のときラベルは Axis::Lin.xplbl については上側, Axis::Lin.yplbl については右側に描かれる.負のときはその逆である. (初期値は-1). DCL manual 3.8.3節参照.

lbtwn (true or false) <UZPACK>

ラベルを描く場所に関するオプションを指定するパラメタ. lbtwn が true なら間に描く; false ならその場所に描く(初期値は false). DCL manual 3.8.3節参照.

rbtwn (Float) <UZPACK>

ラベルを間に描くとき( lbtwn が true のとき),さらにその位置を詳しく指定する. -1.0のとき左よせ, 0.0のときセンタリング, +1.0のとき右よせする(初期値は0.0).

lbound (true or false) <UZPACK>

タイトルを描こうとして, 文字幅がビューポートの幅を越えてしまうようなとき,タイトルを描くかどうかを指定する. true なら描かない, false なら描く(初期値は false).

lbmsg (true or false) <UZPACK>

lbound が true でタイトルを描くスペースがないとき,エラーメッセージを出力するかどうかを指定する. true なら出力する, false なら出力しない(初期値は true).

inner (Fixnum) <UZPACK>

目盛を内側に向かって打つか,外側に向かって打つかを指定するパラメタ. inner が正のとき内側に向かって目盛を打つ; 負のとき外側に向かって目盛を打つ(初期値は+1).

iundef (Float) <UZPACK>

値が不定であることを示すパラメタ(初期値は-999).

cxfmt (String) <UXPACK::UXSFMT>

X軸のラベルフォーマットを設定する。値は長さ16以下の文字型変数. たとえば値として '(F6.1)'のように指定する. 初期値は固有のオプションである'B' (有効数字3ケタで文字化し, 小数点以下に続く後方の0は取り除く; さらに小数点が最下位ならそれも取り除く). また、自動的に文字を左詰めする. つまり実数値1.2を文字化するために'(F4.1)'としても '(F8.1)'としても返す値はどちらも'1.2'である.

cyfmt (String) <UYPACK::UYSFMT>

Y軸のラベルフォーマットを設定する。値は長さ16以下の文字型変数. たとえば値として '(F6.1)'のように指定する.

roff(zs) (Float) <UZPACK>

最後に描いたラベルやタイトルの軸からの距離を保持しているパラメタ(初期値は, 0, 0, 0, 0, 0, 0). DCL manual 3.8.1節参照.

rofg(zs) (Float) <UZPACK>

座標軸を本来描く場所からどれだけ平行移動して描くかを指定するパラメタ(初期値は, 0, 0, 0, 0, 0, 0). DCL manual 3.8.1節参照.

また、これらのパラメタはメソッドとして用いることができる。すなわち、Axis::Lin.labelxb でパラメタ labelxb の参照が、Axis::Lin.labelxb=でパラメタ labelxb の変更ができる。

Axis::Lin.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Axis::Lin.set("labelxb", false)      # X-bottom にラベルを描かないように設定

Axis::Lin.get(key)

パラメタを参照する。

引数

使用例

Axis::Lin.get("labelxb")      #X-bottom にラベルを描くかどうかを参照する。

Axis::Lin.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Axis::Lin.reset("labelxb")      # labelxb を初期値に戻す

Axis::Lin.help_params

Axis::Linで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Axis::Lin.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず,

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Axis::Lin.zfact(rfact)

パラメタ 'rsize(i)', 'rsize(i)', 'rsizec(i)' (i=1,2) をすべて何倍かする.

引数

備考

  1. このメソッドはUZFACTを呼んでいる。

Axis::Lin.xaxdv(cside, dx1, dx2, x=nil, y=nil, temp=nil)

目盛とラベルを描く間隔を指定してX座標軸を描く.

引数

備考

  1. このメソッドは UXAXDV を呼んでいる。
  2. 目盛およびラベルは指定した間隔の整数倍の場所に描かれる.
  3. Axis::Lin.xaxdv は Axis::Lin.xpaxs (islct=2) で軸を描いている; Axis::Lin.xptmk (islct=1)で小さめの目盛を描いている; Axis::Lin.xptmk (islct=2)で大きめの目盛を描いている; Axis::Lin.xpnum (islct=1)でラベルを描いている.
  4. このルーチンは目盛とラベルを描く場所を内部で生成して Axis::Lin.xptmk などを呼んでいる. Axis::Lin.xptmk が呼ぶ UXPTMK の作業用配列の制約から目盛を打つ最大数は 200 以下でなければならない.
  5. ラベルのフォーマットは パラメタ cxfmt によって変更できる.
  6. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis::Lin.yaxdv(cside, dy1, dy2, x=nil, y=nil, temp=nil)

目盛とラベルを描く間隔を指定してX座標軸を描く.

引数

備考

  1. このメソッドは UYAXDV を呼んでいる。
  2. 目盛およびラベルは指定した間隔の整数倍の場所に描かれる.
  3. Axis::Lin.yaxdv は Axis::Lin.ypaxs (islct=2) で軸を描いている; Axis::Lin.yptmk (islct=1)で小さめの目盛を描いている; Axis::Lin.yptmk (islct=2)で大きめの目盛を描いている; Axis::Lin.ypnum (islct=1)でラベルを描いている.
  4. このルーチンは目盛とラベルを描く場所を内部で生成して Axis::Lin.yptmk などを呼んでいる. Axis::Lin.yptmk が呼ぶ UYPTMK の作業用配列の制約から目盛を打つ最大数は 200 以下でなければならない.
  5. ラベルのフォーマットは パラメタ cyfmt によって変更できる.
  6. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis::Lin.xaxlb(cside, ux1, ux2, ch, x=nil, y=nil, temp=nil)

目盛とラベルを描く場所を指定してX座標軸を描く. 描くラベルも指定する.

引数

備考

  1. このメソッドは UXAXLB を呼んでいる。
  2. Axis::Lin.xaxlb はそれぞれ Axis::Lin.xpaxs (islct=2)で軸を描いている; Axis::Lin.xptmk (islct=1)で小さめの目盛を描いている; Axis::Lin.xptmk (islct=2)で大きめの目盛を描いている; Axis::Lin.xplbl (islct=1)でラベルを描いている.
  3. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis::Lin.yaxlb(cside, uy1, uy2, ch, x=nil, y=nil, temp=nil)

目盛とラベルを描く場所を指定してY座標軸を描く. 描くラベルも指定する.

引数

備考

  1. このメソッドは UYAXLB を呼んでいる。
  2. Axis::Lin.yaxlb はそれぞれ Axis::Lin.ypaxs (islct=2)で軸を描いている; Axis::Lin.yptmk (islct=1)で小さめの目盛を描いている; Axis::Lin.yptmk (islct=2)で大きめの目盛を描いている; Axis::Lin.yplbl (islct=1)でラベルを描いている.
  3. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis::Lin.xpaxs(cside, islct, x=nil, y=nil, temp=nil)

軸を示す線分を描く.

引数

備考

  1. このメソッドはUXPAXSを呼んでいる。
  2. 軸を示す線分のラインインデクスはパラメタ index0, index1, index2が決める.
  3. 構成要素を描く場所に依存するパラメタとして roff(zs) (zs='xb','xt','xu','yl','yr','yu')がある. これは, 最後に描いたラベルやタイトルの軸からの距離を保持しているパラメタである. このパラメタを初期化しなければ, ラベルやタイトルは次々と ウインドウの外側に向かって重ならないよう描かれる.
  4. 座標軸は, 本来描くべき場所から平行移動した場所に描くことができる (DCL manual 3.2節参照). この移動量は, 描く場所に依存するパラメタ rofg(zs) が管理する (初期値はすべて0). この値はX/Y軸それぞれについて, メソッド

    Axis::Lin.xsaxz(cside, roffx) / Axis::Lin.ysaxz(cside, roffy) 

    によって設定できる. またオフセット量を内部的に決定するルーチン

    Axis::Lin.uxsaxs(cside) / Axis::Lin.ysaxs(cside) 

    によっても設定できる. オフセット量はパラメタ pad2 にもとづいて計算される.

  5. パラメタroff(zs) と rofg(zs) が等しいときに限って軸を示す線分を描く. これらの内部変数は DCL(rbdcl) のサブルーチン UZINIT によって 0 にセットされる. 普通ユーザーは UZINIT を陽に呼ぶ必要はない.
  6. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis::Lin.ypaxs(cside, islct, x=nil, y=nil, temp=nil)

軸を示す線分を描く.

引数

備考

  1. このメソッドはUYPAXSを呼んでいる。
  2. 軸を示す線分のラインインデクスはパラメタ index0, index1, index2が決める.
  3. 構成要素を描く場所に依存するパラメタとして roff(zs) (zs='xb','xt','xu','yl','yr','yu')がある. これは, 最後に描いたラベルやタイトルの軸からの距離を保持しているパラメタである. このパラメタを初期化しなければ, ラベルやタイトルは次々と ウインドウの外側に向かって重ならないよう描かれる.
  4. 座標軸は, 本来描くべき場所から平行移動した場所に描くことができる (DCL manual 3.2節参照). この移動量は, 描く場所に依存するパラメタ rofg(zs) が管理する (初期値はすべて0). この値はX/Y軸それぞれについて, メソッド

    Axis::Lin.xsaxz(cside, roffx) / Axis::Lin.ysaxz(cside, roffy) 

    によって設定できる. またオフセット量を内部的に決定するルーチン

    Axis::Lin.uxsaxs(cside) / Axis::Lin.ysaxs(cside) 

    によっても設定できる. オフセット量はパラメタ pad2 にもとづいて計算される.

  5. パラメタroff(zs) と rofg(zs) が等しいときに限って軸を示す線分を描く. これらの内部変数は DCL(rbdcl) のサブルーチン UZINIT によって 0 にセットされる. 普通ユーザーは UZINIT を陽に呼ぶ必要はない.
  6. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis::Lin.xplbl(cside, islct, ux, ch, x=nil, y=nil, temp=nil)

文字列で指定したラベルを描く.

引数

備考

  1. このメソッドはUXPLBLを呼んでいる。
  2. このパッケージでは次の2通りのラベルの描きかたがある. Axis::Lin.xplbl/yplblそれぞれについて

    • ux(i)/uy(i)の 場所にch(i)の ラベルを描く.
    • ux(i)/uy(i)と ux(i+1)/uy(i+1)の 間にch(i)のラベルを描く.

    2つの方法のどちらを選ぶかはパラメタ lbtwn が決める. lbtwn が true なら間に描く; false ならその場所に描く(初期値は false). ただし, ラベルを間に描くように指定していても, ラベルが2点の間隔より 大きいときラベルは描かれない. またメッセージも出力されない.

  3. ラベルの文字の高さはパラメタ rsizel(i) が決める.
  4. ラベルの文字列の回転角はパラメタ irotl(zs) が決める.
  5. ラベルの文字列のセンタリングオプションはパラメタ icent(zs) が決める.
  6. ラベルの文字を描く線分のラインインデクスはパラメタ indexl(i) が決める.
  7. cside として'U'以外を指定した場合, ラベルは常にウインドウの外側に描かれる. cside として'U'を指定した場合, ラベルの描かれる位置はパラメタ iflag が決める. iflag が正のときラベルはAxis::Lin.xplbl については上側, Axis::Lin.yplbl については右側に描かれる. 負のときはその逆である. 初期値は-1.
  8. 1つ前に描いた座標軸の構成要素からどれだけ離してラベルを描くかは 内部変数 pad1 が決める. 初期値は0.7. 単位は今描こうとしているラベルの高さを1とする.
  9. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis::Lin.yplbl(cside, islct, uy, ch, x=nil, y=nil, temp=nil)

文字列で指定したラベルを描く.

引数

備考

  1. このメソッドはUYPLBLを呼んでいる。
  2. このパッケージでは次の2通りのラベルの描きかたがある. Axis::Lin.xplbl/yplblそれぞれについて

    • ux(i)/uy(i)の 場所にch(i)の ラベルを描く.
    • ux(i)/uy(i)と ux(i+1)/uy(i+1)の 間にch(i)のラベルを描く.

    2つの方法のどちらを選ぶかはパラメタ lbtwn が決める. lbtwn が true なら間に描く; false ならその場所に描く(初期値は false). ただし, ラベルを間に描くように指定していても, ラベルが2点の間隔より 大きいときラベルは描かれない. またメッセージも出力されない.

  3. ラベルの文字の高さはパラメタ rsizel(i) が決める.
  4. ラベルの文字列の回転角はパラメタ irotl(zs) が決める.
  5. ラベルの文字列のセンタリングオプションはパラメタ icent(zs) が決める.
  6. ラベルの文字を描く線分のラインインデクスはパラメタ indexl(i) が決める.
  7. cside として'U'以外を指定した場合, ラベルは常にウインドウの外側に描かれる. cside として'U'を指定した場合, ラベルの描かれる位置はパラメタ iflag が決める. iflag が正のときラベルはAxis::Lin.xplbl については上側, Axis::Lin.yplbl については右側に描かれる. 負のときはその逆である. 初期値は-1.
  8. 1つ前に描いた座標軸の構成要素からどれだけ離してラベルを描くかは 内部変数 pad1 が決める. 初期値は0.7. 単位は今描こうとしているラベルの高さを1とする.
  9. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis::Lin.xpnum(cside, islct, ux, x=nil, y=nil, temp=nil)

数値で指定したラベルを描く.

引数

備考

  1. このメソッドは UXPNUM を呼んでいる。
  2. このメソッドは, DCL(rbdcl) のサブルーチンCHVAL (「MISC1」マニュアルのFMTLIB参照)を 使ってux, uyの値を文字化したあとで Axis::Lin.xplbl/yplbl を呼んでいる. (ラベルの属性については, Axis::Lin.plbl/yplbl を参照のこと. ) Axis::Lin.xplbl/yplbl に渡す文字型配列を内部で用意しているため ux, uyの長さは40以下でなければならない.
  3. サブルーチン CHVAL に渡すフォーマットは, Axis::Lin.xpnum についてはパラメタ cxfmt で設定/参照することができる. Axis::Lin.ypnum についてはパラメタ cyfmt で設定/参照することができる. cxfmt, cyfmt は長さ16以下の文字型変数. たとえば '(F6.1)' のように指定する. 初期値は CHVAL に固有のオプションである 'B' (有効数字3ケタで文字化し, 小数点以下に続く後方の0は取り除く; さらに小数点が最下位ならそれも取り除く). CHVAL は自動的に文字を左詰めする. つまり実数値 1.2 を文字化するために '(F4.1)' としても '(F8.1)' としても CHVAL が返す値はどちらも '1.2' である.
  4. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis::Lin.ypnum(cside, islct, uy, x=nil, y=nil, temp=nil)

数値で指定したラベルを描く.

引数

備考

  1. このメソッドは UYPNUM を呼んでいる。
  2. このメソッドは, DCL(rbdcl) のサブルーチンCHVAL (「MISC1」マニュアルのFMTLIB参照)を 使ってux, uyの値を文字化したあとで Axis::Lin.xplbl/yplbl を呼んでいる. (ラベルの属性については, Axis::Lin.plbl/yplbl を参照のこと. ) Axis::Lin.xplbl/yplbl に渡す文字型配列を内部で用意しているため ux, uyの長さは40以下でなければならない.
  3. サブルーチン CHVAL に渡すフォーマットは, Axis::Lin.xpnum についてはパラメタ cxfmt で設定/参照することができる. Axis::Lin.ypnum についてはパラメタ cyfmt で設定/参照することができる. cxfmt, cyfmt は長さ16以下の文字型変数. たとえば '(F6.1)' のように指定する. 初期値は CHVAL に固有のオプションである 'B' (有効数字3ケタで文字化し, 小数点以下に続く後方の0は取り除く; さらに小数点が最下位ならそれも取り除く). CHVAL は自動的に文字を左詰めする. つまり実数値 1.2 を文字化するために '(F4.1)' としても '(F8.1)' としても CHVAL が返す値はどちらも '1.2' である.
  4. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis::Lin.xptmk(cside, islct, ux, x=nil, y=nil, temp=nil)

目盛を描く.

引数

備考

  1. このメソッドは UXPTMK を呼んでいる。
  2. 目盛の長さはパラメタ rsizet(i) が決める.
  3. 目盛を描く線のラインインデクスはパラメタ indext(1) が決める.
  4. 目盛を内側に向かって打つか, 外側に向かって打つかは パラメタ inner が決める. inner が正のとき内側に向かって目盛を打つ; 負のとき外側に向かって目盛を打つ (初期値は+1).
  5. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis::Lin.yptmk(cside, islct, ux, x=nil, y=nil, temp=nil)

目盛を描く.

引数

備考

  1. このメソッドは UYPTMK を呼んでいる。
  2. 目盛の長さはパラメタ rsizet(i) が決める.
  3. 目盛を描く線のラインインデクスはパラメタ indext(1) が決める.
  4. 目盛を内側に向かって打つか, 外側に向かって打つかは パラメタ inner が決める. inner が正のとき内側に向かって目盛を打つ; 負のとき外側に向かって目盛を打つ (初期値は+1).
  5. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。

Axis::Lin.xpttl(cside, islct, cttl, px, temp=nil)

タイトルを描く.

引数

備考

  1. このメソッドは UXPTTL を呼んでいる。
  2. タイトルの文字の大きさはパラメタ rsizec(i) が決める.
  3. タイトルの文字列の回転角はパラメタ irotc(zs) が決める.
  4. タイトルの文字を描く線分のラインインデクスはパラメタ indexl(i)が決める.
  5. パラメタ lbound が true で タイトルがウインドウの幅をこえるとタイトルを描かない; false ならウインドウの幅をこえても描く (初期値は false). また, パラメタ lbound が true で タイトルがウインドウの幅をこえて描けないとき パラメタ lbmsg が true なら その旨メッセージを出力する; false なら出力しない (初期値は true).

Axis::Lin.ypttl(cside, islct, cttl, py, temp=nil)

タイトルを描く.

引数

備考

  1. このメソッドは UYPTTL を呼んでいる。
  2. タイトルの文字の大きさはパラメタ rsizec(i) が決める.
  3. タイトルの文字列の回転角はパラメタ irotc(zs) が決める.
  4. タイトルの文字を描く線分のラインインデクスはパラメタ indexl(i)が決める.
  5. パラメタ lbound が true で タイトルがウインドウの幅をこえるとタイトルを描かない; false ならウインドウの幅をこえても描く (初期値は false). また, パラメタ lbound が true で タイトルがウインドウの幅をこえて描けないとき パラメタ lbmsg が true なら その旨メッセージを出力する; false なら出力しない (初期値は true).

Axis::Lin.xmttl(cside, cttl, px, temp=nil)

大きめのタイトルを描く.

引数

備考

  1. このメソッドは UXMTTL を呼んでいる。
  2. このメソッドは UXPTTL (ISLCT=2)を使って タイトルを描いている.

Axis::Lin.ymttl(cside, cttl, py, temp=nil)

大きめのタイトルを描く.

引数

備考

  1. このメソッドは UYMTTL を呼んでいる。
  2. このメソッドは UYPTTL (ISLCT=2)を使って タイトルを描いている.

Axis::Lin.xsttl(cside, cttl, px, temp=nil)

小さめのタイトルを描く.

引数

備考

  1. このメソッドは UXSTTL を呼んでいる。
  2. このメソッドは UXPTTL (ISLCT=1)を使って タイトルを描いている.

Axis::Lin.ysttl(cside, cttl, py, temp=nil)

小さめのタイトルを描く.

引数

備考

  1. このメソッドは UYSTTL を呼んでいる。
  2. このメソッドは UYPTTL (ISLCT=1)を使って タイトルを描いている.

NumRu::AdvancedDCL::Axis::Log

本モジュールについて

Axis::Logモジュールは対数軸を描くためのモジュールである。

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

ixchr (Fixnum) <ULPACK>

X軸に関する2・10nという形のラベルで, '・'の位置に使う文字番号.DCL文字番号(DCL 「GRPH1」のマニュアル参照)で指定する.初期値は195 (・).

iychr (Fixnum) <ULPACK>

Y軸に関する2・10nという形のラベルで, '・'の位置に使う文字番号.DCL文字番号(DCL 「GRPH1」のマニュアル参照)で指定する.初期値は195 (・).

ixtype (Fixnum) <ULPACK>

X軸に関するラベルのフォーマットを指定する.1から4の整数値が指定できる(初期値は1).それぞれの意味は次項で説明.

iytype (Fixnum) <ULPACK>

Y軸に関するラベルのフォーマットを指定する.1から4の整数値が指定できる(初期値は1).

  1. : 全てのラベルに指数部を付ける.

    例  1・103  2・103  5・103  1・104

    ただし, Text が管理するパラメタ lcntl が false のときには・10n のかわりにEnと表現する.

  2. : 10n 以外のラベルには指数部を付けない.

    例  103  2  5  104 
  3. : DCL(rbdcl)サブルーチン CHVAL(DCL 「MISC1」のマニュアルFMTLIB 参照)を使って全てのラベルを文字化する.

    例  1000  2000  5000  10000
  4. : 10nのラベルのみ CHVAL を使う.そのほかは2を指定したときと同じ.

    例   1000  2  5  10000
xlabelfmt, ylabelfmt (String) <ULPACK::ULXSFM>

パラメタ ixtype / iytypeが 3 または 4 のときに使用する フォーマットを設定する.

また、これらのパラメタはメソッドとして用いることができる。すなわち、Axis::Log.ixtype でパラメタ ixtype の参照が、Axis::Log.ixtype= でパラメタ ixtype の変更ができる。

Axis::Log.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Axis.set("ixtype", 4)      # X軸に関するラベルのフォーマットを 4 に設定

Axis::Log.get(key)

パラメタを参照する。

引数

使用例

Axis.get("ixtype")      #X軸に関するラベルのフォーマットを参照する。

Axis::Log.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Axis::Log.reset("ixtype")      # X軸に関するラベルのフォーマットを初期値に戻す

Axis::Log.help_params

Axis::Logで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Axis::Log.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Axis::Log.xlabelset(value)

ラベルを描く位置を指定する.

引数

備考

  1. このメソッドは ULSXBL を呼んでいる。
  2. Axis::Log.xdraw / ydraw において nlabel として 4 を指定する場合は, あらかじめ本ルーチンによって ラベルを描く位置を指定しなければならない.
  3. value の長さは 9 以下でなければならない.
  4. ラベルを描く位置は, X/Y軸についてメソッド

    Axis::Log.xlabelget / ylabelget

    で参照することができる.

Axis::Log.ylabelset(value)

ラベルを描く位置を指定する.

引数

  1. このメソッドは ULSYBL を呼んでいる。
  2. Axis::Log.xdraw / ydraw において nlabel として 4 を指定する場合は, あらかじめ本ルーチンによって ラベルを描く位置を指定しなければならない.
  3. value の長さは 9 以下でなければならない.
  4. ラベルを描く位置は, X/Y軸についてメソッド

    Axis::Log.xlabelget / ylabelget

    で参照することができる.

Axis::Log.xlabelget

ラベルを描く位置を得る。

引数

なし

備考

  1. このメソッドは ULQXBL を呼んでいる。

Axis::Log.ylabelget

ラベルを描く位置を得る。

引数

なし

備考

  1. このメソッドは ULQYBL を呼んでいる。

Axis::Log.xdraw(cside, nlabel, nticks, x=nil, y=nil, temp=nil)

対数座標軸を描く.

引数

備考

  1. このメソッドは ULXLOG を呼んでいる。
  2. Axis::Log.xdraw / ydraw はそれぞれ Axis::Lin.xpaxs / ypaxs (islct=2)で軸を描いている; Axis::Lin.xptmk / yptmk (islct=1)で 10n 以外の小さめの目盛を描いている; Axis::Lin.xptmk / yptmk (islct=2)で 10n の大きめの目盛を描いている; Axis::Lin.xplbl / yplbl (islct=1)でラベルを描いている. したがって,これら座標軸の構成要素の属性は, Axis::Lin のパラメタによって参照/変更することができる. くわしくは Axis::Lin 参照のこと.
  3. このメソッドは小さめの目盛を打つ場所を内部で生成して Axis::Lin.xptmk / yptmk を呼んでいる. この作業用配列の制約から目盛を打つ最大数は200以下でなければならない.
  4. このルーチンはラベルを描く場所を内部で生成して Axis::Lin.xplbl / yplbl を呼んでいる. この作業用配列の制約から描くラベルの最大数は 50 以下でなければならない.
  5. nlabel として 4 を指定する場合は, あらかじめ Axis::Log.xlabelset / ylabelset によってラベルを描く位置が指定されてなければならない.
  6. ラベルのフォーマットは, パラメタ ixtype, iytype (それぞれX軸, Y軸のフォーマット)で指定する (初期値はそれぞれ1: すべてのラベルに指数部をつける).

Axis::Log.ydraw(cside, nlabel, nticks, x=nil, y=nil, temp=nil)

対数座標軸を描く.

引数

備考

  1. このメソッドは ULYLOG を呼んでいる。
  2. Axis::Log.xdraw / ydraw はそれぞれ Axis::Lin.xpaxs / ypaxs (islct=2)で軸を描いている; Axis::Lin.xptmk / yptmk (islct=1)で 10n 以外の小さめの目盛を描いている; Axis::Lin.xptmk / yptmk (islct=2)で 10n の大きめの目盛を描いている; Axis::Lin.xplbl / yplbl (islct=1)でラベルを描いている. したがって,これら座標軸の構成要素の属性は, Axis::Lin のパラメタによって参照/変更することができる. くわしくは Axis::Lin 参照のこと.
  3. このメソッドは小さめの目盛を打つ場所を内部で生成して Axis::Lin.xptmk / yptmk を呼んでいる. この作業用配列の制約から目盛を打つ最大数は200以下でなければならない.
  4. このルーチンはラベルを描く場所を内部で生成して Axis::Lin.xplbl / yplbl を呼んでいる. この作業用配列の制約から描くラベルの最大数は 50 以下でなければならない.
  5. nlabel として 4 を指定する場合は, あらかじめ Axis::Log.xlabelset / ylabelset によってラベルを描く位置が指定されてなければならない.
  6. ラベルのフォーマットは, パラメタ ixtype, iytype (それぞれX軸, Y軸のフォーマット)で指定する (初期値はそれぞれ1: すべてのラベルに指数部をつける).

NumRu::AdvancedDCL::Dateaxis

本モジュールについて

Dateaxisモジュールは日付軸を描くためのモジュールである。 作画しようとする座標軸については, 日数を単位として正規化変換が設定してなければならない. また座標軸の作画は, ユーザー座標系(UC)において0に相当する位置からおこなわれる. したがって, たとえば1月1日から1月31日まで31日分をビューポートいっぱいに割り当てたいときは,ウインドウの両端値を(0, 30)と指定する.

以下でサブルーチンに共通してあらわれる引数 CSIDE, JD0, NDについて説明する.

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

nday (Fixnum) <UCPACK>

Dateaxis.xady, Dateaxis.yady を使うとき,何日ごとに目盛と日付を描くかを指定する. nday が不定なら0, 1, 2, 5, 10, 15の中から適当な値が選ばれる(0以下のときは軸を描くだけで目盛と日付は描かない);陽に与えられていればその値を使う(初期値は不定). これは DCL の関数 'NUCDAY'が決める.

nchar (Fixnum) <UCPACK>

Dateaxis.xamn, Dateaxis.yamn を使うとき,月名を何文字描くかを指定する. ncharが不定なら0, 1, 2, 3, 9の中から適当な値が選ばれる( 0 のときは軸を描くだけで目盛と月名は描かない);陽に与えられていればその値を使う(初期値は不定).これは DCL の関数 'NUCCHR' が決める.

lower (true or false) <UCPACK>

Dateaxis.xady, Dateaxis.yady で描く月名の2文字目以下を小文字にするかどうかを指定する. true なら小文字にする; false なら大文字のままにする(初期値は false).

iundef (Fixnum) <UCPACK>

値が不定であることを示す内部変数(初期値は -999).

また、これらのパラメタはメソッドとして用いることができる。すなわち、Dateaxis.nday でパラメタ nday の参照が、 Dateaxis.nday= でパラメタ nday の変更ができる。

Dateaxis.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Dateaxis.set("nday", 15)      # nday を 15 に設定

Dateaxis.get(key)

パラメタを参照する。

引数

使用例

Dateaxis.get("nday")      # nday を参照する。

Dateaxis.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Dateaxis.reset("nday")      # nday を初期値に戻す

Dateaxis.help_params

Dateaxisで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Dateaxis.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Dateaxis.xdraw(cside, jd0, nd, x=nil, y=nil, temp=nil)

日・月・年に関する座標軸を描く.

引数

備考

  1. このメソッドは UCXACL を呼んでいる。
  2. Dateaxis.xdraw は Dateaxis.xady, Dateaxis.xamn, Dateaxis.xayr (以下参照)を続けて呼んでいる.

Dateaxis.ydraw(cside, jd0, nd, x=nil, y=nil, temp=nil)

日・月・年に関する座標軸を描く.

引数

備考

  1. このメソッドは UCYACL を呼んでいる。
  2. Dateaxis.ydraw は Dateaxis.yady, Dateaxis.yamn, Dateaxis.yayr (以下参照)を続けて呼んでいる.

Dateaxis.xady(cside, jd0, nd, x=nil, y=nil, temp=nil)

日に関する座標軸を描く.

引数

備考

  1. このメソッドは UCXADY を呼んでいる。
  2. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。
  3. 何日ごとに目盛と日付を描くかは, DCL の関数 NUCDAY を通してパラメタ nday が決める. nday が不定なら0, 1, 2, 5, 10, 15の中から適当な値が選ばれる( 0 以下のときは軸を描くだけで目盛と日付は描かない); 陽に与えられていればその値を使う(初期値は不定).
  4. 目盛と日付を描くための情報を保持するために 内部で配列を用意している. その配列の大きさに関する制限から, 描きうる目盛と日付は最大100個である.
  5. Dateaxis.xady, Dateaxis.yady はそれぞれ Axis::Lin.xpaxs, Axis::Lin.ypaxs (islct = 2)で軸を描いている; Axis::Lin.xptmk, Axis::Lin.yptmk (islct = 1)で目盛を描いている; Axis::Lin.xplbl, Axis::Lin.yplbl (islct = 1)で日のラベルを描いている. したがって, これら座標軸の構成要素の属性は, Axis::Lin のパラメタによって参照/変更することができる. ただし, icent(zs) は 0 とする; irotl(zs) は irotc(zs)を参照して用いる; lbtwn は false とする.

Dateaxis.yady(cside, jd0, nd, x=nil, y=nil, temp=nil)

日に関する座標軸を描く.

引数

備考

  1. このメソッドは UCYADY を呼んでいる。
  2. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。
  3. 何日ごとに目盛と日付を描くかは, DCL の関数 NUCDAY を通してパラメタ nday が決める. nday が不定なら0, 1, 2, 5, 10, 15の中から適当な値が選ばれる( 0 以下のときは軸を描くだけで目盛と日付は描かない); 陽に与えられていればその値を使う(初期値は不定).
  4. 目盛と日付を描くための情報を保持するために 内部で配列を用意している. その配列の大きさに関する制限から, 描きうる目盛と日付は最大100個である.
  5. Dateaxis.xady, Dateaxis.yady はそれぞれ Axis::Lin.xpaxs, Axis::Lin.ypaxs (islct = 2)で軸を描いている; Axis::Lin.xptmk, Axis::Lin.yptmk (islct = 1)で目盛を描いている; Axis::Lin.xplbl, Axis::Lin.yplbl (islct = 1)で日のラベルを描いている. したがって, これら座標軸の構成要素の属性は, Axis::Lin のパラメタによって参照/変更することができる. ただし, icent(zs) は 0 とする; irotl(zs) は irotc(zs)を参照して用いる; lbtwn は false とする.

Dateaxis.xamn(cside, jd0, nd, x=nil, y=nil, temp=nil)

月に関する座標軸を描く.

引数

備考

  1. このメソッドは UCXAMN を呼んでいる。
  2. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。
  3. 月名を何文字描くかは, DCL の関数 NUCCHR を通してパラメタ nchar が決める. nchar が不定なら0, 1, 2, 3, 9 の中から適当な値が選ばれる( 0 以下のときは軸を描くだけで目盛と月名は描かない); 陽に与えられていればその値を使う(初期値は不定). nchar の値が負のときはその絶対値の長さの月名を書き, さらに2文字目以降を小文字にする.
  4. 目盛と月名を描くための情報を保持するために 内部で配列を用意している. その配列の大きさに関する制限から, 描きうる目盛と月名は最大 50 個である.
  5. Dateaxis.xamn, Dateaxis.yamn はそれぞれ Axis::Lin.xpaxs, Axis::Lin.ypaxs (islct = 2)で軸を描いている; Axis::Lin.xptmk, Axis::Lin.yptmk (islct = 2)で目盛を描いている; Axis::Lin.xplbl, Axis::Lin.yplbl (islct = 2)で日のラベルを描いている. したがって, これら座標軸の構成要素の属性は, Axis::Lin のパラメタによって参照/変更することができる. ただし, icent(zs) は 0 とする; irotl(zs) は irotc(zs)を参照して用いる; lbtwn は true とする.

Dateaxis.yamn(cside, jd0, nd, x=nil, y=nil, temp=nil)

月に関する座標軸を描く.

引数

備考

  1. このメソッドは UCYAMN を呼んでいる。
  2. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。
  3. 月名を何文字描くかは, DCL の関数 NUCCHR を通してパラメタ nchar が決める. nchar が不定なら0, 1, 2, 3, 9 の中から適当な値が選ばれる( 0 以下のときは軸を描くだけで目盛と月名は描かない); 陽に与えられていればその値を使う(初期値は不定). nchar の値が負のときはその絶対値の長さの月名を書き, さらに2文字目以降を小文字にする.
  4. 目盛と月名を描くための情報を保持するために 内部で配列を用意している. その配列の大きさに関する制限から, 描きうる目盛と月名は最大 50 個である.
  5. Dateaxis.xamn, Dateaxis.yamn はそれぞれ Axis::Lin.xpaxs, Axis::Lin.ypaxs (islct = 2)で軸を描いている; Axis::Lin.xptmk, Axis::Lin.yptmk (islct = 2)で目盛を描いている; Axis::Lin.xplbl, Axis::Lin.yplbl (islct = 2)で日のラベルを描いている. したがって, これら座標軸の構成要素の属性は, Axis::Lin のパラメタによって参照/変更することができる. ただし, icent(zs) は 0 とする; irotl(zs) は irotc(zs)を参照して用いる; lbtwn は true とする.

Dateaxis.xayr(cside, jd0, nd, x=nil, y=nil, temp=nil)

年に関する座標軸を描く.

引数

備考

  1. このメソッドは UCXAYR を呼んでいる。
  2. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。
  3. 目盛と月名を描くための情報を保持するために 内部で配列を用意している. その配列の大きさに関する制限から, 描きうる目盛と月名は最大 50 個である.
  4. Dateaxis.xamn, Dateaxis.yamn はそれぞれ Axis::Lin.xpaxs, Axis::Lin.ypaxs (islct = 2)で軸を描いている; Axis::Lin.xptmk, Axis::Lin.yptmk (islct = 2)で目盛を描いている; Axis::Lin.xplbl, Axis::Lin.yplbl (islct = 2)で日のラベルを描いている. したがって, これら座標軸の構成要素の属性は, Axis::Lin のパラメタによって参照/変更することができる. ただし, icent(zs) は 0 とする; irotl(zs) は irotc(zs)を参照して用いる; lbtwn は true とする.

Dateaxis.yayr(cside, jd0, nd, x=nil, y=nil, temp=nil)

年に関する座標軸を描く.

引数

備考

  1. このメソッドは UCYAYR を呼んでいる。
  2. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定し、軸を描く。
  3. 目盛と月名を描くための情報を保持するために 内部で配列を用意している. その配列の大きさに関する制限から, 描きうる目盛と月名は最大 50 個である.
  4. Dateaxis.xamn, Dateaxis.yamn はそれぞれ Axis::Lin.xpaxs, Axis::Lin.ypaxs (islct = 2)で軸を描いている; Axis::Lin.xptmk, Axis::Lin.yptmk (islct = 2)で目盛を描いている; Axis::Lin.xplbl, Axis::Lin.yplbl (islct = 2)で日のラベルを描いている. したがって, これら座標軸の構成要素の属性は, Axis::Lin のパラメタによって参照/変更することができる. ただし, icent(zs) は 0 とする; irotl(zs) は irotc(zs)を参照して用いる; lbtwn は true とする.

NumRu::AdvancedDCL::Plot

本モジュールについて

Plotモジュールは直交座標系でプロット図を描くためのモジュールである。 したがって, 変換関数番号としてはITR=1〜4(直角直線座標系)の 正規化変換に対してのみ使用できる. それ以外の変換関数番号を指定しても動作は保証されない.

Plot, Mark, Bar, Box, Gap, Errbarのメソッド群は, 変数の数によって次の4つのタイプに分類される.

独立変数の数    従属変数の数
TYPE 1       N               N
TYPE 2       N             N×2
TYPE 3      N+1              N
TYPE 4      N+1            N×2

ここで, 独立変数として指定する配列の数は常に1つで, その長さがN または N+1 である. 従属変数は1つの配列の長さは常に N であるが, 2つの配列を指定するもの(N×2)がある.

TYPE 3 と TYPE 4 のルーチンはこのパッケージでは「箱グラフ」と 呼んでいる. これは, 指定した独立変数の「位置」にある幅の棒を描く棒グラフに対して, 指定した独立変数の「区間」を埋める箱を描くものである. この中の Box.xdraw, Box.ydraw は階段状のグラフを描くものである.

未定義値 (RUNDEF) の解釈

Plot, Mark, Bar, Box, Gap, Errbarのメソッド群は, 独立変数または従属変数に未定義値 (RUNDEF) を指定することができる. この値が指定された時の解釈は次の通り.

パラメタ UREF (初期値=0) の値が指定されたものとみなす. ただし, 従属変数に RUNDEF が指定できるのは, 2つの従属変数をもつTYPE2, TYPE4 のルーチンのみである.

従属変数の未定義値は, 棒グラフのように 棒の上下の位置を指定するようなサブルーチンで, 常に座標軸から指定された位置までの棒を描くような場合を想定している.

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

nbits(Fixnum)<SGPACK>

ポリラインプリミティブの描く折れ線のラインタイプをビットパターンで設定するとき,下位何ビットを使うかを指定する(初期値は16).

bitlen(Float)<SGPACK>

ポリラインプリミティブの描く折れ線のラインタイプをビットパターンで設定するとき,1ビットがVC上でどれだけの長さに相当するかを指定する(初期値は0.003).

move(Fixnum)<SGPACK>

SZPACKの下位ルーチンが破線等のパターンで線を引くとき,pen-up moveの後のパターンのサイクルについて指定する(初期値は1).

lchar(true or false)<SGPACK>

ポリラインプリミティブで折れ線を描くとき,ラベルつき折れ線とするかどうかを指定する.TRUEのときラベルつき折れ線とする;FALSEのときラベルなし折れ線とする(初期値はFALSE).以下はこのラベルつき線分に関するパラメーターである.

lrot(true or false)<SGPACK>

ラベルとして付ける文字列を一定の回転角で描くか,あるいは線分に沿って描くかを指定する.TRUEのとき一定の回転角で描く;FALSEのとき線分に沿って描く(初期値はFALSE).

irot(Fixnum)<SGPACK>

ラベルとして付ける文字列を一定の回転角で描くとき('LROT'が.TRUE.のとき)の回転角を指定する(単位は度;初期値は0).

fwc(Float)<SGPACK>

文字列を書くための空白域の幅を全文字幅を単位としてどれだけとるかを指定する係数(初期値は1.25)

cwl(Float)<SGPACK>

1サイクルあたり,線分部分の長さを文字高を単位として何文字分とるかを指定する係数(初期値は30.0)

ffct(Float)<SGPACK>

ラベルつき折れ線を描くにあたって,線分部分を1単位としてどれだけ進んだところから描き始めるかを指定する(初期値は0.5).

indexc(Fixnum)<SGPACK>

ラベルとして各文字列のラインインデクスを指定する(初期値は0).値が0のとき,線分部分を書くために現在設定されているラインインデクスと同じ値をとる.

lbuff(true or false)<SGPACK>

折れ線の終りが文字列を描くべき空白部分であるときそこを線分で結ぶためのバッファリングをすうかどうかを指定する.TRUEのときバッファリングをする;FALSEのときバッファリングしない(初期値はTRUE)

nbuff(Fixnum)<SGPACK>

バッファリングをするときその長さを指定する(初期値は20).

rbuff(Float)<SGPACK>

バッファリングをした内容を書き出した後,ラベルつき折れ線のサイクルの位置を指定する.0と1の間の値を指定すること.(初期値は0.99)

lcurv(true or false)<SGPACK>

折れ線のなす角が大きなところではラベルを書かないことを指定する.正確には,文字を書くべきスペースが次のパラメーター'rcurv'の係数以下のときラベルを書かない.TRUEのときラベルを書かない;FALSEのときラベルを書く(初期値はTRUE)

rcurv(Float)<SGPACK>

lcurvがTRUEで,ラベルを書くべきスペースがこの係数以下のときラベルを書かない.(初期値は1.0)

lineindex(Numeric)<U[UVH]PACK::UUSLNI>

折れ線の ラインインデクスを設定する(初期値は1).lineindexは1以上でなければならない. ただしlineindexが0のとき, メッセージは出力されるがなにもしない.

linetype(Numeric)<U[UVH]PACK::UUSLNT>

折れ線のラインタイプを設定する(初期値は1). linetypeが1のとき実線, 2のとき破線, 3のとき点線, 4のとき1点鎖線となる. その他の0以外の整数は下位Nビット (Nはパラメタnbitsで決まる値. 初期値は16)のビットパターンを用いて線種が設定される. たとえばN=16で itype = Z'0000F0F0' (16進定数)のとき, '4bits ON 4bits OFF 4bits ON 4bits OFF' のような破線が設定される. 1ビット当たりの長さはbitlenが決める.

iundef (Fixnum) <SYSLIB>

不定であることを示す整数型の値(初期値は-999)

rundef (float) <SYSLIB>

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) <SYSLIB>

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) <SYSLIB>

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) <SYSLIB>

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

また、これらのパラメタはメソッドとして用いることができる。すなわち、Plot.nbitsでパラメタnbitsの参照が、Plot.nbits=でパラメタnbitsの変更ができる。

Plot.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Axis.set("lineindex", 3)      #ラインインデクスを3にする。

Plot.get(key)

パラメタを参照する。

引数

使用例

Plot.get("lineindex")      #ラインインデクスを参照する。

Plot.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Plot.reset("lineindex")      # ラインインデクスを初期値に戻す

Plot.help_params

Plotで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Plot.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Plot.draw(x, y, temp=nil)

U座標系で折れ線を描く。

引数

備考

  1. このメソッドはUULINを呼んでいる。
  2. x または y に rundef を指定すると, Fig.variablerange= で指定した定義域を n-1 等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.

Plot.vdraw(x, y, temp=nil)

V座標系で折れ線を描く.

引数

備考

  1. このメソッドはSGPLVを呼んでいる。
  2. x,yの長さは2以上でなければならない.

Plot.rdraw(x, y, temp=nil)

R座標系で折れ線を描く.

引数

備考

  1. このメソッドはSGPLRを呼んでいる。
  2. x,yの長さは2以上でなければならない.

Plot.setlabel(label)

ラベルつき折れ線を描くとき, その文字列を指定する.

引数

備考

  1. このメソッドはSGSPLCを呼んでいる。
  2. 設定する文字列の長さは32文字以下でなければならない.

Plot.nplc

設定されている文字列の最後の文字の文字番号を1つ増やす.

引数 なし

備考

  1. このメソッドはSGNPLCを呼んでいる。
  2. このルーチンを呼ぶと, 設定されている文字列の最後の文字の文字番号が1つふやされる. つまり文字列として'X=1'が指定されていたとすると, nplc を呼ぶことによって設定されている文字列が 'X=2'となる.

NumRu::AdvancedDCL::Contour

本モジュールについて

Contourモジュールは等高線図を描くためのモジュールである。 等高線はU座標系で作画されるので, すべての正規化変換に対応している. このモジュールでは, 等高線図を描くだけで座標軸などの外枠は描かない.

Contour においてユーザーが使用するメソッドとしては以下のようなものがある.

格子点座標に関しては、作画メソッドに格子点情報(座標値として)を与えると自動的に設定してくれる.

2次元データをとにかくコンタリングしたい(quick look)というときには, 単に Contour.draw を呼ぶだけでよい. このときは, 現在設定されているウインドウいっぱいに 等間隔の格子点を設定し, コンターレベルも自動的に生成する.

もしも格子点が不等間隔の場合は, 格子点の座標値を描画メソッドの引数として指定すればよい.

またコンターレベルをあらかじめ指定したいときは, Contour.draw を呼ぶ前に Contour.gcla または Contour.gclb を呼べばよい. ただしこの場合は, 等間隔のコンターレベルしか生成されない. もしも, 不等間隔のコンターレベルを指定したい場合や, 特定のコンターレベルを追加したい場合は, Contour.sclv で1本1本のコンターレベルを生成してやればよい. (1本のコンターレベルを無効にするには Contour.dclv を呼べばよい; すべてのコンターレベルを無効にするには Contour.iclv を呼べばよい. )

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

indexmj (Fixnum) <UDPACK>

major line のラインインデクス(初期値は3).

indexmn (Fixnum) <UDPACK>

minor line のラインインデクス(初期値は1).

label (true or false) <UDPACK>

major line にラベルをつけるかどうかの指定をする. true ならつける; false ならつけない(初期値は true ).

ldash (true or false) <UDPACK>

負のコンターラインを異なるラインタイプで描くかどうかを指定する. true のとき負のコンターラインをパラメタ idash の参照するラインタイプで描く; false のときすべてのコンターラインをパラメタ isolid の参照するラインタイプで描く(初期値は true ).

idash (Fixnum) <UDPACK>

ldash が true のとき,負のコンターレベルに使うラインタイプ(初期値は3:破線).

isolid (Fixnum) <UDPACK>

ldash が true のとき0以上のコンターレベルに,または ldash が false のときすべてのコンターレベルに使うラインタイプ(初期値は1:実線).

icycle (Fixnum) <UDPACK>

minor line を major line の間に何本引くかを指定する. すなわち icycle で参照する値に1本の割合で major line を引き, 残りは minor line を引く(初期値は2).

nlev (Fixnum) <UDPACK>

コンターレベルを自動的に生成するとき,この内部変数を参照して約 nlev 本のコンターレベルを生成する(初期値は12).

labelsize (Float) <UDPACK>

コンターラベルの文字高(単位はV座標系;初期値は不定).この内部変数が不定のとき Axis の管理するパラメタ rsizel1を参照する( Axis 参照).

lmsg (true or false) <UDPACK>

グラフの下部マージンにメッセージを書くかどうかを指定する. true なら書く; false なら書かない(初期値は true ).

titlesize (Float) <UDPACK>

グラフの下部マージンに書くメッセージの文字高(単位はV座標系;初期値は不定).この内部変数が不定のとき Axis の管理するパラメタ rsizel1 を参照する(3.7節参照).

xttl (Float) <UDPACK>

グラフの下部マージンに書くメッセージの位置を決める内部変数. -1 から +1 までの実数値をとりうる. -1 のとき左よせ, 0 のときセンタリング, +1 のとき右よせする(初期値は 0 ).

labelfmt (String) <UDPACK::UDSFMT>

コンターラベルのフォーマットを指定する(長さは16文字以下). たとえばコンターラベルをすべて整数型にしたいとき

Contour.labelfmt = '(I8)' 

とすればよい (文字は左詰めされるのでラベルが8文字以下なら, たとえば '(I12)' でも効果は同じ). 初期値はDCL(rbdcl)のサブルーチンCHVAL (「MISC1」のマニュアルFMTLIB参照)が解釈するオプション'D' (有効数字3ケタでほぼ4-5文字の表現)である.

iundef (Fixnum) <SYSLIB>

不定であることを示す整数型の値(初期値は-999)

rundef (float) <SYSLIB>

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) <SYSLIB>

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) <SYSLIB>

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) <SYSLIB>

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

また、これらのパラメタはメソッドとして用いることができる。すなわち、Contour.xttl でパラメタ xttl の参照が、Contour.xttl= でパラメタ xttl の変更ができる。

Contour.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Contour.set("xttl", -1)      # メッセージを左寄せにする。

Contour.get(key)

パラメタを参照する。

引数

使用例

Contour.get("xttl")      # メッセージの位置を参照する。

Contour.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Contour.reset("xttl")      # メッセージの位置を初期値に戻す

Contour.help_params

Contourで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Contour.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Contour.gcla(max, min, dx)

Contour.draw で使うコンターレベル値を 最小値・最大値および きざみ値またはおよそのレベル数で設定する.

引数

備考

  1. このメソッドはUDGCLAを呼んでいる.
  2. xmin≠xmaxでなければならない.
  3. コンターレベルは dx が決めるきざみ幅の整数倍になるように設定される.
  4. コンターにつけるラベルは, DCL(rbdcl)サブルーチンUDLABLが生成する. このとき使用するフォーマットは, パラメタ labelfmt により参照/変更できる.
  5. コンターには major line と minor line の2種類がある. major line とはラベル付きのコンターで, minor line とはラベルなしのコンターである. (ただし, パラメタ label を false にすれば major line もラベルなしとすることができる. 初期値は true ) major line のラインインデクスはパラメタ indexmj が決める(初期値は3). major line に付けるラベルの文字高はパラメタ rsizel が決める(単位はV座標系の値;初期値は不定. このとき rsizel は Axis の管理する内部変数 rsizel1 を参照する). minor line のラインインデクスは内部変数 indexmn が決める(初期値は1).
  6. パラメタ ldash が true のとき, コンターレベルが負のコンターラインは内部変数 idash を参照してそのラインタイプで描かれる ( ldash の初期値は true, idash の初期値は3:破線). それ以外のコンターラインはパラメタ isolid を参照してそのラインタイプで描かれる ( isolid の初期値は1:実線).
  7. minor line を major line の間に何本引くかは内部変数 icycle (初期値は2)が決める. すなわち icycle で参照する値に1本の割合で major line を引き, 残りは minor line を引く. major line のコンターレベルは dx で決まるきざみ幅の icycle 倍になるように設定される.

Contour.gclb(z, dx)

Contour.draw で使うコンターレベル値を格子点値を与える配列ときざみ値またはおよそのレベル数で設定する.

引数

備考

  1. このメソッドはUDGCLBを呼んでいる.
  2. このルーチンは z の格子点値の最小値・最大値をチェックして, 内部で Contour.gcla を呼んでいる.

Contour.sclv(zlev, index, itype, clv, hl)

コンターラインの属性をすべて指定して1本のコンターレベルを設定する.

引数

備考

  1. このメソッドはUDSCLVを呼んでいる.
  2. Contour.gcla, Contour.gclb は内部でこのメソッドを呼んでいる. 補助線を入れたいときなど Contour.gcla, Contour.gclb を呼んだ後でこのメソッドを呼べば, 引くべきコンターレベルを1本追加できる.
  3. ラベル(clv)の長さは 8 以下でなければならない.
  4. 現在設定されているコンターレベルの属性は

    Contour.levelget

によって参照できる.

Contour.dclv(zlev)

あるコンターレベルを削除する.

引数

備考

  1. このメソッドはUDDCLVを呼んでいる.
  2. Contour.gcla, Contour.gclb によって既に設定されているコンターレベルから特定のコンターレベルを削除したいときこのルーチンを呼べばよい.

Contour.iclv

Contour.gcla, Contour.gclb, Contour.sclv で設定したコンターレベルを無効にする.

引数 なし

備考

  1. このメソッドはUDICLVを呼んでいる.
  2. Contour.gcla, Contour.gclb, Contour.sclv によって既に設定されているコンターレベルを無効にして Contour.draw を呼びたいとき, このルーチンを呼ぶ必要がある.

Contour.intervalget(nlev)

DGCLA, UDGCLB, UDSCLVで設定したコンターレベルの 間隔を求める.

引数

備考

  1. このメソッドはRUDLEVを呼んでいる.
  2. 内部的にはUDQCLV によって第 nlev 番目と nlev+1 番目の コンターレベルの値を調べ, その差(第 nlev+1 番目から nlev 番目を引いた値)を返す.UDQCLVが参照するコンターレベルの値は必ずしも昇順にならんでいるとは限らないことに注意すること.
  3. コンターレベルは 2 本以上設定されていなければならない. また nlev は 1 以上で, 設定されているコンターレベルの総数 より小さくなければならない.これらの条件が満たされないとき RUDVAL は警告メッセージを出して, 0 を返す.

Contour.levelget

現在設定されているコンターレベルの属性を求める。

引数 なし

備考

  1. 返り値は、[[zlev, index, itype, clv, hl], [zlev, ... ], ...] という形のArrayオブジェクトである。

Contour.draw(data, x=nil, y=nil, temp=nil)

2次元等高線図を描く

引数

備考

  1. このメソッドはUDCNTZを呼んでいる。
  2. 格子点の間隔が不等間隔の場合、引数としてx, yを与えてやると自動的に格子点を設定する。
  3. ウィンドウの設定を行っていない場合において、x, yを与えればそれをもとにウィンドウ設定を行い、x, yを与えなければ配列 data の各次元の長さをもとにウィンドウを設定する。
  4. コンターを引くレベルの値がContour.gcla, Contour.gclb または Contour.sclv によって設定されていない場合, 次のサブルーチンを内部で呼んで 約 nlev 本のコンターレベルを設定する.

    Contour.gclb(z, -(nlev)) 

    nlev は Contour の管理するパラメタ nlev が参照する値である(初期値は12).

  5. コンターを引くアルゴリズムの制約から, 格子点の値はどのコンターレベルの値とも等しくてはならない. もしもそのような格子点値があると内部で微小量が修正される (その際メッセージが出力される).
  6. Fig の管理するパラメタ lmiss が true なら欠損値処理をおこなう. (その際, 参照する欠損値は Fig の管理する パラメタ rmiss である. ) false なら欠損値処理をおこなわない.
  7. コンタリングの前にすべての格子点値のチェックをおこなう. 次の2つの場合コンタリングはおこなわずその旨メッセージが出力される. さらにパラメタ lmsg が true のときグラフの下部マージンにもメッセージを書く. false のときメッセージを書かない (初期値は true ).2つの場合とは:

    • すべての格子点が欠損値のとき(missing field).
    • すべての格子点が同一な値のとき(constant field).
  8. パラメタ lmsg が true で引くべきコンターレベルの数が2本以上あるとき, 実数型の関数RUDLEV(1) を呼んで 第1コンターレベルの値(CZL1)と第2コンターレベルの値(CZL2)の差 (CZL2-CZL1)をグラフの下部マージンに書き出す. これらのメッセージは, 地図投影変換以外が設定されているとき, Axis が管理する情報を使って書く. したがって, このような場合は, まず座標軸を描いた後で Contour.draw を呼ぶべきである. いっぽう, 地図投影変換が設定されているとき, 下部マージンの真中に書く.

NumRu::AdvancedDCL::Tone

本モジュールについて

Toneモジュールはカラートーン(モノクロも)を貼るためのモジュールである。 ぬりわけはU座標系でおこなわれるので, すべての正規化変換に対応している.

このパッケージでは, ぬりわけをおこなうだけで 等値線そのものや座標軸の外枠などは描かない.

Tone においてユーザーが使用するサブルーチンとしては以下のようなものがある.

格子点座標に関しては、作画メソッドに格子点情報(座標値として)を与えると自動的に設定してくれる.

2次元データをとにかくぬりわけたい(quick look)というときには, 単に Tone.draw を呼ぶだけでよい. このときは, 現在設定されているウインドウいっぱいに 等間隔の格子点を設定し, 負の領域に斜線のハッチをつける.

ぬりわけるレベル値の設定を Contour と同様にしておこないたいときは, Tone のパラメタ ltoneを true として Tone.draw を呼べば, Contour が自動的に生成するきざみ値で (厳密には Contour と同じアルゴリズムにもとづいてレベル値を設定し)ぬりわける. さらに, Contour.gcla に対応して Tone.gtla, Contour.gclb に対応して Tone.gtlb を呼べば コンターレベルとぬりわけるレベルの値が同一に設定される.

もしも格子点が不等間隔の場合は, 格子点の座標値を描画メソッドの引数として指定すればよい.

上に述べたように, ぬりわけるレベルをあらかじめ指定したいときは, Tone.drawを呼ぶ前に Tone.gtla または Tone.gtlb を呼べばよい. ただしこの場合は, 等間隔のトーンレベルしか生成されない. もしも, 不等間隔のトーンレベルとパターンを指定したい場合や, 特定のトーンレベルとパターンを追加したい場合は, Tone.stlv または Tone.stln を呼べばよい. (すべてのレベルを無効にするには Tone.itlv を呼べばよい. ) なお,ぬりわけは指定したレベルの順におこなう.

このモジュールが用いているトーンプリミティブは 出力装置の能力に応じてhard fillとsoft fillを切替えることができる. Tone が管理するパラメタ lsoftf が true のときはsoft fillをおこなう; false のとき hard fillをおこなう (初期値は true). ただし, hard fillを指定してもその能力がない場合は soft fillとなる.

また, 色を用いたべた塗り(下位3桁が999であるようなトーンパターン番号) による塗りわけをおこなうとき, 色番号をドットなどのパターン番号として読みかえることができる. Tone の管理するパラメタ lcl2tn が true のときは読みかえる; false のときは読みかえない (初期値は false). ただし, 色を用いた塗りわけができないような装置では, lcl2tn が false と設定されていても, パターン番号による読みかえをおこなおうとする.

すでに描かれた図形の上にsoft fillをおこなっても, トーンパターンが上書きされるだけで, それまでに描かれた図形が(べた塗りをしない限り)消えてしまうことはない. しかしながら, 出力装置によってはhard fillによるぬりわけによって先に描かれた図形が消えてしまうことがあるので,座標軸や等高線図と一緒にUEPACKを用いるときは 描く順番に注意すること.

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

icolor1 (Fixnum) <UEPACK>

ltone が true のとき用いる色番号の下限値(初期値は15).

icolor2 (Fixnum) <UEPACK>

ltone が true のとき用いる色番号の上限値(初期値は94).

ipat (Fixnum) <UEPACK>

ltone が false のとき, 内部変数 rlev 以下の領域をぬるトーンパターン(初期値は1201:右上がりの斜線).

nlev (Fixnum) <UEPACK>

トーンレベルを自動的に生成するとき,この内部変数を参照して約 nlev 本のコンターレベルを生成する(初期値は12).

icycle (Fixnum) <UEPACK>

minor line を major line の間に何本引くかを指定する. すなわち icycle で参照する値に1本の割合で major line を引き, 残りは minor line を引く(初期値は2).

ltone (true or false) <UEPACK>

ぬりわけるトーンレベルをユーザーが指定しなかったとき, Tone.gtlb を使ってトーンレベルとトーンパターンを生成するかどうかを指定する. true なら Tone.gtlb をつかう; false なら rlev (下記)以下をぬるような設定をする(初期値は false).

rlev (Float) <UEPACK>

ltone が false のとき, ぬりわける領域の境界値(初期値は0.0).ここで指定した値以下の領域をぬる.

lsoftf (true or false) <SGPACK>

トーンプリミティブで塗りつぶしをおこなうとき soft fill をおこなうか hard fill をおこなうかを指定する. true のときは soft fill をおこなう; false のときは hard fill をおこなう(初期値は false). ただし, hard fill を指定してもその能力がない場合は soft fillとなる.

lcl2tn (true or false) <SGPACK>

色を用いたべた塗りによる塗りわけをおこなうとき, 色番号をドットなどのパターン番号として読みかえるかどうかを指定する. true のときは読みかえる; false のときは読みかえない(初期値は false).ただし, 色を用いた塗りわけができないような装置では, false と設定されていてもパターン番号による読みかえをおこなおうとする.

tnblen (Float) <SGPACK>

トーンプリミティブでドットパターンによる soft fill をおこなう場合,フィルエリアサブプリミティブの下位ルーチンを用い点線の集合として表現する.このとき点線のラインタイプはビットパターンで設定されるが,その1ビットが RC 上でどれだけの長さに相当するかを指定する(初期値は0.001).

irmode (Fixnum) <SGPACK>

トーンプリミティブで指定された閉領域がクリッピング境界にかかる時に, 境界線の向きを指定するパラメタ. 0 のとき反時計回り; 1 のとき時計回り. DCL manual 1.7.5節参照のこと.(初期値は0).

tonepat (Fixnum) <UEPACK, SGPACK>

ltone が true のとき用いるパターン番号(初期値は999, べた塗り).

iundef (Fixnum) <SYSLIB>

不定であることを示す整数型の値(初期値は-999)

rundef (float) <SYSLIB>

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) <SYSLIB>

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) <SYSLIB>

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) <SYSLIB>

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

また、これらのパラメタはメソッドとして用いることができる。すなわち、Tone.nlev でパラメタ nlev の参照が、Tone.nlev= でパラメタ nlev の変更ができる。

Tone.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Tone.set("nlev", 10)      # nlevの値を 10 に設定する

Tone.get(key)

パラメタを参照する。

引数

使用例

Tone.gox("nlev")      # nlev の値を参照する

Tone.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Tone.reset("nlev")      # nlev を初期値に戻す

Tone.help_params

Toneで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Tone.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Tone.gtla(max, min, dx)

Tone.draw で使うトーンレベル値を 最小値・最大値および きざみ値またはおよそのレベル数で設定する.

引数

備考

  1. このメソッドは UEGTLA を呼んでいる.
  2. このルーチンは Contour.gcla (DCL manual 8.2.3節参照) と同じアルゴリズムにもとづいてレベル値を生成している. アルゴリズムを同一にするため、Contour で用いられるパラメタ, nlev, icycle と同じものが, Tone でも用意されている. Contour でこれらの値を変えたときは, Tone でも変更してやらなければならないが、Common のnlev, icycleを変えることで両方変更することが可能である。

Tone.gtlb(z, dx)

Tone.draw で使うコンターレベル値を格子点値を与える配列ときざみ値またはおよそのレベル数で設定する.

引数

備考

  1. このメソッドは UEGTLB を呼んでいる.
  2. このルーチンは z の格子点値の最小値・最大値をチェックして, 内部で Tone.gtla を呼んでいる.

Tone.stlv(zlev, index, itype, clv, hl)

コンターラインの属性をすべて指定して1本のコンターレベルを設定する.

引数

備考

  1. このメソッドは UDSTLV を呼んでいる.
  2. Tone.gtla, Tone.gtlb は内部でこのメソッドを呼んでいる. 補助線を入れたいときなど Tone.gtla, Tone.gtlb を呼んだ後でこのメソッドを呼べば, 引くべきコンターレベルを1本追加できる.
  3. ラベル(clv)の長さは 8 以下でなければならない.
  4. 現在設定されているコンターレベルの属性は

    Tone.levelget

によって参照できる.

Tone.stln(tlevn, ipatn)

ぬりわけるレベルとパターンを配列で複数レベル指定する.

引数

備考

  1. このメソッドは UESTLN を呼んでいる。
  2. Tone.stlv との関連で説明すると, tlev1 として tlevn[i], tlev2 として tlevn[i+1], ipat として ipatn[i] (i=1,...) を 指定したのと同等である. したがって, tlevn[i]<tlev[i+1] でなければならない. くわしくは DCL manual9.2.5節参照.

Tone.itlv

Tone.stlv または Tone.stln で設定したトーンレベルを無効にする.

引数

なし

備考

  1. このメソッドは UEITLV を呼んでいる。
  2. Tone.stln または Tone.stln によって既に設定されているトーンレベルを無効にして Tone.draw を呼びたいとき, このルーチンを呼ぶ必要がある.

Tone.levelget

現在設定されているコンターレベルの属性を求める。

引数 なし

備考

  1. 返り値は、[[tlev1, tlev2, ipat, iton], [tlev1, ... ], ...] という形のArrayオブジェクトである。

Tone.draw(data, x=nil, y=nil, temp=nil)

トーンによる2次元等値線図のぬりわけをおこなう.

引数

備考

  1. このメソッドは UETONE を呼んでいる。
  2. 格子点の間隔が不等間隔の場合、引数としてx, yを与えてやると自動的に格子点を設定する。
  3. ウィンドウの設定を行っていない場合において、x, yを与えればそれをもとにウィンドウ設定を行い、x, yを与えなければ配列 data の各次元の長さをもとにウィンドウを設定する。
  4. ぬりわけをおこなうレベルの値が Tone.gtla, Tone.gtlb, Tone.stlv または Tone.stln によって設定されていない場合, 次のようにぬりわけるレベル値とトーンパターンを設定する. Tone の管理するパラメタ ltone が true のとき,

    Tone.gtlb(data,-(nlev)) 

    を呼んで約 nlev 本のトーンレベルを設定する。nlev はパラメタ nlev が参照する値である (初期値は12); パラメタ ltone が false のとき, パラメタ rlev が参照する値以下の領域をパラメタ ipat が参照する値のトーンパターンでぬりわける (rlev, ipat の初期値はそれぞれ 0.0, 1201:右上がりの斜線). なお ltone の初期値は false である.

  5. パラメタ lmiss が true なら欠損値処理をおこなう. つまり欠損値のまわりの格子点はぬりわけない. (その際, 参照する欠損値は Fig の管理する パラメタ rmiss である. ) false なら欠損値処理をおこなわない. くわしくは DCL manual 「MATH1」のマニュアル参照.
  6. ぬりわけをおこなう前にすべての格子点値のチェックをおこなう. 次の2つの場合ぬりわけはおこなわずその旨メッセージが出力される. 2つの場合とは:

    • すべての格子点が欠損値のとき(missing field).
    • すべての格子点が同一な値のとき(constant field).

Tone.mosaic(data, x=nil, y=nil, temp=nil)

2次元等値線図をモザイク状に描く.

引数

備考

  1. このメソッドは UETONC を呼んでいる。
  2. 格子点の間隔が不等間隔の場合、引数としてx, yを与えてやると自動的に格子点を設定する。
  3. ウィンドウの設定を行っていない場合において、x, yを与えればそれをもとにウィンドウ設定を行い、x, yを与えなければ配列 data の各次元の長さをもとにウィンドウを設定する。
  4. ぬりわけをおこなうレベルの値が Tone.gtla, Tone.gtlb, Tone.stlv または Tone.stln によって設定されていない場合, 次のようにぬりわけるレベル値とトーンパターンを設定する. Tone の管理するパラメタ ltone が true のとき,

    Tone.gtlb(data,-(nlev)) 

    を呼んで約 nlev 本のトーンレベルを設定する。nlev はパラメタ nlev が参照する値である (初期値は12); パラメタ ltone が false のとき, パラメタ rlev が参照する値以下の領域をパラメタ ipat が参照する値のトーンパターンでぬりわける (rlev, ipat の初期値はそれぞれ 0.0, 1201:右上がりの斜線). なお ltone の初期値は false である.

  5. パラメタ lmiss が true なら欠損値処理をおこなう. つまり欠損値のまわりの格子点はぬりわけない. (その際, 参照する欠損値は Fig の管理する パラメタ rmiss である. ) false なら欠損値処理をおこなわない. くわしくは DCL manual 「MATH1」のマニュアル参照.
  6. ぬりわけをおこなう前にすべての格子点値のチェックをおこなう. 次の2つの場合ぬりわけはおこなわずその旨メッセージが出力される. 2つの場合とは:

    • すべての格子点が欠損値のとき(missing field).
    • すべての格子点が同一な値のとき(constant field).

Tone.imdraw(data, x=nil, y=nil, temp=nil)

イメージデータ描画機能を使って, 2次元等値線図のぬりわけをおこなう.

引数 引数

備考

  1. このメソッドは UETONF を呼んでいる。
  2. 格子点の間隔が不等間隔の場合、引数としてx, yを与えてやると自動的に格子点を設定する。
  3. ウィンドウの設定を行っていない場合において、x, yを与えればそれをもとにウィンドウ設定を行い、x, yを与えなければ配列 data の各次元の長さをもとにウィンドウを設定する。
  4. Tone.draw とほぼ互換性があるが, 指定できるトーンパターンはべた塗りだけである.
  5. イメージ描画機能のないデバイスでは使用できない.
  6. ピクセル毎に周囲4点のデータから線形内挿して値 (data) を 求め色を決める. したがって, 色の境界は一般に曲線となる.

Tone.fill(upx, upy, temp=nil)

多角形閉領域をぬりつぶす.

引数

備考

  1. このメソッドは SGTNU を呼んでいる。
  2. upx, upy の長さは 3 以上でなければならない.
  3. 領域をぬりつぶすトーンパターン番号は tonepat で設定する.

Tone.vfill(vpx, vpy, temp=nil)

V座標系で多角形閉領域をぬりつぶす.

引数

備考

  1. このメソッドは SGTNV を呼んでいる。
  2. vpx, vpy の長さは 3 以上でなければならない.
  3. 領域をぬりつぶすトーンパターン番号は tonepat で設定する.

Tone.rfill(rpx, rpy, temp=nil)

R座標系で多角形閉領域をぬりつぶす.

引数

備考

  1. このメソッドは SGTNR を呼んでいる。
  2. rpx, rpy の長さは 3 以上でなければならない.
  3. 領域をぬりつぶすトーンパターン番号は tonepat で設定する.

NumRu::AdvancedDCL::Vector

本モジュールについて

Vectorモジュールは2次元ベクトル場を描くためのモジュールである。 現在のところ, ベクトルの長さのスケーリング等をV座標系でおこない, ベクトルをV座標系で描いているため, 直角直線座標系 (変換関数番号ITR=1〜4)にしか対応していない.

このモジュールにおいて, ベクトルは Arrow をもちいて描かれる. なおこのパッケージでは, ベクトル場を描くだけで座標軸などの外枠は描かない.

Vector においてユーザーが使用するサブルーチンとしては以下のようなものがある.

格子点座標に関しては、作画メソッドに格子点情報(座標値として)を与えると自動的に設定してくれる.

2次元格子点上で与えられたベクトルデータをとにかく描きたい (quick look)というときには, 単に Vector.draw を呼ぶだけでよい. このときは, 現在設定されているウインドウいっぱいに 等間隔の格子点を設定し, ベクトルの長さも自動的スケーリングされる.

ももしも格子点が不等間隔の場合は, 格子点の座標値を描画メソッドの引数として指定すればよい.

またパラメタを設定してやることによって ベクトルのスケーリングファクターを変えたり, ユニットベクトルを描いたりすることができる.

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

lineindex (Fixnum) <UGPACK>

ベクトルを描く線分のラインインデクス.および lmissp , lsmall が true のときに描くマーカーのラインインデクス(初期値は3 ).

icent (Fixnum) <UGPACK>

ベクトルの始点を格子点に対してどこにとるか指定する. +1 ならベクトルの終点が格子点と一致するように描く; 0 ならベクトルの中点が格子点と一致するように描く; -1 ならベクトルの始点が格子点と一致するように描く(初期値は0).

itype1 (Fixnum) <UGPACK>

欠損値処理をおこなうとき, その格子点に描くマーカーのマーカータイプ(初期値は5).

itype2 (Fixnum) <UGPACK>

内部変数'LSMALL'がのとき,その格子点に描くマーカーのマーカータイプ(初期値は1).

iuindx (Fixnum) <UGPACK>

ユニットベクトルにつけるタイトルのラインインデクス(初期値は3).

iunttl (Fixnum) <UGPACK>

設定されている, ユニットベクトルにつけるタイトルの数.ユーザーは値を設定してはいけない.

iutxro (Fixnum) <UGPACK>

X方向のユニットベクトルにつけるタイトルの回転角(単位は度;初期値は0).

iutyro (Fixnum) <UGPACK>

Y方向のユニットベクトルにつけるタイトルの回転角(単位は度;初期値は90).タイトルの長さが1のときに限って iutyro は90以外の値をとることが許される.

leqrat (true or false) <UGPACK>

内部的にスケーリングファクターを決めるとき(lnrmal が true のとき) X方向とY方向のスケーリングファクターを同じにするかどうかを指定する. true なら同じにする(初期値は true).

lmissp (true or false) <UGPACK>

欠損値ベクトルのとき,その格子点にマーカーを描くかどうか(欠損値処理をおこなうかどうか)を指定する. true なら描く; false なら描かない(初期値は false).

lmsg (true or false) <UGPACK>

グラフの下部マージンにスケーリングファクターなどのタイトルを書くかどうかを指定する. true なら書く; false なら書かない(初期値は true).

lnrmal (true or false) <UGPACK>

内部的にスケーリングファクターを決めるかどうかを指定する. true のとき内部的に決める; false のときパラメタ xfact1 , yfact1 を参照する(初期値は true).

lsmall (true or false) <UGPACK>

ベクトルの大きさが内部変数 rsmall で決まる値以下のとき欠損値処理と同じように,その格子点にマーカーを描くかどうか指定する. true なら描く; falseなら描かない(初期値は false).

lumsg (true or false) <UGPACK>

ユニットベクトルを描くときグラフの下部マージンにユニットベクトルの単位を書くかどうかを指定する. true なら書く; false なら書かない(初期値は true).

lunit (true or false) <UGPACK>

ユニットベクトルを描くかどうかを指定する. true なら描く; false なら描かない(初期値は false).

rsizem (Float) <UGPACK>

lmissp, lsmall が true のときに描くマーカーのマーカーサイズ(初期値は0.01).

rsizet (Float) <UGPACK>

グラフの下部マージンに書くタイトルの文字高(単位はV座標系;初期値は不定).このパラメタが不定のとき Axis の管理するパラメタ rsizel1 を参照する(DCL manual 3.7節参照).

rsizeut (Float) <UGPACK>

ユニットベクトルにつけるタイトルの文字高(単位はV座標系;初期値は不定).このパラメタが不定のとき Axis の管理するパラメタ rsizel1 を参照する(DCL manual 3.7節参照).

rsmall (Float) <UGPACK>

パラメタ lsmall が参照するベクトルの大きさのしきい値(初期値は0.001).

rundef (Float) <UGPACK>

値が不定であることを示す内部変数(初期値は-999.0).

uxunit (Float) <UGPACK>

X方向のユニットベクトルの長さ(単位は次元量;初期値は不定).

uyunit (Float) <UGPACK>

Y方向のユニットベクトルの長さ(単位は次元量;初期値は不定).

vxuloc (Float) <UGPACK>

ユニットベクトルの始点のX座標(単位はV座標系;初期値は不定).

vxunit (Float) <UGPACK>

X方向のユニットベクトルの長さ(単位はV座標系;初期値は0.05).

vxuoff (Float) <UGPACK>

vxuloc, vyuloc が陽に指定されていないとき,ユニットベクトルをビューポートの右下隅からX方向にどれだけ離すかを与えるオフセット値(単位はV座標系;初期値は0.02).

vyuloc (Float) <UGPACK>

ユニットベクトルの始点のY座標(単位はV座標系;初期値は不定).

vyunit (Float) <UGPACK>

Y方向のユニットベクトルの長さ(単位はV座標系;初期値は0.05).

vyuoff (Float) <UGPACK>

vxuloc, vyuloc が陽に指定されていないとき,ユニットベクトルをビューポートの右下隅からY方向にどれだけ離すかを与えるオフセット値(単位はV座標系;初期値は0.0).

xfact1 (Float) <UGPACK>

lnrmal が false のときに参照するX方向のスケーリングファクター(初期値は1.0).

xfact2 (Float) <UGPACK>

実際に用いられるX方向のスケーリングファクター(初期値は不定).ユーザーが指定しても意味がない.

xttl (Float) <UGPACK>

グラフの下部マージンに書くタイトルの位置を決める内部変数. -1 から +1 までの実数値をとりうる. -1 のとき左よせ, 0 のときセンタリング, +1 のとき右よせする(初期値は0).

yfact1 (Float) <UGPACK>

lnrmal が false のときに参照するY方向のスケーリングファクター(初期値は1.0).

yfact2 (Float) <UGPACK>

実際に用いられるY方向のスケーリングファクター(初期値は不定).ユーザーが指定しても意味がない.

iundef (Fixnum) <SYSLIB>

不定であることを示す整数型の値(初期値は-999)

rundef (float) <SYSLIB>

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) <SYSLIB>

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) <SYSLIB>

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) <SYSLIB>

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

また、これらのパラメタはメソッドとして用いることができる。すなわち、Vector.xttl でパラメタ xttl の参照が、Vector.xttl= でパラメタ xttl の変更ができる。

Vector.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Vector.set("xttl", -1)      # メッセージを左寄せにする。

Vector.get(key)

パラメタを参照する。

引数

使用例

Vector.get("xttl")      # メッセージの位置を参照する。

Vector.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Vector.reset("xttl")      # メッセージの位置を初期値に戻す

Vector.help_params

Vectorで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Vector.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Vector.uvtitle(cside, cttl)

ユニットベクトルにつけるタイトルを設定する.

引数

備考

  1. このメソッドは UGSUT を呼んでいる。
  2. 設定できるタイトルの数は最大10個, またタイトルの長さは最大32文字である. (3) タイトル文字のラインインデクスは, パラメタ iuindx が決める(初期値は3). また, タイトルの回転角はXおよびY方向についてそれぞれパラメタ iutxro, iutyroが決める (初期値はそれぞれ0, 90:単位は度).

Vector.draw(u, v, x=nil, y=nil, temp=nil)

2次元ベクトル場を描く.

引数

備考

  1. このメソッドはUDCNTZを呼んでいる。
  2. 格子点の間隔が不等間隔の場合、引数としてx, yを与えてやると自動的に格子点を設定する。
  3. ウィンドウの設定を行っていない場合において、x, yを与えればそれをもとにウィンドウ設定を行い、x, yを与えなければ配列 data の各次元の長さをもとにウィンドウを設定する
  4. ベクトルの各成分の単位はV座標系における単位とする. ただし普通は, V座標系の単位に変換した配列U, V を与える必要はなく, スケーリングファクターを与えてやればよい. このスケーリングファクターは, パラメタ lnrmal が true (初期値)なら内部的に決定される; false ならパラメタ xfact1, tfact1 (初期値はそれぞれ1.0)を参照する. したがって, スケーリングファクターを陽に指定したければ, lnrmal を false として xfact1, yfact1 を設定してやればよい. さらに, lnrmal が true のとき, パラメタ leqrat が true ならばXとYの スケーリングファクターを同じにする (初期値は true).
  5. ベクトルは DCL の UFPACK (DCL manual 第14章参照)のなかの UFLNZV によって描かれる. したがってベクトルの形は UFPGET/UFPSET の管理する内部変数によって決まる. ただし, ベクトルを描く線分のラインインデクスはパラメタ lineindex が決める(初期値は3). また, パラメタ icent によってベクトルの始点を格子点に対してどこにとるか指定できる. icentが +1 ならベクトルの終点が格子点と一致するように描く; 0 ならベクトルの中点が格子点と一致するように描く; -1 ならベクトルの始点が格子点と一致するように描く (初期値は0).
  6. Fig の管理するパラメタ lmiss が true なら欠損値処理をおこなう; (その際, 参照する欠損値は Fig の管理するパラメタ rmiss である) false なら欠損値処理をおこなわない. ここでいう欠損値処理とは, ベクトルのXまたはY成分のうち 少なくとも一方が欠損値 (以下では, このようなベクトルを欠損値ベクトルと呼ぶ) のときにおこなわれる処理のことである. 具体的には, パラメタ lmissp が true のときその格子点にマークを描く (描くマークのマーカータイプ, マーカーインデクス,マーカーサイズはパラメタ itype1, lineindex, rsizem を参照する. 初期値はそれぞれ5, 3, 0.01. ); false なら, なにも描かない (初期値は false). また, パラメタ lsmall が true なら パラメタ rsmall が決める値以下のベクトル長の ベクトルについても上と同様な処理をおこなう. ただし描くマーカーのマーカータイプは, パラメタ itype2 を参照する. (lsmall, rsmall, itype2の初期値はそれぞれ false, 0.001, 1. )
  7. 作画をおこなう前にすべてのベクトル値のチェックをおこなう. 次の2つの場合作画はおこなわずその旨メッセージが出力される. さらにパラメタ lmsg が true のときグラフの下部マージンにもメッセージを書く; false のときメッセージを書かない (初期値は true). 2つの場合とは:

    • すべてのベクトルが欠損値ベクトルのとき(missing field).
    • すべてのベクトルがゼロベクトルのとき(zero field).
  8. パラメタ lunit が true ならユニットベクトルを描く; false なら描かない(初期値は false). ユニットベクトルは, パラメタ vxuloc, vyuloc (V座標系におけるx,y座標値:初期値は不定)を陽に指定しなければ ビューポートの右下隅からパラメタ vxuoff, vyuoff で決まる量だけはなれた位置に描かれる (vxuoff, vyuoff の初期値は0.02, 0). またユニットベクトルの長さは, パラメタ vxunit, vyunit で決まる(単位はV座標系;初期値は0.05, 0.05). ただしパラメタ uxunit, uyunit が陽に設定されていればそれらの値を用いる(初期値は不定). uxunit, uyunit は vxunit, vyunit と違ってユニットベクトルが示す次元量の単位で指定する. さらに lunit が true のとき, パラメタlumsg が true ならユニットベクトルの大きさを図の下部マージンに書く(初期値は true); lunit が false のとき, パラメタ lmsg が true ならスケーリングファクターを図の下部マージンに書く(初期値は true). これらのメッセージは DCL の UXPTTL (DCL manual 3.8.5節参照)を使って書く. したがって, まず座標軸を描いた後で Vector.draw を呼ぶべきである.

NumRu::AdvancedDCL::Map

本モジュールについて

Mapモジュールは地図情報(海岸線や緯度経度線)を描くためのモジュールである。

Map においてユーザーが使用するサブルーチンとしては以下のようなものがある.

Mapモジュールの描画メソッドは内部で DCLのサブルーチン UMPFIT を呼んでいる。 地図投影に必要なパラメータがすべて設定されているとき, UMPFIT はなにもしない. いっぽう, 地図投影に必要なパラメータが1つでも設定されていないとき, UMPFIT はすでに設定された情報から, 適切なパラメタを決定しようと試みる. UMPFIT の動作は大きく分けて以下の2段階からなる.

  1. 地図投影の極 (PLX, PLY, PLROT)を決める.
  2. 指定された点, および範囲が全て入るように, 相似変換パラメタ(SIMFAC, VXOFF, VYOFF) を調節する.

すなわち, まず地図投影の中心となるべき点を定め, 後は拡大/縮小および平行移動で必要な範囲を図に収める.

この地図投影の中心となるべき点のことをパッケージでは「接点」と呼ぶ. 円筒図法および円錐図法においては, 球と投影面は線で接しているが, この接線と中央経線の交点を「接点」とする. 方位図法における「接点」は地図投影の極と同義である. これは地図学上の正確な言葉ではないが, 通常もっとも歪みの少ない中心となるべき点を表わす全ての図法共通の用語 として「接点」という言葉を使うことにする.

UMPFIT の第一段階は, この「接点」を求めることである. このために使われる情報の優先順位は以下の通りである.

  1. Fig.mapangle= による極の指定.
  2. Fig.contactpoint= による接点の指定.
  3. Fig.circlewindow= による円形ウィンドウの指定.
  4. Fig.window= による矩形ウィンドウの指定.
  5. Fig.inclepoint= による描画点指定.
  6. デフォルト値 (PLX=0, PLY=90)

優先順位の高い情報が指定されていれば, それ以下の情報は無視される.

第二段階の描画範囲決定は, Fig.circlewindow= による円形ウィンドウ, Fig.window= による矩形ウィンドウ, Fig.inclpoint= によって指定された点, 全てが描画範囲に入るように行なわれ, これらの間に優先順位はない. これらの描画範囲を決定する情報が指定されていなかった場合は, 全球が指定されたものと見なす. ただし, Map.set によってパラメタ lglobe が true に設定された場合は, ウィンドウなどの情報は全て無視され全球が描画される. このとき, 無限遠を含む以下の図法に関してはT座標系の次の範囲を「全球」 と見なす.

なお, ビューポートのパラメタVXMIN, VXMAX, VYMIN, VYMAXの一部または全部が指定されていなかった場合には, まず, 最大描画範囲に指定された範囲が最大内接するようにスケーリングされ, さらに指定された範囲が描画できる最小のビューポートを設定する. Map では同じ結果を得る複数のコーディングが可能であるが, 標準的な使用法を以下に示す.

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

indexmj (Fixnum) <UMPACK>

Map.grid が描く緯度線・経度線の major line のラインインデクス(初期値は3).

indexmn (Fixnum) <UMPACK>

Map.grid が描く度線・経度線の minor line のラインインデクス(初期値は1).

lgridmj (true or false) <UMPACK>

Map.grid が緯度線・経度線を描くとき major line を描くかどうかを指定する. true なら描く; false なら描かない(初期値は true).

lgridmn (true or false) <UMPACK>

Map.grid が緯度線・経度線を描くとき minor line を描くかどうかを指定する. true なら描く; false なら描かない(初期値は true).

itypemj (Fixnum) <UMPACK>

Map.grid が描く緯度線・経度線の major line のラインタイプ(初期値は 1).

itypemn (Fixnum) <UMPACK>

Map.grid が描く緯度線・経度線の minor line のラインタイプ(初期値は3).

dgridmj (Float) <UMPACK>

Map.grid が描く緯度線・経度線の major line の間隔(単位は度; 初期値は30.0).

dgridmn (Float) <UMPACK>

Map.grid が描く緯度線・経度線の minor line の間隔(単位は度; 初期値は10.0).

dgrplmj (Float) <UMPACK>

Map.grid が描く経度線の major line を極からどれだけはいったところから描くかを指定する.(単位は度; 初期値は0.0).

dgrplmn (Float) <UMPACK>

Map.grid が描く経度線の minor line を極からどれだけはいったところから描くかを指定する.(単位は度; 初期値は0.0).

indexbnd (Fixnum) <UMPACK>

Map.limb が描く地図境界線のラインインデクス(初期値は3).

maxbnd (Fixnum) <UMPACK>

Map.limb が描く地図境界線を描くときいくつぐらいの線分に分割して描くかを設定する(初期値は300).

indexout (Fixnum) <UMPACK>

海岸線などの地図情報を描く線分のラインインデクス(初期値は1).

itypeout (Fixnum) <UMPACK>

海岸線などの地図情報を描く線分のラインタイプ(初期値は1).

lglobe (true or false) <UMPACK>

全球を描くようにするかどうかを指定する. true なら全球を描く; false なら全球を描かない(初期値は false).

また、これらのパラメタはメソッドとして用いることができる。すなわち、Map.indexmj でパラメタ indexmj の参照が、Map.indexmj= でパラメタ indexmj の変更ができる。

Map.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Map.set("indexmj", 5)      # majorラインのインデクスを5にする。

Map.get(key)

パラメタを参照する。

引数

使用例

Map.get("indexmj")      # majorラインのインデクスを参照する。

Map.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Map.reset("indexmj")      # majorラインのインデクスを初期値に戻す

Map.help_params

Mapで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Map.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Map.draw(temp=nil)

地図の境界線 (縁) と緯度線, 経度線を描く.

引数

備考

  1. このメソッドは UMPGLB を呼んでいる。
  2. これは次の Map.grid と Map.limb を連続して呼んでいる.

Map.grid(temp=nil)

緯度線・経度線を描く.

引数

備考

  1. このメソッドは UMPGRD を呼んでいる。
  2. 描く緯度線・経度線の種類としては major line と minor line の 2種類がある.
  3. major line を描くかどうかはパラメタ lgridmj が決める(初期値は true). 描くその間隔は dgridmj が決める. また描く線分の属性は indexmj, itypemj が決める (初期値はそれぞれ3, 1). さらに子午線に関しては, パラメタ dgrplmj によって 極から何度はいったところから描くかが指定できる(初期値は0).
  4. minor line を描くかどうかは パラメタ lgridmn が決める(初期値は true. 描くその間隔は dgridmn が決める. また描く線分の属性は indexmn, itypemn が決める (初期値はそれぞれ1, 3). さらに子午線に関しては, パラメタ dgrplmn によって 極から何度はいったところから描くかが指定できる(初期値は0).
  5. dgridmj と dgridmn は Frame.new を 呼んだタイミングで「不定」に設定される. これらの値が不定のとき, 地図の大きさから適当な値が設定される.

Map.limb(temp=nil)

地図の境界線 (縁) を描く.

引数

備考

  1. このメソッドは UMPLIM を呼んでいる。
  2. 地図境界を描く線分のラインインデクスはパラメタ indexbnd が決める(初期値は3). ラインタイプはつねに1 (実線)である.

Map.open(file, temp=nil)

各種地図情報を描く.

引数

備考

  1. このメソッドは UMPMAP を呼んでいる。
  2. file で指定したファイル名が直接用いられるとは限らない. 実際に読み込まれるファイル名は DCL(rbdcl)の UMQFNM が決める. UMQFNM の標準的な仕様では, まずカレントディレクトリを探す. 次に GLCGET/GLCSET が管理する内部変数 'DUPATH'のさすディレクトリを探す. 最後に内部変数'DSPATH'のさすディレクトリを探す.
  3. 現在のところ次のような地図情報ファイルが用意されている.

    • 'coast_world' : 世界の海岸線.
    • 'border_world' : 世界の国境.
    • 'plate_world' : 世界のプレート境界.
    • 'state_usa' : アメリカの州境.
    • 'coast_japan' : 日本の海岸線.
    • 'pref_japan' : 日本の県境.

NumRu::AdvancedDCL::Text

本モジュールについて

Textモジュールは図中にテキストを貼るためのモジュールである。

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

ifont (Fixnum) <SGPACK>

フォント番号(初期値は1).

lcntl (true or false) <SGPACK>

テキストプリミティブで文字を描くとき,制御文字('ISUP','ISUB','IRST'参照)を有効とするかどうかを指定する. true のときは有効とする; falseのときは有効としない(初期値は false).

small (Float) <SGPACK>

上付および下付添え字の標準文字高に対する比率(初期値は0.7).

shift (Float) <SGPACK>

上付および下付添え字の中心を標準文字の中心からどれだけはなすかを標準文字高に対する比率で指定する(初期値は0.3).

isup (Fixnum) <SGPACK>

上付添え字のモードの始まりをしめす制御文字の文字番号.初期値は124;これは'|'に対応する.

isub (Fixnum) <SGPACK>

下付添え字のモードの始まりをしめす制御文字の文字番号.初期値は95;これは'_'に対応する.

irst (Fixnum) <SGPACK>

上付および下付添え字のモードの終わりをしめす制御文字の文字番号.初期値は34;これは'"'に対応する.

charsize (Numeric) <SGPACK::SGSTXS>

Text.draw, Text.vdraw, Text.rdraw で描く文字の高さをV座標系における単位で指定する(初期値は0.05).

charrot (Numeric) <SGPACK::SGSTXR>

文字列の傾きを度の単位で与える (初期値は0).

charcent (Numeric) <SGPACK::SGSTXC>

Text.draw, Text.vdraw, Text.rdraw で描く文字列の センタリングオプションを設定する.-1, 0 +1のいずれかを指定する.( -1 : 左あわせ, 0 : 中央あわせ, +1 : 右あわせ)

charindex (Numeric) <SGPACK::SGSTXI>

Text.draw, Text.vdraw, Text.rdraw で描く文字の ラインインデクスを設定する(1.7節参照;初期値は1).

また、これらのパラメタはメソッドとして用いることができる。すなわち、Text.charindex でパラメタ charindex の参照が、Text.charindex=でパラメタcharindexの変更ができる。

Text.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Text.set("charindex", 3)      #文字のラインインデクスを3にする。

Text.get(key)

パラメタを参照する。

引数

使用例

Text.get("charindex")      #文字のラインインデクスを参照する。

Text.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Text.reset("charindex")      # 文字のラインインデクスを初期値に戻す

Text.help_params

Textで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Text.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Text.draw(ux, uy, chars, x=nil, y=nil, temp=nil)

文字列を描く.

引数

備考

  1. このメソッドは SGTXU を呼んでいる。
  2. 描く文字列の属性はパラメタ charsize, charrot, charcent, charindex で設定する.
  3. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定する。

Text.vdraw(ux, uy, chars, x=nil, y=nil, temp=nil)

V座標系で文字列を描く.

引数

備考

  1. このメソッドは SGTXV を呼んでいる。
  2. 描く文字列の属性はパラメタ charsize, charrot, charcent, charindex で設定する.
  3. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定する。

Text.rdraw(ux, uy, chars, x=nil, y=nil, temp=nil)

R座標系で文字列を描く.

引数

備考

  1. このメソッドは SGTXR を呼んでいる。
  2. 描く文字列の属性はパラメタ charsize, charrot, charcent, charindex で設定する.
  3. ウィンドウを指定していないとき、引数としてx,yを指定するとx,yを基にウィンドウを設定する。

Text.spchar(number)

DCL文字番号に対応する文字を返す.

引数

備考

  1. このメソッドは CSGI を呼んでいる。

NumRu::AdvancedDCL::Arrow

本モジュールについて

Arrowモジュールは単一の矢じり付き線分を描くためのモジュールである。

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

lprop(true or false)<SGPACK>

矢じり部分の線分を本体部分の線分の長さに比例させて描くかどうかを指定する.TRUEなら比例させて描く; FALSEならパラメタconstで指定してある一定値で,地図投影のときはパラメタconstmで指定してある一定値で描く(初期値はTRUE).

luarw(true or false)<SGPACK>

地図投影のとき, 矢じり部分の線分も地図にへばりついたように描くかどうかを指定する.TRUEなら地図上で描く; FALSEならVCで描く(初期値はTRUE).

afact(Float)<SGPACK>

lpropが TRUE(比例させて描く)のときに用いる比例定数(初期値は0.33).

const(Float)<SGPACK>

lpropがFALSE(一定値で描く)のときに用いる一定値(単位はVC;初期値は0.01).

constm(Float)<SGPACK>

lpropがFALSE(一定値で描く)でかつ地図投影のときに用いる一定値(単位は度;初期値は5.0).

angle(Float)<SGPACK>

矢じり部分の線分と本体部分の線分のなす角(単位は度;初期値は20.0).

latone(true or false)<SGPACK>

矢じり部分を定義する三角形の領域を塗りつぶすかどうかを指定する.TRUEなら塗りつぶす;FALSEなら塗りつぶさない(初期値はFALSE).

iatone(Fixnum)<SGPACK>

矢じり部分を定義する三角形の領域を塗りつぶす)のときのトーンパターン(初期値は999).3桁以下のとき, カラーインデクスは軸の部分について指定されているものを用いる.

arrowtype(Fixnum)<SGPACK::SGSLAT>

線分の ラインタイプを設定する. arrowtypeは0以外でなければならない. ただしarrowtypeが0のとき, メッセージは出力されるがなにもしない.

arrowindex(Fixnum)<SGPACK::SGSLAI>

線分の ラインインデクスを設定する. lineindexは1以上でなければならない. ただしlineindexが0のとき, メッセージは出力されるがなにもしない.

iundef (Fixnum) <SYSLIB>

不定であることを示す整数型の値(初期値は-999)

rundef (float) <SYSLIB>

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) <SYSLIB>

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) <SYSLIB>

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) <SYSLIB>

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

また、これらのパラメタはメソッドとして用いることができる。すなわち、Arrow.lpropでパラメタlpropの参照が、Arrow.lprop=でパラメタlpropの変更ができる。

Arrow.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Axis.set("arrowindex", 3)      # アローインデクスを3に設定

Arrow.get(key)

パラメタを参照する。

引数

使用例

Axis.get("arrowindex")      # アローインデクスを参照する

Arrow.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Arrow.reset("arrowindex")      # アローインデクスを初期値に戻す

Arrow.help_params

Arrowで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Arrow.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Arrow.draw(x1, y1, x2, y2, temp=nil)

U座標系で矢じり付き線分を描く。

引数

備考

  1. このメソッドはSGLAUを呼んでいる。

Arrow.vdraw(x1, y1, x2, y2, temp=nil)

V座標系で矢じり付き線分を描く。

引数

備考

  1. このメソッドはSGLAVを呼んでいる。

Arrow.rdraw(x1, y1, x2, y2, temp=nil)

R座標系で矢じり付き線分を描く。

引数

備考

  1. このメソッドはSGLARを呼んでいる。

NumRu::AdvancedDCL::Mark

本モジュールについて

Markモジュールはマーカーを描くためのモジュールである。概要はAdvancedDCL::Plotと同じ.

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

pmfact (Float) <SGPACK>

ポリマーカープリミティブが描くマーカーの大きさを調整する係数(初期値は2.0).ポリマーカープリミティブはテキストプリミティブを用いてマーカーを描く.このとき, 描くマーカーは標準的な文字高に比べて小さい(DCL manual フォントテーブル8.1.2,8.1.3節参照).この内部変数はマーカーが標準的な文字高を持つようにするため使われる拡大係数である.

npmskip (Fixnum) <SGPACK>

ポリマーカープリミティブでマーカーを描くとき,何個に1個の割合で描くかを指定する(初期値は1;すべてマーカーを描く. Mark.draw がバッファリングする最大個数50以下でなければならない).

marktype (Numeric) <SGPACK::SGSPMT>

Mark.draw, Mark.vdraw, Mark.rdraw で描くマーカータイプを設定する. marktype が 1 のとき'.', 2 のとき'+', 3 のとき'*', 4 のとき'o'のように, DCL文字番号(DCL manual 2.12節および 8.1.2, 8.1.3節の フォントテーブル参照)に対応する文字を描く. たとえば marktype = 152のとき, 'α'を描く.

markindex (Numeric) <SGPACK::SGSPMI>

Mark.draw, Mark.vdraw, Mark.rdraw で描くマーカーの ラインインデクスを設定する. markindex は1以上でなければならない. ただし markindex が0のとき, メッセージは出力されるがなにもしない. markindex の妥当性はこのルーチンでチェックされず, Mark.draw, Mark.vdraw, Mark.rdraw を呼んだときにチェックされる.

marksize (Numeric) <AGPACK::SGSPMS>

Mark.draw, Mark.vdraw, Mark.rdraw で描くマーカーの大きさを設定する. V-座標系における単位で指定する(初期値は0.01). marksize は0より大きくなければならない. ただし marksize が0のとき, メッセージは出力されるがなにもしない. marksize の妥当性はこのルーチンでチェックされず, Mark.draw, Mark.vdraw, Mark.rdraw を呼んだときにチェックされる.

iundef (Fixnum) <SYSLIB>

不定であることを示す整数型の値(初期値は-999)

rundef (float) <SYSLIB>

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) <SYSLIB>

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) <SYSLIB>

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) <SYSLIB>

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

また、これらのパラメタはメソッドとして用いることができる。すなわち、Mark.nbitsでパラメタnbitsの参照が、Mark.nbits=でパラメタnbitsの変更ができる。

Mark.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Mark.set("markindex", 3)      #マーカーインデクスを3にする。

Mark.get(key)

パラメタを参照する。

引数

使用例

Mark.get("markindex")      #マーカーインデクスを参照する。

Mark.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Mark.reset("markindex")      # マーカーインデクスを初期値に戻す

Mark.help_params

Markで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Mark.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Mark.draw(x, y, temp=nil)

マーカー列を描く.

引数

備考

  1. このメソッドは UUMRK を呼んでいる。
  2. x, yの長さは 1 以上でなければならない.
  3. 描くマーカーの属性はパラメタ marktype, markindex, marksize で設定する.

Mark.vdraw(x, y, temp=nil)

V座標系でマーカー列を描く.

引数

備考

  1. このメソッドは SGPMV を呼んでいる。
  2. x, yの長さは 1 以上でなければならない.
  3. 描くマーカーの属性はパラメタ marktype, markindex, marksize で設定する.

Mark.rdraw(x, y, temp=nil)

R座標系でマーカー列を描く.

引数

備考

  1. このメソッドは SGPMR を呼んでいる。
  2. x, yの長さは 1 以上でなければならない.
  3. 描くマーカーの属性はパラメタ marktype, markindex, marksize で設定する.

NumRu::AdvancedDCL::ThreeD

本モジュールについて

ThreeDモジュールは3D図を描くためのモジュールである。

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

lineindex (Numeric) <SCPACK::SCSPLI>

ThreeD.plot, ThreeD.vplot で描く折れ線の ラインインデクスを設定する.

npmskip (Fixnum) <SGPACK>

ポリマーカープリミティブでマーカーを描くとき,何個に1個の割合で描くかを指定する(初期値は1;すべてマーカーを描く. ThreeD.mark がバッファリングする最大個数50以下でなければならない).

marktype (Numeric) <SCPACK::SCSPMT>

ThreeD.mark, ThreeD.vmark で描くマーカータイプを設定する. marktype が 1 のとき'.', 2 のとき'+', 3 のとき'*', 4 のとき'o'のように, DCL文字番号(DCL manual 2.12節および 8.1.2, 8.1.3節の フォントテーブル参照)に対応する文字を描く. たとえば marktype = 152のとき, 'α'を描く.

markindex (Numeric) <SCPACK::SCSPMI>

ThreeD.mark, ThreeD.vmark で描くマーカーの ラインインデクスを設定する. markindex は1以上でなければならない. ただし markindex が0のとき, メッセージは出力されるがなにもしない. markindex の妥当性はこのルーチンでチェックされず, ThreeD.mark, ThreeD.vmark を呼んだときにチェックされる.

marksize (Numeric) <SCPACK::SCSPMS>

ThreeD.mark, ThreeD.vmark で描くマーカーの大きさを設定する. V-座標系における単位で指定する(初期値は0.01). marksize は0より大きくなければならない. ただし marksize が0のとき, メッセージは出力されるがなにもしない. marksize の妥当性はこのルーチンでチェックされず, ThreeD.mark, ThreeD.vmark を呼んだときにチェックされる.

tpat (Numeric(2)) <SCPACK::SCSTNP>

SCTNU, SCTNV で用いるトーンパターン番号を設定する. tpat = [itpat1, itpat2]のとき、itpat1, itpat2はそれぞれ表と裏のトーンパターン番号(初期値は1)である. DCL manual 8.1.4- 8.1.10節参照.

iundef (Fixnum) <SYSLIB>

不定であることを示す整数型の値(初期値は-999)

rundef (float) <SYSLIB>

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) <SYSLIB>

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) <SYSLIB>

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) <SYSLIB>

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

なお、Fixnum(2)などという表記は中身がFixnumの長さ2の配列であることを意味している。

また、これらのパラメタはメソッドとして用いることができる。すなわち、ThreeD.nbitsでパラメタnbitsの参照が、ThreeD.nbits=でパラメタnbitsの変更ができる。

ThreeD.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

ThreeD.set("markindex", 3)      # 3次元マーカーインデクスを3にする。

ThreeD.get(key)

パラメタを参照する。

引数

使用例

ThreeD.get("markindex")      # 3次元マーカーインデクスを参照する。

ThreeD.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

ThreeD.reset("markwindex")      # 3次元マーカーインデクスを初期値に戻す

ThreeD.help_params

ThreeDで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

ThreeD.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

ThreeD.plot(x, y, z, temp=nil)

折れ線を描く.

引数

備考

  1. このメソッドは SCPLU を呼んでいる。
  2. 各座標の配列の長さは 2 以上でなければならない.
  3. 描く折れ線の属性はパラメタ lineindex で設定する.

ThreeD.vplot(x, y, z, temp=nil)

V座標系で折れ線を描く.

引数

備考

  1. このメソッドは SCPLV を呼んでいる。
  2. 各座標の配列の長さは 2 以上でなければならない.
  3. 描く折れ線の属性はパラメタ lineindex で設定する.

ThreeD.mark(x, y, z, temp=nil)

マーカー列を描く.

引数

備考

  1. このメソッドは SCPMU を呼んでいる。
  2. 各座標の配列の長さは1以上でなければならない.
  3. 描くマーカーの属性はパラメタ marktype, markindex, marksize で設定する.

ThreeD.vmark(x, y, z, temp=nil)

V座標系でマーカー列を描く.

引数

備考

  1. このメソッドは SCPMV を呼んでいる。
  2. 各座標の配列の長さは1以上でなければならない.
  3. 描くマーカーの属性はパラメタ marktype, markindex, marksize で設定する.

ThreeD.tone(x, y, z, temp=nil)

三角形閉領域をぬりつぶす.

引数

  1. このメソッドは SCTNU を呼んでいる。
  2. 領域をぬりつぶすトーンパターン番号はパラメタ tpat で設定する.

ThreeD.vtone(x, y, z, temp=nil)

V座標系で三角形閉領域をぬりつぶす.

引数

  1. このメソッドは SCTNV を呼んでいる。
  2. 領域をぬりつぶすトーンパターン番号はパラメタ tpat で設定する.

NumRu::AdvancedDCL::Bar

本モジュールについて

Barモジュールは棒グラフを描くためのモジュールである。概要はAdvancedDCL::Plotと同じ.

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

frtype(Numeric)<UUPACK::UUSFRT>

枠のラインタイプを指定する. 設定する属性は Bar.frame,Box.frame で使われる.

frindex(Numeric)<UUPACK::UUSFRI>

枠のラインインデクスを指定する. 設定する属性は Bar.frame,Box.frame で使われる.

barwidth(Numeric)<UUPACK::UUSBRS>

棒グラフの横巾を指定する.

lineindex(Numeric)<UUPACK::UUSLNI>

折れ線のラインインデクスを指定する.

linetype(Numeric)<UUPACK::UUSLNT>

折れ線のラインタイプを指定する。

variablerange(Array[2, Numeric])<UUPACK::UUSIDV>

独立変数の定義域を指定する.

uref(Float)<UUPACK>

Bar.(x,y)frm,Bar.(x,y)tone,Bar.(x,y)lineの引数X1, Y1 または X2, Y2 に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.

itpat(Array[2, Numeric])<UUPACK::UUSARP>

内部領域を塗るトーンパターンを指定する. ここで設定する番号は Gap.tone,Bar.tone,Box.tone で使われる.

iundef (Fixnum) <SYSLIB>

不定であることを示す整数型の値(初期値は-999)

rundef (float) <SYSLIB>

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) <SYSLIB>

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) <SYSLIB>

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) <SYSLIB>

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

なお、Array[2, Float]などという表記は中身がFloat型の配列である長さ2のArrayであることを意味している。

また、これらのパラメタはメソッドとして用いることができる。すなわち、Bar.frtypeでパラメタfrtypeの参照が、Bar.frtype=でパラメタfrtypeの変更ができる。

Bar.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Bar.set("frindex", 3)      # 枠のラインインデクスを3に設定する

Bar.get(key)

パラメタを参照する。

引数

使用例

Bar.get("frindex")      #枠のラインインデクスを参照する

Bar.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Bar.reset("frindex")      # 枠のラインインデクスを初期値に戻す

Bar.help_params

Barで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Bar.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Bar.yfrm(x1, x2, y, temp=nil)

Yを独立変数とする棒グラフの枠を描く.

引数

備考

  1. このメソッドはUHBRFを呼んでいる。
  2. yに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(x1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. x1または x2に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. 枠の属性はパラメタfrtype, frindexで指定する. 棒の幅はbarwidthで指定する.

Bar.xfrm(x, y1, y2, temp=nil)

Xを独立変数とする棒グラフの枠を描く.

引数

備考

  1. このメソッドはUVBRFを呼んでいる。
  2. xに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(y1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. y1または y2に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. 枠の属性はパラメタfrtype, frindexで指定する. 棒の幅はbarwidthで指定する.

Bar.ytone(x1, x2, y, temp=nil)

棒グラフの内部領域を塗る.

引数

備考

  1. このメソッドはUVBRAを呼んでいる。
  2. yに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(x1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. x1または x2に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. トーンパターンはパラメタでtpat指定する. 棒の幅はbarwidthで指定する.

Bar.xtone(x, y1, y2, temp=nil)

棒グラフの内部領域を塗る.

引数

備考

  1. このメソッドはUHBRAを呼んでいる。
  2. xに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(y1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. y1または y2に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. トーンパターンはパラメタでtpat指定する. 棒の幅はbarwidthで指定する.

Bar.yline(xd, y, temp=nil)

棒グラフを線で結ぶ.

引数

備考

  1. このメソッドはUVBRLを呼んでいる。
  2. yに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(x1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. xdに RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. 線の属性はパラメタlinetype, lineindexで指定する. 棒の幅は barwidth で指定する.

Bar.xline(x, yd, temp=nil)

棒グラフを線で結ぶ.

引数

備考

  1. このメソッドはUHBRLを呼んでいる。
  2. xに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(y1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. ydに RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. 線の属性はパラメタlinetype, lineindexで指定する. 棒の幅はbarwidthで指定する.

NumRu::AdvancedDCL::Box

本モジュールについて

Boxモジュールは箱グラフを描くためのモジュールである。概要はAdvancedDCL::Plotと同じ.

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

frtype(Numeric)<UUPACK::UUSFRT>

枠のラインタイプを指定する. 設定する属性は Bar.frame,Box.frame で使われる.

frindex(Numeric)<UUPACK::UUSFRI>

枠のラインインデクスを指定する. 設定する属性は Bar.frame,Box.frame で使われる.

lineindex(Numeric)<UUPACK::UUSLNI>

折れ線のラインインデクスを指定する.

linetype(Numeric)<UUPACK::UUSLNT>

折れ線のラインタイプを指定する。

variablerange(Array[2, Numeric])<UUPACK::UUSIDV>

独立変数の定義域を指定する.

uref(Float)<UUPACK>

Box.(x,y)frm, Box.(x,y)tone, Box.(x,y)lineの引数x1, y1 または x2, y2 に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.

itpat(Array[2, Numeric])<UUPACK::UUSARP>

内部領域を塗るトーンパターンを指定する. ここで設定する番号は Gap.tone,Bar.tone,Box.tone で使われる.

iundef (Fixnum) <SYSLIB>

不定であることを示す整数型の値(初期値は-999)

rundef (float) <SYSLIB>

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) <SYSLIB>

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) <SYSLIB>

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) <SYSLIB>

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

なお、Array[2, Float]などという表記は中身がFloat型の配列である長さ2のArrayであることを意味している。

また、これらのパラメタはメソッドとして用いることができる。すなわち、Box.frtypeでパラメタfrtypeの参照が、Box.frtype=でパラメタfrtypeの変更ができる。

Box.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Box.set("frindex", 3)      # 枠のラインインデクスを3に設定する

Box.get(key)

パラメタを参照する。

引数

使用例

Box.get("frindex")      #枠のラインインデクスを参照する

Arrow.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Box.reset("frindex")      # 枠のラインインデクスを初期値に戻す

Box.help_params

Boxで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Box.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Box.yfrm(x1, x2, y, temp=nil)

Yを独立変数とする箱グラフの枠を描く.

引数

備考

  1. このメソッドはUHBXFを呼んでいる。
  2. yに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(x1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. x1または x2に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. 枠の属性はパラメタfrtype, frindexで指定する.

Box.xfrm(x, y1, y2, temp=nil)

Xを独立変数とする箱グラフの枠を描く.

引数

備考

  1. このメソッドはUVBXFを呼んでいる。
  2. xに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(y1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. y1または y2に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. 枠の属性はパラメタfrtype, frindexで指定する.

Box.ytone(x1, x2, y, temp=nil)

箱グラフの内部領域を塗る.

引数

備考

  1. このメソッドはUVBXAを呼んでいる。
  2. yに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(x1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. x1または x2に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. トーンパターンはパラメタでtpat指定する.

Box.xtone(x, y1, y2, temp=nil)

箱グラフの内部領域を塗る.

引数

備考

  1. このメソッドはUHBXAを呼んでいる。
  2. xに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(y1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. y1または y2に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. トーンパターンはパラメタでtpat指定する.

Box.yline(xd, y, temp=nil)

箱グラフを線で結ぶ.

引数

備考

  1. このメソッドはUVBXLを呼んでいる。
  2. yに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(x1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. xdに RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. 線の属性はパラメタlinetype, lineindexで指定する.

Box.xline(x, yd, temp=nil)

箱グラフを線で結ぶ.

引数

備考

  1. このメソッドはUHBXLを呼んでいる。
  2. xに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(y1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. ydに RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. 線の属性はパラメタlinetype, lineindexで指定する.

NumRu::AdvancedDCL::Gap

本モジュールについて

Gapモジュールは線と線の間を塗るためのモジュールである。概要はAdvancedDCL::Plotと同じ.

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

variablerange(Array[2, Numeric])<UUPACK::UUSIDV>

独立変数の定義域を指定する.

uref(Float)<UUPACK>

Gap.(x,y)tone の引数 X1, Y1 または X2, Y2 に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.

itpat(Array[2, Numeric])<UUPACK::UUSARP>

内部領域を塗るトーンパターンを指定する. ここで設定する番号は Gap.tone,Bar.tone,Box.tone で使われる.

iundef (Fixnum) <SYSLIB>

不定であることを示す整数型の値(初期値は-999)

rundef (float) <SYSLIB>

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) <SYSLIB>

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) <SYSLIB>

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) <SYSLIB>

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

なお、Array[2, Float]などという表記は中身がFloat型の配列である長さ2のArrayであることを意味している。

また、これらのパラメタはメソッドとして用いることができる。すなわち、Gap.tpatでパラメタ tpat の参照が、Gap.tpat= でパラメタ tpat の変更ができる。

Gap.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Gap.set("tpat", [299, 499])      # トーンパターンを[299, 499]に設定する

Gap.get(key)

パラメタを参照する。

引数

使用例

Gap.get("tpat")      #トーンパターンを参照する

Gap.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Gap.reset("tpat")      # トーンパターンを初期値に戻す

Gap.help_params

Gapで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Gap.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Gap.ytone(x1, x2, y, temp=nil)

2本の折れ線の間をトーンパターンで塗る.

引数

備考

  1. このメソッドは UVDIF を呼んでいる。
  2. x または y に RUNDEF を指定すると, パラメタ variablerange で指定した定義域を n-1 等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. x1, y1 または x2, y2 に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. Gap.ytone , Gap.xtone が塗るトーンパターンはパラメタ tpat で指定する.

Gap.xtone(x, y1, y2, temp=nil)

2本の折れ線の間をトーンパターンで塗る.

引数

備考

  1. このメソッドは UHDIF を呼んでいる。
  2. x または y に RUNDEF を指定すると, パラメタ variablerange で指定した定義域を n-1 等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. x1, y1 または x2, y2 に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. Gap.ytone , Gap.xtone が塗るトーンパターンはパラメタ tpat で指定する.

NumRu::AdvancedDCL::Errbar

本モジュールについて

Errbarモジュールはエラーバーを描くためのモジュールである。概要はAdvancedDCL::Plotと同じ.

パラメタ

パラメタ名 パラメタの型 対応するDCLパッケージ

errbartype (Numeric) <UUPACK::UUSEBT>

エラーバーのラインタイプ.

errbarindex (Numeric) <UUPACK::UUSEBI>

エラーバーのラインインデクス.

errbarsize (Numeric) <UUPACK::UUSEBS>

エラーバーの横幅.

variablerange(Array[2, Numeric])<UUPACK::UUSIDV>

独立変数の定義域を指定する.

uref(Float)<UUPACK>

Box.(x,y)frm, Box.(x,y)tone, Box.(x,y)lineの引数x1, y1 または x2, y2 に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.

iundef (Fixnum) <SYSLIB>

不定であることを示す整数型の値(初期値は-999)

rundef (float) <SYSLIB>

不定であることを示す実数型の値(初期値は-999.0)

lmiss (true or false) <SYSLIB>

欠損値処理をおこなうか どうかを指定する. true ならおこなう, false ならおこなわない (初期値は false).

imiss (Fixnum) <SYSLIB>

欠損値処理をおこなうときの整数型の欠損値を指定する (初期値は999).

rmiss (Float) <SYSLIB>

欠損値処理をおこなうときの実数型の欠損値を指定する (初期値は999.0).

なお、Array[2, Float]などという表記は中身がFloat型の配列である長さ2のArrayであることを意味している。

また、これらのパラメタはメソッドとして用いることができる。すなわち、Errbar.errbartype でパラメタ errbartype の参照が、Errbar.errbartype= でパラメタ errbartype の変更ができる。

Errbar.set(key, val)

パラメタの設定を行う。valにnilを指定すると値をDCLにおける初期値に戻す。

引数

使用例

Errbar.set("errbarindex", 3)      # エラーバーのラインインデクスを3に設定する

Errbar.get(key)

パラメタを参照する。

引数

使用例

Errbar.get("errbarindex")      # エラーバーのラインインデクスを参照する

Errbar.reset(key, val)

パラメタをDCLにおける初期値に戻す。

引数

使用例

Errbar.reset("errbarindex")      # エラーバーのラインインデクスを初期値に戻す

Errbar.help_params

Errbarで設定可能なパラメタを参照する。

引数 なし

備考

  1. このメソッドは設定可能なパラメタに関して、パラメタ名、現在の値、パラメタの型を返す。

Errbar.sync

現在、設定されているパラメタをDCLに反映させる。

引数

なし

備考

AdvancedDCLにおいてはsetメソッドのみではパラメタはDCLに反映されず、

パラメタをsyncさせるメソッドを内部で呼んでいる。このメソッドはユーザがパ ラメタを陽にsyncできるためのメソッドである。

Errbar.ydraw(x1, x2, y, temp=nil)

Yを独立変数とするエラーバー描く.

引数

備考

  1. このメソッドは UVERB を呼んでいる。
  2. yに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(x1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. x1または x2に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. エラーバーの属性はパラメタ errbartype, errbarindex, errbarsize で指定する.

Errbar.xdraw(x, y1, y2, temp=nil)

Xを独立変数とするエラーバー描く.

引数

備考

  1. このメソッドは UHERB を呼んでいる。
  2. xに RUNDEF を指定すると, パラメタvariablerangeで指定した定義域を(y1.length)等分した点が 指定されたものとみなす. 定義域が指定されていなければ, ウインドウ全体を定義域とする.
  3. y1または y2に RUNDEF を指定すると, パラメタ uref の値が指定されたものとみなす. uref の初期値は 0 である.
  4. エラーバーの属性はパラメタ errbartype, errbarindex, errbarsize で指定する.