縮退ポリゴンとは何ですか?特定のポリゴンのペアが縮退しているかどうかをどのように確認しますか?
縮退ポリゴンとは何ですか?特定のポリゴンのペアが縮退しているかどうかをどのように確認しますか?
回答:
頂点の一部が互いに重なっている場合、ポリゴンは縮退しています。たとえば、三角形(0,0)、(0,1)、(0,0)は縮退しています。3つの辺と3つの頂点がありますが、2つの頂点が繰り返されています。頂点を複数回繰り返すことが可能です(たとえば、(0,0)、(0,0)、(0,0)は別の縮退三角形です)。定義により、ポリゴンが縮退しているかどうかの確認は簡単です。
しかし、縮退ポリゴンの用途は何ですか?グラフィックアクセラレーション(3D描画)からの1つのアプリケーションは次のとおりです。
3D描画では、GPUは通常、三角形分割を使用して画像をレンダリングします。三角形を使用する(単純な)理由は、三角形が可能な限り単純な2Dオブジェクトであるため、ハードウェアをあまり必要としないためです。
このGPUの制限により、複雑な3D画像を描画する場合は、複数の三角形に分解する必要があります。しかし、GPUを呼び出して各三角形を個別にレンダリングすると、非常に遅くなります(呼び出しの数のため)。したがって、三角形のストリップは、GPUへの呼び出しの数を減らすために使用されます。トライアングルストリップの適切な説明は、Microsoft Documentation:Triangle Stripsにあります。また、WikiのTriangle Stripも参照できます。
しかし、1つのストリップに2つの個別のオブジェクトを描画する場合に問題が発生します。この場合、退化した三角形が役立ちます。GPUは縮退した三角形を検出し、それらの描画をスキップできます。したがって、2つの別々のストリップを1つの縮退した三角形に接続できます。
一般に、異なるコンポーネントがあり、対応する三角形のストリップがすでにある場合は、GPUを1回呼び出すだけですべてを描画できます。これは余分なメモリ使用を引き起こしますが、レンダリングのためのGPUへの呼び出しの数と追加の縮退三角形を使用するオーバーヘッドの間のトレードオフです。
縮退ポリゴンとは、面積がゼロのポリゴンです。
他の人が指摘しているように、状況によって異なります。一般的に言って、異常なポイントがない場合、ポリゴンは非縮退ですが、これは問題を1ステップ後退させるだけです。「異常」とは何ですか?
本当の答えは、ポリゴンが仕様に違反した場合、ポリゴンは縮退するということです。少し失礼な答えは、アルゴリズムが処理できないエッジケースの場合、ポリゴンは縮退しているということです。
これは、GISの世界からの例です。OGCのシンプル仕様が特徴ポリゴン「有効」を作るものの非常に慎重に定義されています。セクション6.1.11.1からの引用:
ポリゴンのアサーション(有効なポリゴンを定義するルール)は次のとおりです。
a)ポリゴンはトポロジ的に閉じています。
b)ポリゴンの境界は、外部境界と内部境界を構成する一連のLinearRingsで構成されます。
c)境界の2つのリングが交差せず、ポリゴンの境界のリングがポイントで交差することはできませんが、接線としてのみ交差できます。
注:この最後の条件は、2つの曲線に共通の点では、近くの点は共通にできないことを示しています。これにより、各共通点が接点に強制されます。
e)すべてのポリゴンの内部は、接続されたポイントセットです。
f)1つ以上の穴があるポリゴンの外部が接続されていません。各穴は、外部の接続されたコンポーネントを定義します。
上記のアサーションでは、interior、closure、exteriorは標準的なトポロジー定義を持っています。(a)と(c)を組み合わせると、Polygonは通常の閉じたポイントセットになります。