2

バックグラウンド:

2Dマトリックス(実際には画像)と、ポリゴンを定義する一連のポイントを取得して、そのポリゴンをマトリックスに描画できるようにしたいと思います。

走り去って車輪の再発明をする前に、これを行うOctaveの既存のライブラリやコードを誰かが知っているかどうか尋ねたいと思いました。これまでのところ、Octaveパッケージとgoogleの検索は空になっています。

それに失敗すると、どちらも実装するのは難しくありませんが、塗りつぶされたポリゴンを描画する方法がわかりません。どのポイントがポリゴンの内側にあり、どのポイントが外側にあるかを簡単かつ効率的に判断する方法はありますか?ありがとう。

編集:

私の目的は何も表示しないことです。実際、私が特に注目しているのは、凸包のプロット、その領域の検索、元のオブジェクトにない凸包の部分の検索など、いくつかの画像処理です。

GnuPlotが実際に処理できるデータを返してくれるとは思いません。私が間違っているなら、どうしてもその方法を教えてください。ありがとう。

4

2 に答える 2

1

編集:OPの編集トップに応答して、見つけやすくします。

gnuplotをファイルに直接レンダリングする(「ターミナル」までスクロールダウンする)にはさまざまな方法があり、分析のために読み込むことができます。たとえば、読み取りと書き込みが非常に簡単なポータブルビットマップ形式に出力できます(小さくてエレガントではない場合)。定義上、PBMは黒と白の配列を提供することに注意してください。

たとえば、 「setterminal 」コマンドと「setoutput」コマンドを使用して、pbmとpngファイルを生成する一連のUnixパイプにレンダリングする方法を確認してください。

編集を終了します:

Gnu Octaveはデフォルトでプロットにgnuplotを使用しますが、gnuplotは塗りつぶされたポリゴンの生成に非常に優れていることがあります。これはまさにその種のもののいくつかの有用なデモンストレーションです。たとえば、ここにいくつかの塗りつぶされたポリゴンがあります

# set terminal png transparent nocrop enhanced font arial 8 size 420,320 
# set output 'fillcrvs.4.png'
set grid nopolar
set grid xtics nomxtics ytics nomytics noztics nomztics \
 nox2tics nomx2tics noy2tics nomy2tics nocbtics nomcbtics
set grid front   linetype 0 linewidth 1.000,  linetype 0 linewidth 1.000
set key outside right top vertical Right noreverse enhanced autotitles nobox
set title "The red bat: abs(x) with filledcurve xy=2,5" 
plot abs(x) with filledcurve xy=2,5

塗りつぶされた曲線ページの下部にクレイジーな顔を描く別のデモスクリプトを次に示します。

# set terminal png transparent nocrop enhanced font arial 8 size 420,320 
# set output 'fillcrvs.6.png'
unset border
set dummy t,y
set grid nopolar
set grid xtics nomxtics ytics nomytics noztics nomztics \
 nox2tics nomx2tics noy2tics nomy2tics nocbtics nomcbtics
set grid layerdefault   linetype 0 linewidth 1.000,  linetype 0 linewidth 1.000
unset key
set label 1 "gnuplot" at 0, 1.2, 0 centre norotate front nopoint offset character 0, 0, 0
set label 2 "gnuplot" at 0.02, -0.6, 0 centre norotate front nopoint offset character 0, 0, 0
set arrow 1 from -0.1, 0.26, 0 to 0.18, -0.17, 0 head front nofilled linetype 5 linewidth 4.000 size first 0.100,40.000,90.000
set parametric
set size ratio 1 1,1
set noxtics
set noytics
set title "Let's smile with parametric filled curves" 
set xrange [ -1.00000 : 1.00000 ] noreverse nowriteback
set yrange [ -1.00000 : 1.60000 ] noreverse nowriteback
plot [t=-pi:pi]     sin(t),cos(t) with filledcurve xy=0,0 lt 15,        sin(t)/8-0.5,cos(t)/8+0.4 with filledcurve lt 3,        sin(t)/8+0.5,cos(t)/8+0.4 with filledcurve lt 3,        t/5,abs(t/5)-0.8 with filledcurve xy=0.1,-0.5 lt 1,     t/3,1.52-abs(t/pi) with filledcurve xy=0,1.8 lt -1
于 2009-09-15T19:41:13.227 に答える
1

ポリゴン内のポイントを見つけるには、MATLABCentralに投稿されているDarrenEngwirdaのMATLAB関数を試すことができます:http://www.mathworks.com/matlabcentral/fileexchange/10391

コードを簡単に調べましたが、特にMATLAB固有のものは見当たらないため、Octaveでそのまま実行される可能性があります。

于 2009-10-02T00:22:02.960 に答える