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

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



中野様:

大塚です。

'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