10.2.1 UGVECT

1.
機能
2次元ベクトル場を描く.
2.
呼び出し方法
CALL UGVECT(U,MU,V,MV,NX,NY)
3.
パラメーターの説明
U (R) ベクトルのX成分を与える MU×NYの2次元配列. 作画には NX×NYの部分を使う.
MU (I) 配列 Uの第1次元整合寸法.
V (R) ベクトルのY成分を与える MV×NYの2次元配列. 作画には NX×NYの部分を使う.
MV (I) 配列 Vの第1次元整合寸法.
NX (I) 作画に使う配列 U, Vの第1次元寸法.
NY (I) 作画に使う配列 U, Vの第2次元寸法.
4.
備考
(a)
ベクトルの各成分の単位はV座標系における単位とする. ただし普通は, V座標系の単位に変換した配列U, V を与える必要はなく, スケーリングファクターを与えてやればよい. このスケーリングファクターは, 内部変数'LNRMAL'.TRUE.(初期値)なら 内部的に決定される; .FALSE.なら内部変数'XFACT1', 'YFACT1' (初期値はそれぞれ1.0)を参照する. したがって, スケーリングファクターを陽に指定したければ, 'LNRMAL'.FALSE.として 'XFACT1', 'YFACT1'を設定してやればよい. さらに, 'LNRMAL'.TRUE.のとき, 内部変数'LEQRAT'.TRUE.ならばXとYの スケーリングファクターを同じにする (初期値は .TRUE.).
(b)
ベクトルはUFPACK (第14章参照)のなかの UFLNZVによって描かれる. したがってベクトルの形はUFPGET/UFPSETの管理する 内部変数によって決まる. ただし, ベクトルを描く線分のラインインデクスは内部変数'INDEX'が 決める(初期値は3). また, 内部変数'ICENT'によってベクトルの始点を格子点に対して どこにとるか指定できる. 'ICENT'が+1ならベクトルの終点が格子点と一致するように描く; 0ならベクトルの中点が格子点と一致するように描く; -1ならベクトルの始点が格子点と一致するように描く (初期値は0).
(c)
X方向の格子点の座標がUWSGXAまたはUWSGXB によって設定されていない場合, SGQWNDでウインドウ情報を 取得し ウインドウのUXMIN, UXMAXNX-1等分するような 格子点を設定する.
(d)
Y方向の格子点の座標がUWSGYAまたはUWSGYB によって設定されていない場合, SGQWNDでウインドウ情報を 取得し ウインドウのUYMIN, UYMAXNY-1等分するような 格子点を設定する.
(e)
GLpGET/GLpSET(「MATH1」のマニュアル参照)の 管理する内部変数'LMISS'.TRUE.なら欠損値処理をおこなう; (その際, 参照する欠損値は GLpGET/GLpSETの管理する 内部変数'RMISS'である) .FALSE.なら欠損値処理をおこなわない. ここでいう欠損値処理とは, ベクトルのXまたはY成分のうち 少なくとも一方が欠損値 (以下では, このようなベクトルを欠損値ベクトルと呼ぶ) のときにおこなわれる処理のことである. 具体的には, 内部変数'LMISSP'.TRUE.のときその格子点にマークを描く (描くマークのマーカータイプ, マーカーインデクス, マーカーサイズは内部変数 'ITYPE1', 'INDEX', 'RSIZEM'を参照する. 初期値はそれぞれ5, 3, 0.01. ); .FALSE.なら, なにも描かない (初期値は.FALSE.). また, 内部変数'LSMALL'.TRUE.なら 内部変数'RSMALL'が決める値以下のベクトル長の ベクトルについても上と同様な処理をおこなう. ただし描くマーカーのマーカータイプは, 内部変数'ITYPE2'を参照する. ('LSMALL', RSMALL, ITYPE2の初期値はそれぞれ .FALSE., 0.001, 1. )
(f)
作画をおこなう前にすべてのベクトル値のチェックをおこなう. 次の2つの場合作画はおこなわずその旨メッセージが出力される. さらに内部変数'LMSG'.TRUE.のときグラフの下部マージンにもメッセージを書く; .FALSE.のときメッセージを書かない (初期値は.TRUE.). 2つの場合とは:
  • すべてのベクトルが欠損値ベクトルのとき(missing field).
  • すべてのベクトルがゼロベクトルのとき(zero field).
(g)
内部変数'LUNIT'.TRUE.ならユニットベクトルを描く; .FALSE.なら描かない(初期値は.FALSE.). ユニットベクトルは, 内部変数'VXULOC', 'VYILOC' (V座標系におけるx,y座標値:初期値は不定)を陽に指定しなければ ビューポートの右下隅から内部変数 'VXUOFF', 'VYUOFF'で決まる量だけはなれた位置に描かれる ('VXUOFF', 'VYUOFF'の初期値は0.02, 0). またユニットベクトルの長さは, 内部変数VXUNIT, VYUNITで 決まる(単位はV座標系;初期値は0.05, 0.05). ただし内部変数UXUNIT, UYUNITが陽に設定されていれば それらの値を用いる(初期値は不定). UXUNIT, UYUNITVXUNIT, VYUNITと違って ユニットベクトルが示す次元量の単位で指定する. さらに'LUNIT'.TRUE.のとき, 内部変数'LUMSG'.TRUE.ならユニットベクトルの 大きさを図の下部マージンに書く(初期値は.TRUE.); 'LUNIT'.FALSE.のとき, 内部変数'LMSG'.TRUE.ならスケーリングファクターを 図の下部マージンに書く(初期値は.TRUE.). これらのメッセージはUXPTTL (3.8.5節参照)を使って書く. したがって, まず座標軸を描いた後でUGVECTを呼ぶべきである.