[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002794] Re: GGraph.vector



竹広さん

お久しぶりです。GGraph の vector は内部で、UGVECT を呼んでます。
UGVECT は ITR=1..4 しか対応してないので、GGraph::vector も対応
してません。(実質 ITR=1 と同じ ITR=10 でも使えると思いますが。)

もう少し詳しく書くと、GGraph::vector は、デフォルトでは
同じ ggraph.rb に定義してある、DCLExt::flow_vect 経由で UGVECT
を呼びます。flow_vect は、U座標のスケーリングをみて、ベクトル場
が「流れ」である場合、矢印の方向が正しく U 座標において流れる方向
を指すように、ベクトル2成分の比を再スケーリングしてUGVECTに渡します。
よって、矢印の行く先を目の子でたどっていくと、ちゃんと流れがわかる
ようになってます。多くの場合、ベクトルはそういうふうに表示したいの
ではないでしょうか。

DCL のベクトルが、投影座標をサポートしてないのは、
「矢印の向きをどう定義していいかわからないから」と聞いたような
記憶があります。しかし、上のように向きを定義すると、局所的に
どういう向きにすればいいかは、地図投影でも一意に決まります。
問題は長さスケーリングをどうすべきかですね。局所的な縮尺にあ
わせて伸び縮みさせるか、一律にするかのいずれかでしょうから、
2つ作ればいい気がします。おそらく需要は、一律スケーリングの
方が大ではないかと思いますが。

ということで、誰か本家 DCL にそういうのを作って入れてくれると
いいと思います。

# ruby コードで構わないって? 以前から時々欲しいと思うことは
   ありますが、当面必要に迫られてないので、私はあてにしない
   でください。

さて、GGraph::vector のソースをみると、確かに itr=5 の処理があります
ね。ただ、境界条件の処理や、枠の書き方に関するところなので、tone など
に入れた処理をそのまま vector にも持ち込んでるだけのように見えます。
つまり、「flow_vect が対応してくれれば、その前後の処理はする」
という風になっているように見えます。(作ったときのことは覚えてないの
で、ひとごとのような書き方ですみません。)


> 平面極座標においてベクトル図を描きたいのですが, 
> GGraph.vector は itr=5 をサポートしているのでしょうか. 
> 
> 単純に
> 
>   GGraph.set_fig( 'itr'=>5 )
>   GGraph.vector( gpux, gpuy, newframe=true )
> 
> なんてことをやると外枠は描かれるが矢印が描かれませんでした. 
> 
> サポートしてないならできるようにするにはどこをどのようにすれば
> 良いのでしょうか. ソースをちらっと眺めるに itr?5 なる文字列が
> 目につきましたが....

--
堀之内 武  <horinout@xxxxxxxxxxxxxxxxxx>
611-0011 宇治市五ヶ庄  京都大学生存圏研究所