我正在寻找一种算法,它将从一个简单的凹面多边形中减去一个矩形,并返回剩余的多边形。如果矩形包围多边形,则余数为null。在大多数情况下,看起来矩形和多边形之间至少会共享一条边。
我一直在网上挖掘,但我没有找到好的领导。
有人能指出我正确的方向吗?
答案 0 :(得分:4)
这很简单:找到矩形和简单多边形边缘之间的交点,然后在那里剪切线段。这不需要空间搜索结构,因为多边形的4个边是常数因子,因此以线性时间运行。
然后计算所有段的约束Delaunay三角剖分并使用种子点来增长区域。适当地组合区域(简单多边形内的三角形减去矩形内的三角形减去外面的三角形。保留的三角形是结果,边框边缘是生成多边形的边缘。
编辑:如果答案太短,我很抱歉。下图显示了这个想法
a)两个输入多边形
b)插入(切割)段后的CDT
c)种植区域
d)绿色区域减去红色区域
e)d区域的边界边缘。