線分でパーツにスライスする必要がある単純な多角形 (凸面または凹面で、穴はありません) があります。スライス後に生成されるポリゴンの数を実際に決定する方法や、頂点をグループ化する方法がわかりません。
常に 2 つのサブポリゴンになる基本的な凸型のケースは簡単ですが、複雑な凹型の形状はどのように処理すればよいでしょうか? たとえば、「E」形状のポリゴンを考えてみましょう。垂直スライスは 4 つのポリゴンを生成できます。これらのサブポリゴンのそれぞれを構成する頂点を特定するにはどうすればよいですか?
ポリゴンの定義: ここには 2 つのオプションがあります。私のポリゴンは、頂点の順序付きリストにすることも、三角形の配列にすることもできます。三角形の配列を使用するソリューションをお勧めします。すべての三角形をループして、交差する場合は線でスライスするのは非常に簡単です。しかし、それらの三角形を結果として得られるサブポリゴンにグループ化する方法がわかりません。
疑似コードや一般的なアドバイスでも構いません。C# 実装が理想的です。