我有一个简单的多边形(凸面或凹面,但没有孔),我需要用线段将其切成部分。我不确定如何实际确定切片后产生多少多边形,或者如何对顶点进行分组。
基本的凸面情况总是容易产生 2 个子多边形,但我将如何处理复杂的凹面形状?以“E”形多边形为例。一个垂直切片可以产生 4 个多边形。如何确定哪些顶点构成了这些子多边形中的每一个?
定义多边形:我有两个选择。我的多边形可以是一个有序的顶点列表,也可以是一个三角形数组。我更喜欢使用三角形数组的解决方案。遍历每个三角形并在它们相交时将其与线切割应该很容易。但后来我不知道如何将这些三角形分组到产生的子多边形中。
伪代码甚至一般建议都很好;C# 实现是理想的。