[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:002060] Re: GGraph and gpview
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:002060] Re: GGraph and gpview
- From: Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxxx>
- Date: Tue, 25 Jan 2005 22:34:26 +0900
竹広さん
(1)をやったついでに (2),(3)もやってコミットしちゃいました。
((4)のテスト埋め込みはペンディング。今後の課題です。コミットし
たのが私なので、私への課題というつもりです。竹広さんは解放しま
す。)
> > (1) やはり unless opts['itr']==5 then ... のように相似変換と
> > itr==5 を同一視するコーディングは変えた方がいいと思います。
>
> そうなってましたか. そりゃまずいですね. 変えましょう.
先ほどお送りした分を取り込みました。
> > (2) 相似変換のときは polar_coordinate_boundaries を呼ぶという
> > ふうにしてますが、itr=5 以外にも通用するのでしょうか。もし
> > itr=5 限定でしたら、そのように限るべきです。そして出来れば
> > itr=6 用のも欲しいところです。双曲線座標なので書くとして
> > も恐らく viewport の枠ぐらいでしょうから簡単でしょう。
> > (メソッド map 内に viewport の枠を書く例があります。)
>
> 今のところ itr=5 限定ですね.
similar なら polar_coordinate_boundaries を呼ぶのでなく、変換番
号が 5 なら呼ぶという風に変えました。つまり DCL.sgqtrn==5
の判断です。
> > (3) topology / modulo という属性の解釈は GGraph ではやりたく
> > ないです(GGraph は GPhys クラスとは一応独立なので、出来るだけ
> > GPhys オブジェクトの詳細に依存させたくないです)。 今の場合、
> > 投影する座標系そのものが cyclic ということで、ここは単純に
> > GPhys#cyclic_ext を呼ぶだけにしてください。座標系の角
> > 度の単位は度かradが仮定されてないでしょうか? となるとmoduloは
> > 自ずと決まりますね。 ちなみに、将来課題として gtool4 コンベン
> > ションのちゃんとしたサポートをしたいと思ってます。その折りには、
> > GPhys#cyclic_ext 内で modulo を自動取得できるようにしたいです。
> > (その際、別のコンベンションでは topology & modulo の指定の
> > 仕方が異なるということを許容できるようにしたいです。)
これは上記のようにし、さらに polar_coordinate_boundaries の第3
引数を外して自動判定にしました。こうするメリットは、経度を限って
表示した場合にも対応できるということです。以下のようなテストを加
えました(添付)。
# 赤道面断面 2
GGraph.tone( gp.cut('lon'=>0..180), true, {'transpose'=>true} )
GGraph.contour( gp.cut('lon'=>0..180), false, {'transpose'=>true} )
堀之内
#
# Test program for GGraph, implemented rectangular curvelinear coordinate.
# (2004/01/25 S. Takehiro)
#
# Drawing initial temperature field for dynamo benchmark test.
#
#require "numru/ggraph"
require "./ggraph"
include NumRu
gphys = GPhys::NetCDF_IO.open('case1_initial.nc', 'temp')
# 子午面断面
gp = gphys.cut('lon'=>0.0,'t'=>0.0 )
DCL.gropn(1)
GGraph.set_fig('itr'=>5 )
GGraph.tone( gp, true, {'transpose'=>true} )
GGraph.contour( gp, false, {'transpose'=>true} )
# 子午面断面 2
if defined?(DCL::DCLVERSION) && DCL::DCLVERSION >= '5.3'
gp = gphys.cut('lon'=>0.0,'t'=>0.0 )
GGraph.set_fig('itr'=>5)
GGraph.next_fig('window'=>[-0.7,1.7,-1.2,1.2])
GGraph.tone( gp, true, {'transpose'=>true} )
GGraph.contour( gp, false, {'transpose'=>true} )
end
# 赤道面断面
gp = gphys.cut('lat'=>0.0,'t'=>0.0 )
GGraph.set_fig('itr'=>5 )
GGraph.tone( gp, true, {'transpose'=>true} )
GGraph.contour( gp, false, {'transpose'=>true} )
# 赤道面断面 2
GGraph.tone( gp.cut('lon'=>0..180), true, {'transpose'=>true} )
GGraph.contour( gp.cut('lon'=>0..180), false, {'transpose'=>true} )
# 赤道面断面(ちょっと大きめ)
GGraph.set_fig('itr'=>5 )
GGraph.set_fig('similar'=>[0.25,-0.1,0.05] )
GGraph.tone( gp, true, {'transpose'=>true} )
GGraph.contour( gp, false, {'transpose'=>true} )
# 正射投影
gp = gphys.cut('rad'=>1.0,'t'=>0.0 )
GGraph.set_fig('itr'=>30 )
GGraph.set_fig('map_axis'=>[0,30,20] )
GGraph.tone( gp, true )
GGraph.contour( gp, false )
DCL.grcls