【问题标题】:Clipping and triangulating a triangle with a non convex polygon用非凸多边形裁剪和三角剖分三角形
【发布时间】:2018-08-22 23:48:18
【问题描述】:

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

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

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

【问题讨论】:

  • 请解释您的反对意见/关闭原因。如果问题是主观上“最简单”的问题,我很乐意将其删除。

标签: 2d polygon computational-geometry clipping


【解决方案1】:

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

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

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

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


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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-28
    • 2015-03-19
    • 1970-01-01
    • 2011-01-14
    • 2016-02-08
    • 2016-09-28
    • 2011-10-05
    • 2011-07-15
    相关资源
    最近更新 更多