两个凸多边形的交点
问题内容:
我有两个凸多边形。多边形被实现为其顶点的循环列表。如何找到这两个多边形的交点?
问题答案:
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)
这里是一些链接:
- 计算机图形学I –多边形裁剪和填充(pdf)
- rosettacode.org – Sutherland-Hodgman多边形裁剪