今度は, 2次元のベクトル場を手早く矢印で見たいというときの例題です. 次
の QUICK5 は簡単な変形場を描くプログラムですが, Vector
にあるメソッド Vector.draw 1つを呼ぶだけで十分です. 前節の等高線
図の場合と同様に, おまかせの座標軸を描画したあとで Vector.draw メソッドを呼んでベクトル場を描いています.
この例では, やはり, 等間隔の格子点を設定して, それぞれの格子点でのベク
トルを矢印で表現します. おまかせ描画のときには, ベクトルの長さが格子点
間隔を越えないようにスケーリングファクターが決定され, それを乗じてベク
トルが描かれます. この場合, x成分とy成分のスケーリングファクターは
同じになっていて, 図の下部マージンにはその値が表示されています.
ベクトル場も Vector のメソッドを使うことによって高度な作図ができるよ うになります. これも第9章で説明することにしましょう.
# # quick5.rb require "narray" require "numru/advanceddcl" include NumRu::AdvancedDCL include NMath nx = 21 ny = 21 xmin = -1.0 xmax = 1.0 ymin = -1.0 ymax = 1.0 u = NArray.sfloat(nx, ny) v = NArray.sfloat(nx, ny) #-- data ---- for j in 0..ny-1 for i in 0..nx-1 x = xmin + (xmax-xmin)*i/(nx-1) y = ymin + (ymax-ymin)*j/(ny-1) u[i,j] = x v[i,j] = -y end end #-- graph ---- Dev.open Frame.new Fig.window=[xmin,xmax,ymin,ymax] Fig.viewport=[0.2, 0.8, 0.2, 0.8] Fig.transnum=1 Axis.draw Vector.draw(u, v) Dev.closePROGRAM QUICK5