[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:002794] Re: GGraph.vector
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:002794] Re: GGraph.vector
- From: Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxxx>
- Date: Thu, 28 Jun 2007 10:47:37 +0900
竹広さん
お久しぶりです。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 宇治市五ヶ庄 京都大学生存圏研究所