对具有非凸多边形的三角形进行裁剪和三角化



我从一个 2D 三角形开始,我想用(可能)凸的 2D 多边形来裁剪它。它不是自相交的,但可以根据缠绕顺序"保留"或"丢弃"相交区域。

我想以三角测量结束,即 2D 空间中裁剪区域的n个顶点和m三角形的列表,每个三角形由 3 个顶点定义。

什么是最简单的(对于我作为开发人员),以及最快的(就计算而言)实现这一目标的方法是什么?

如果我是右边,你想在多边形内剪裁,即获取三角形和多边形之间的交点。

由于三角形是一个凸形,萨瑟兰-霍奇曼算法是合适的,并且不太难实现(https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)。

请注意,如果相交不是简单地连接,则将连接生成的面,双边连接潜在部分。可能需要进行一些清理。

找到交叉点后,您可以使用耳夹方法或更有效的方法 (https://en.wikipedia.org/wiki/Polygon_triangulation) 重新三角测量。


或者,您可以对多边形进行三角测量,并使用原始三角形对每个三角形进行裁剪。

三角形-三角形裁剪问题再次通过萨瑟兰-霍奇曼解决,这在一定程度上简化了,因为输入多边形具有恒定的大小,并且它们的交点是凸的,更糟糕的是六边形。凸多边形的三角化是即时的。

最新更新