防止限幅器合并多边形?

时间:2015-11-11 11:23:22

标签: polygons clipperlib

当我计算彼此接触的两个形状之间的差异时(例如,在矩形A中具有孔的较大矩形B中的矩形A)和剪辑形状(矩形C),两个触摸形状被合并,因为它们的共享相同的边缘,然后执行剪裁。

剪裁时是否可以避免合并触摸形状?

以下是两个形状(A为绿色,B为红色)和一个剪辑(操作为:A& B-Clip)之间的差异示例,它返回蓝色形状:

Difference (Blue) two touching shapes (A in green and B in red) with a clip

我希望有两种形状,而不是蓝色矩形:

Expected result

交叉点会给出:

Intersection

这会给我四个我想要的形状:

Expected result

我知道我可以分别对每个形状进行操作,但恐怕会更贵。

注意

以下是XOR的结果:

XOR

1 个答案:

答案 0 :(得分:0)

在手中我自己计算操作:

  1. 计算边缘之间的交叉点(夹子形状和其他形状)。
  2. 对于每个顶点:按角度对其边缘进行排序(必填)
  3. 顺时针和逆时针穿过每条边以计算带有孔的新多边形
  4. 这是足够有效的,但我需要一个空间分区数据结构来对边缘进行排序并快速交叉。