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

[dennou-ruby:003653] Re: numru/ggraph_on_merdional_section.rb のパッチ



西本さま:

説明ありがとうございます。

> GGraph.vector_on_merdional_sectionのプログラムを見てみると、(lat,p)座標を(m,log-p)座標に変換していますね。その後は、DCLExt.flow_vectなどで作画しています。

それが基本的に正しい(私がいう「筋がいい」)方向性です。
(よかったです。)
誤解させてしまったようですみませんが,私自身は GGraph.vector 
を使ってるといっても...

> 自分で書いてやってみたのですが、(lat,p)座標のままでもウィンドウとvxfxratio, vxfyratioを適切に設定してやれば、望みの図は書けますね。

このようにするのは,(論理的に)綺麗なやり方ではないので,
やりません。

ベクトルを空間的に配置して意味があるのは,それがその空間に密接に
関わる場合です。最も基本的なのは,ベクトルがその空間の線分に対応
する場合で,x, y 座標の単位が A, B であれば(そう,鉛
直断面のややこしさは両軸の単位が異なる場合が多いこと),
ベクトルのx,y成分の単位もそれぞれ A,B となる場合です。
これを緩めて,ベクトルの長さは空間とは直接対応しないけど
向きには意味があるというのが(実際の応用の多くはこれ),
共通の単位 C を掛けて AC, BC となる場合です(例えば
速度なら C は 1/s とか。フラックスもその仲間)。
GPhys::vector の下請けの flow_vect は,このような
場合を想定してます。(単位をチェックするわけではないですが。)

従って,上記の関係があてはまらない「ベクトル」を表示するには,

  1 ベクトルの各成分をしかるべくスケーリングする
    (あくまで,ベクトルをです。可視化の設定でなく。)
か
  2 座標軸のほうをしかるべくスケーリングする
  
ことになります。これが,私がいう「なんとかする」の意味です。

なお,2 の場合も座標軸を書く段になってもとの座標系に
戻るということが,DCL ならできるので,
GGraph.vector_on_merdional_section
はそうしてるのでしょう。

# パッチは取り込んでおこうと思います。

> 堀之内さま
> 
> お返事ありがとうございます。
> ベクトル作画はいままであまり使う機会がなかったのですが、ここ最近増えてきて奮闘しているところです。
> ベクトル作画は慣れないとなかなか手強いですね。これまで、基本的な仕組みをちゃんと把握していないままでも、なんとなく…で描けてしまっていたところを、浮き掘りにされている感じがします。
> 
> そもそも悩んでいたことは、ベクトル(x,y)にかかるファクターを個別に設定するにはどうしたらよいのか、というところでした。EP-fluxや、平均風速でもそうですが、鉛直方向の値のスケールは水平方向のものよりも(単位の取り方にも依りますが)1ケタ以上小さいので、鉛直流を目立たせたい場合には上記のような設定が必要になります。
> しかし、GGraph::vectorを使って描くと、個別に指定できないので悩んでいたところ、ggraph_on_merdional_sectionのライブラリを見つけて飛びついたのでした。
> # 結局、自分でvxfxratioなどを指定したかったので、
> このライブラリを参考にしながら直にDCLExt.flow_vectを呼んでいます。どうやら自分が欲しかったのは、ベクトル作画のサンプルだったようです。
> 
> > 基本的な問題は,log-p 座標ベースのフラックスを,座標が p のままで
> > 無理やり出そうというところからくることだろうと思いますが。
> GGraph.vector_on_merdional_sectionのプログラムを見てみると、(lat,p)座標を(m,log-p)座標に変換していますね。その後は、DCLExt.flow_vectなどで作画しています。
> 自分で書いてやってみたのですが、(lat,p)座標のままでもウィンドウとvxfxratio, vxfyratioを適切に設定してやれば、望みの図は書けますね。
> 
> 西本
> 
> 2013/8/29 Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxx>:
> > 西本さん
> >
> > ご指摘ありがとうございます。しかし,vector_on_merdional_section
> > なんて記憶にないなぁとおもったら,ずっと前に塚原さんが EP flux
> > ベクトル表示用に作ってたんですね。確かに子午面でのベクトル描画は
> > 気をつけないと変なことになりがちですね。ただ私自身はこれは使わず
> > 普通に GGraph を使ってなんとかしてるので,そもそもの動作のまとも
> > さや筋の良さについては(少なくとも今は)把握してません。ということ
> > でこの際教えてほしいのですが,そのあたりどうですか。
> > (ご指摘のバグ自体は明白ですね。)
> >
> > 基本的な問題は,log-p 座標ベースのフラックスを,座標が p のままで
> > 無理やり出そうというところからくることだろうと思いますが。
> >
> >> みなさま
> >>
> >> GGraph::vector_on_merdional_section を使って緯度-高度面での
> >> ベクトル図を描くときに、"xintv"や"yintv"を使ってデータを間引くところに
> >> バグを見つけました。
> >>
> >> 訂正しましたので、パッチを送ります。
> >>
> >> 西本
> >
> > 堀之内 武
> > 北海道大学 地球環境科学研究院 地球圏科学部門
> > 〒060-0810 札幌市北区北10条西5丁目
> >
> >
> 

堀之内 武
北海道大学 地球環境科学研究院 地球圏科学部門
〒060-0810 札幌市北区北10条西5丁目