2D平面内の2つの三角形間のオーバーラップ領域の面積を計算する必要があります。奇妙なことに、私は三角形の円の問題のコードを作成しました。これは非常にうまく機能しますが、三角形の三角形の問題に問題があります。
私はすでに、一方がもう一方を完全に含んでいるかどうか、またはもう一方が最初のものを含んでいるかどうかを確認し、すべてのエッジ方向の交点を取得します。これらの交点(ダビデの星のように最大6)は、他の三角形内に含まれる三角形の頂点と組み合わされて、交点領域の頂点になります。これらの点は凸多角形を形成する必要があります。
私が求める解決策は、次のいずれかの質問に対する答えです。
- すべての人が知っている点のセットが点集合の凸包上にあるとすると、凸包の面積を計算します。それらはランダムな順序であることに注意してください。
- 半平面のセットが与えられた場合、交差する領域を決定します。これは、両方の三角形を3つの半平面の交点として記述し、この記述の直接の交点として解を計算することと同じです。
質問1では、考えられるすべての三角形のすべての領域を単純に合計し、次にカウントの多重度で割ることを検討しましたが、それはばかげているようで、正しいかどうかはわかりません。トリックを行うある種のスイープラインアルゴリズムがあるように感じます。ただし、ソリューションは比較的数値的に堅牢でなければなりません。
質問2を解決する方法がわからないだけですが、一般的な答えは非常に役立ち、コードを提供することで1日を過ごすことができます。これにより、凸多角形で三角形分解を実行する代わりに、凸多角形の交差領域を直接計算できます。
編集:2つの凸多角形の交差多角形を見つけるための一般的なケースを説明するこの記事を知っています。三角形だけに関係しているように見えます。さらに、結果のポリゴン自体は実際には必要ありません。したがって、この質問は、この時点で怠惰に行われている可能性があります。