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

[dennou-ruby:003553] Re: GGraph.vectorでflow_vect_anyprojが呼ばれるときkeepが効かない



堀之内(「開発者」)です。

確認してからレスしようと思いつつずるずる先伸ばしてました。
中野さん、大塚さんありがとうございます。

> 'keep' => true の時に、スケーリングは意図通りに前の図と同じなのに、
> 単位ベクトルの長さが前の図と同じにならなかったんですね。

最大値で出してたと思います。簡便に最大値がわかるのは
いいんですが、「同じスケールである」ことがみてもわからない
というのが問題ですね。こちらの解決を優先したほうがいいと
思うので、(取り込んでくれた)同じにする変更でいいと思います。

# 私自身が前に作った図で keep かつユニットベクトル一定らしい
   のがあると思ったら、len_unit で陽に指定してました。問題だけは
   認識してたようで... (^^;)

> 中野様:
> 
> 大塚です。
> 
> 'keep' => true の時に、スケーリングは意図通りに前の図と同じなのに、
> 単位ベクトルの長さが前の図と同じにならなかったんですね。
> 単位ベクトルの長さも同じであるほうが良いように思います。
> 
> ひとまず取り込みました。ありがとうございました。
> 
> 開発者の方:
> 問題がありそうでしたら修正お願いいたします。
> 
> 
> (2012/04/20 13:15), Masuo Nakano wrote:
> > 中野です。
> > 
> > GGraph.vectorでは
> > opts['flow_vect_anyproj'] ||
> >             ( opts['flow_vect_anyproj'].nil?&&  opts['flow_vect']&&  itr>=2 )
> > がtrueのとき
> > DCLExt.flow_vect_anyproj
> > が呼ばれることになっています。
> > 
> > DCLExt.flow_vect_anyprojが呼ばれてかつ、keep=>trueのとき、
> > 次にGGraph.vectorが呼ばれたときに
> > 描画される単位ベクトルの長さは変わらないのですが、
> > それが意味するベクトルの大きさが変わっていました。
> > 
> > 単位ベクトルの長さ意味するベクトルの大きさがが変わらないように修正しましたので
> > パッチを送ります。
> > 
> > これが意図する動作なのかよくわかりませんが、
> > もしよかったら取り込んでいただけますと幸いです。
> > 
> > 
> > 
> > --- ggraph.rb.org       2012-04-20 11:06:28.458580226 +0900
> > +++ ggraph.rb   2012-04-20 12:55:51.890580151 +0900
> > @@ -2948,6 +2948,7 @@
> >      @@vxfxratio=nil    # for flow_vect
> >      @@vyfyratio=nil    # for flow_vect
> >      @@vfratio=nil      # for flow_vect_anyproj
> > +    @@flenmax=nil      # for flow_vect_anyproj
> > 
> >      @@vector_options = Misc::KeywordOptAutoHelp.new(
> >        ['title', nil, 'Title of the figure(if nil, internally determined)'],
> > @@ -2994,13 +2995,14 @@
> >          end
> >        elsif opts['flow_vect_anyproj'] ||
> >              ( opts['flow_vect_anyproj'].nil?&&  opts['flow_vect']&&  itr>=2 )
> > -        @@vfratio, flenmax =
> > +       @@vfratio, @@flenmax =
> >              DCLExt.flow_vect_anyproj(fx.val, fy.val, xaxv, yaxv,
> >                                       opts['factor'], 1, 1,
> > opts['distvect_map'],
> >                                       (opts['keep']&&  @@vfratio),
> > +                                     (opts['keep']&&  @@flenmax),
> >                                       opts['polar_thinning'] )
> >          if opts['unit_vect']
> > -          len_unit = opts['len_unit'] || flenmax
> > +          len_unit = opts['len_unit'] || @@flenmax
> >            DCLExt.unit_vect_single(@@vfratio, len_unit)
> >          end
> >        elsif opts['flow_vect']
> > 
> > 
> > --- dclext.rb.org       2012-04-20 11:29:56.802634874 +0900
> > +++ dclext.rb   2012-04-20 12:46:21.230691944 +0900
> > @@ -1287,8 +1287,7 @@
> > 
> >      def flow_vect_anyproj(fx, fy, xg, yg,
> >                            factor=1.0, xintv=1, yintv=1,
> > -                          distvect_map=true, vfratio=nil, polar_thinning=nil)
> > -
> > +                          distvect_map=true, vfratio=nil,
> > flenmax=nil, polar_thinning=nil)
> >        #<  parameters to handle singularity of the projection>
> > 
> >        ddv = 0.3e-3  # Initial value for viewport sampling to find directions.
> > @@ -1355,8 +1354,13 @@
> >        else
> >          ux0,ux1,uy0,uy1 = wnd
> >        end
> > +
> >        flen = Misc::EMath.sqrt( fx*fx + fy*fy )
> > +
> > +      if !flenmax
> >        flenmax = flen.max
> > +      end
> > +
> >        if !vfratio
> >          vx0,vx1,vy0,vy1 = DCL.sgqvpt
> >          dvf = Math::sqrt( (vx1-vx0)*(vy1-vy0)/nx/ny )
> > 
> > 
> > 
> > --
> > Masuo NAKANO, PhD
> > Global Cloud-Resolving Modeling Research Team,
> > RIGC, JAMSTEC
> > 3173-25 Showa-machi, Kanazawa-ku
> > Yokohama-city, 236-0001, JAPAN
> > TEL: +81-45-778-5616
> 
> 
> -- 
> 京都大学大学院理学研究科
> 気象学研究室
> 大塚成徳 (Shigenori OTSUKA)
> email: otsuka@xxxxxxxxxxxxxxxxxx
> tel: 075-753-3935

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