3

2 次元の点の配列として表されるパスが与えられた場合:

Point[] path = new Point[4]
{
    new Point(0,0),
    new Point(10,0),
    new Point(10,10),
    new Point(0,10),
};

……ほら、箱。

これを 3D アプリケーションで使用する三角形 (パスを埋める) のリストに変換する最良の方法は何ですか? これは単純な例にすぎず、実際にはパスがかなり複雑になる可能性があることを考えると. フレームワーク、おそらく System.Drawing またはこれに役立つ WPF に既に何かありますか?

編集: (Samuel によるコメントの後) 理想的には、凸多角形と凹多角形の両方を処理できるようにしたいと考えています。

4

1 に答える 1

5

パスが何で構成されているか、およびパスがどのように作成されるかによって異なります。

常に凸多角形の場合は、領域を埋める三角形の扇形を非常に簡単に作成できます。

凸多角形でない場合は、パスを埋めるために何らかの形の三角形分割を使用する必要があります。そこにはかなりの数のオプションがあります。サンプルコードのほとんどはC#ではなくCまたはC ++ですが、これは役立つ場合があります。

http://local.wasp.uwa.edu.au/~pbourke/papers/triangulate/morten.html

基本的な考え方は、外側の境界を埋めることです。三角測量ルーチンは、3Dアプリに必要な正しい三角形のインデックスを返します。

フレームワークには、これを行うものは何もありません。

于 2009-03-12T14:43:34.993 に答える