2

2D 三角形分割を行った後、いくつかの三角形が同じ色になっているため、それらを再結合して、同じ色のグラフィックス パスに描画したいと考えています。三角形を 1 つずつ描画すると、一部のグラフィック レンダラーで三角形の間に継ぎ目が表示されることがわかりました (少なくともアンチエイリアシングや透明度が関係している場合)。

では、(重なり合っていない) 三角形のセットを取得して、穴やバラバラのポリゴンを含む可能性のあるグラフィックス パスを作成するにはどうすればよいでしょうか?

やみくもに三角形をグラフィックス パスに追加すると、塗りつぶしにはかなりうまく機能しますが (もちろんストロークには適していません)、これらの余分な内部ポイントをエクスポートするのは適切ではありません。

4

1 に答える 1

7

各三角形は、反時計回りのチェーンにある 3 つのベクトルで構成されるアウトラインと考えてください。

<--^
| /
|/ 
V

したがって、シェイプ内のすべての三角形について、それらのアウトライン ベクトルの和集合を取ります。和集合内の 2 つのアウトライン ベクトルが同一であるが反対方向に進む場合、それらは互いに打ち消し合い、和集合から削除されます。

たとえば、2 つの三角形が並んでいる場合、和集合は 6 つのベクトルになります。

<--^^
| //|
|// |
VV-->

これは、中央の 2 つの対角線ベクトルが同じであるが反対方向に走っているため相殺されるため、4 つのベクトルに減少します。

<--^
|  |
|  |
V-->

これは、三角形のより大きな集約で機能することがわかります。結果のベクトルを末尾から先頭に接続するだけで、閉じたパスが得られます。閉じたパスの一部は時計回りに走っている場合があり、これらは穴です。

<-----<-----<-----^
|                 |
|                 |
V     ^----->     ^
|     |     |     |
|     |     |     |
V     <-----V     ^
|                 |
|                 |
V----->----->----->
于 2010-08-29T22:01:21.547 に答える