[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:003551] GGraph.vectorでflow_vect_anyprojが呼ばれるときkeepが効かない
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:003551] GGraph.vectorでflow_vect_anyprojが呼ばれるときkeepが効かない
- From: Masuo Nakano <masuo@xxxxxxxxxxxxxx>
- Date: Fri, 20 Apr 2012 13:15:03 +0900
中野です。
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