アルゴリズムがどこでうまくいかないかを確認できるように、約 10 個の点と四角形をプロットする簡単な方法を探しています。gnuplot を見てみましたが、四角形をプロットするのが特に悪いようです。
2765 次
2 に答える
17
SVG ( MDN チュートリアル) は非常にシンプルなテキストベース (XML) 形式で、Ruby を使用して SVG ライブラリなしで簡単に発行し、最新の Web ブラウザーで表示できます。一例を次に示します。
文字列補間による SVG ポイント
points = (0..5).map{ [rand(100)-50,rand(100)-50] }
puts <<ENDSVG
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-100 -100 200 200">
#{points.map{ |x,y| "<circle cx='#{x}' cy='#{y}' r='3' />" }.join("\n")}
</svg>
ENDSVG
出力: http://jsfiddle.net/xwnVY/
文字列補間よりも構造化したい場合:
Nokogiri XML Builder を使用した SVG ポイント
require 'nokogiri' # gem install nokogiri
b = Nokogiri::XML::Builder.new do |doc|
doc.svg xmlns:"http://www.w3.org/2000/svg", viewBox:"-100 -100 200 200" do
points.each do |x,y|
doc.circle r:3, cx:x, cy:y
end
end
end
puts b.to_xml
出力を「foo.svg」として保存し、最新の Web ブラウザーで開いて表示します。
四角形の描画
四角形を描画するには、次のいずれかを使用できます。
<rect transform="rotate(45)" x="0" y="0" width="100" height="200" />
<polygon points="0,0 100,0 100,100 0,100" />
<path d="M0,0 L100,0 100,100 0,100 Z" />
変換を気にせずに軸が揃っていない任意の点を接続したい場合は、多角形が最も簡単に作成できます。わかりやすくするために上記の形式で座標を示しましたが、コードが生成しやすい場合x,y x,y
、SVG はx,y,x,y
orも受け入れることに注意してください。x y x y
フォーマットのビット
塗りつぶされた形状の代わりにアウトラインを描画したい場合は、SVG に次の CSS を追加できます。
<style>
rect, polygon, path { fill:none; stroke:black; stroke-width:1px }
</style>
XML に Haml を使用する
最後に、Haml は、SVG 固有のライブラリを使用せずに XML を作成する場合に検討できるもう 1 つのオプションです。
@points = (0..7).map{ [rand(100)-50,rand(100)-50] }
require 'haml'
puts Haml::Engine.new(<<ENDHAML).render(self)
%svg(xmlns="http://www.w3.org/2000/svg" viewBox="-100 -100 200 200")
:css
circle { fill:orange }
rect, polygon, path {
fill:none; stroke:black;
vector-effect:non-scaling-stroke
}
- @points.each_slice(4) do |rect|
%polygon{ points:rect.join(" ") }
- @points.each do |x,y|
%circle{r:3, cx:x, cy:y}
ENDHAML
出力: http://jsfiddle.net/xwnVY/4/
于 2012-04-25T17:21:48.997 に答える
5
おそらく、SVG を試すことができます。簡単に作成 (プレーン XML)、オープン、クロスプラットフォーム、Inkscape などを使用して開いて編集できます。
于 2012-04-25T16:58:33.950 に答える