0

閉じたパスからポリゴンを作成できる単純な(またはそうでない)アルゴリズムはありますか?

wに次のパスがあると仮定します。

0,0; 2,0, 2,1; 1,1;
1,2; 2,2; 2,3; 0,3;

OpenGL頂点バッファのポリゴンインデックスを作成できる必要があります。私が使用している言語はC#です。

誰かが私に凸包を提案しました、しかしそれは私が探しているものではありません、なぜなら私はすでに形を持っているからです。これは些細な問題かもしれないことを私は知っていますが、真剣に、私はmiを正しい方向に向ける説明や何かを見つけることができません。

編集:

回答1は、ポイントを選択して、接続されていない他のポイントに接続することを提案します。これは、回答の形状で表示する場合は正常に機能しますが、投稿した形状では機能しません。上の形状は次のようになります。

形

4

1 に答える 1

2

三角形への変換は、要件とそれをどれだけうまくやりたいかに応じて、簡単または難しいものになります。

ポリゴンが凸面の場合、最も簡単な方法はインデックスを使用GL_TRIANGLESすることです

0, 1, 2,   0, 2, 3,  0, 3, 4, ...

次のようになります。

扇風機による三角測量

凹面の状況はより多くの作業です。凹多角形(穴のある多角形ではありません!)でも機能するアルゴリズムは、ウィキペディアで説明されている耳のクリッピング方法です(そのページに詳細があります)。

「良い」三角形分割が必要な場合、物事は非常に興味深いものになります。細い三角形や小さな三角形を避け、三角形の数を減らすなどして、品質と速度のトレードオフを行うことができます。ここでは、高度なアルゴリズムについては説明しません。Googleでポリゴンの三角形分割を検索すると、多くの情報が得られます。

法線に関しては、ポリゴンが平面である場合(おそらく「あるべき」)、2つの一致しないエッジを取り、それらを外積します(2つの法線があり、おそらく1つだけが必要です。順序を選択する必要があります)右手の法則に基づいて、積を(時計回りまたは反時計回りに)外積します。

于 2013-03-18T20:26:39.527 に答える