一尘不染

两个凸多边形的交点

algorithm

我有两个凸多边形。多边形被实现为其顶点的循环列表。如何找到这两个多边形的交点?


阅读 306

收藏
2020-07-28

共1个答案

一尘不染

For each edge V1-V2 in the first polygon,
    Let H := Half-plane tangenting V1-V2, with the remaining
        vertices on the "inside".
    Let C := New empty polygon.
    For each edge V3-V4 in the second polygon,
        Let X := The intersection between V3-V4 and H.
        If V3 inside H, and V4 is outside H then,
            Add V3 to C.
            Add X to C.
        Else if both V3 and V4 lies outside H then,
            Skip.
        Else if V3 outside H, and V4 is inside H then,
            Add X to C.
        Else
            Add V3 to C.
    Replace the second polygon with C.

简单的使用就足够了;10-20个顶点,并且不重新计算每一帧。— O( n 2)


这里是一些链接:

2020-07-28