我需要在非常规范的多边形上剪切一条线。多边形将始终是一个矩形,沿着欧几里德轴定向,并且可以使角落“切断”。看看这张照片,看看我的意思。
可以切割角落,以便在其中一个边缘处形成一个点,但不会更多。在某些情况下(实际上大多数情况下),没有任何角落被削减,我已经实施了Cohen-Sutherland算法来处理这些情况,但是当角落切割时我不知道怎么做。我想有一些针对多边形剪裁线的通用算法,但我对此并不了解。此外,这可能对我的情况有点过分。我正在处理的多边形总是简单,凹陷和单调。对此有什么好的(可以简单的)算法吗?
答案 0 :(得分:3)
这是一种方法:
For each side of a convex polygon
p = the intersection point between line and the polygon side
if p lies between the endpoints of the polygon side, save point p
if there are two saved points then exit the loop
next
在两点之间画一条线作为答案。如果线穿过多边形顶点,请注意 - 舍入误差可能会导致问题。