使用非凸多边形剪切和三角化三角形

时间:2018-03-14 12:33:14

标签: 2d polygon computational-geometry clipping

我开始使用单个2D三角形,我想用(可能)凸起的2D多边形进行剪裁。它不是自相交的,但可以根据绕线顺序“保持”或“丢弃”交叉区域。

我想最终得到一个三角测量,即二维空间中被剪裁区域的n顶点和m三角形的列表,每个三角形由3个顶点定义。

最简单的(对我来说是开发人员),以及最快(在计算方面)实现这一目标的方法是什么?

1 个答案:

答案 0 :(得分:1)

如果我是右边,你想在多边形内部剪辑,即得到三角形和多边形之间的交点。

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

请注意,如果不是简单地连接交叉点,则会连接生成的多边形,双边连接可能的部分。可能需要进行一些清理。

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

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

三角形 - 三角形剪裁问题再次用Sutherland-Hodgman解决,稍微简化,因为输入多边形具有恒定的大小,并且它们的交点是凸的,更糟的是六边形。立即触发凸多边形。