プログラム KIHONC で, いろいろな矢印や線分を描いてみましょう. U-座標系での矢印描画は, Arrow.draw メソッドで行ないます. 引数は, (X1,Y1) が始点の座標, (X2,Y2) が終点の座標です. 線分の終点から 対称な2本の線分を付け加えて矢じり部分とします. 最初の例のように, デフォ ルトでは, 本体部分が長くなるのに比例して矢じり部分も大きくなります.
# # kihonc.rb require "narray" require "numru/advanceddcl" include NumRu::AdvancedDCL include NMath #-- graph --- Dev.open Frame.new Fig.window=[0.0, 10.0, 0.0, 10.0] Fig.viewport=[0.0, 1.0, 0.0, 1.0] Fig.transnum=1 #-- デフォルト ---- y1 = 9.0 for i in 1..8 x1 = i x2 = x1 + 0.1*i y2 = y1 + 0.1*i Arrow.draw(x1, y1, x2, y2) end #-- 線分のラインタイプ ---- y1 = 8.0 y2 = 8.6 for i in 1..4 x1 = 2*i - 1 x2 = x1 + 0.6 Arrow.draw(x1, y1, x2, y2, "arrowtype"=>i) end #-- 線分のラインインデクス ---- y1 = 7.0 y2 = 7.6 for i in 1..4 x1 = 2*i x2 = x1 + 0.6 Arrow.draw(x1, y1, x2, y2, "arrowindex"=>i) end #-- 矢じり部分の長さ ---- Arrow.lprop= false Arrow.const= 0.03 y1 = 6.0 for i in 1..8 x1 = i x2 = x1 + 0.1*i y2 = y1 + 0.1*i Arrow.draw(x1, y1, x2, y2) end Arrow.lprop= true #-- 矢じり部分の角度 ---- y1 = 5.0 y2 = 5.6 for i in 1..8 x1 = i x2 = x1 + 0.6 Arrow.draw(x1, y1, x2, y2, "angle"=>10.0*i) end #-- 矢じり部分のぬりつぶし ---- Tone.lsoftf=true Arrow.latone= true Arrow.iatone= 655 y1 = 4.0 y2 = 4.6 for i in 1..8 x1 = i x2 = x1 + 0.6 Arrow.draw(x1, y1, x2, y2, "angle"=>10.0*i) end #-- ラインサブプリミティブ ---- #-- デフォルト ---- Plot.draw([0.0, 10.0], [3.0, 3.0]) #-- 線分のラインインデクス ---- y1 = 0.5 y2 = 2.5 for i in 1..4 x1 = 2*i - 1 x2 = x1 + 2.0 Plot.draw([x1, x2], [y1, y2], "lineindex"=>i) end Dev.close
パラメタarrowtype ルーチンでは矢印を描く線分のラインタイプを, arrowindex
ではそのラインインデクスを設定できます(2番めと3番め). また,ア
ローサブプリミティブに関する内部変数を設定し直すことにより, 矢じり部分
の形状を変えることもできます. 4番めの例では, パラメタ lprop を
.FALSE. として矢じり部分の長さが一定値となるようにし, その長さを
パラメタconst で陽に与えました. さらに, 矢じり部分の線分と本
体部分の線分のなす角を変化させたり(5番め), 矢じり部分を定義する三角形
の領域を塗りつぶしたり(6番め)することにより, 多種多様な矢印が可能です.
最後に, U-座標系での線分描画は, Plot.draw ルーチンで同様に行ないます.