0

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

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

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

用夹子区分(蓝色)两个接触的形状(绿色 A 和红色 B)

而不是蓝色矩形,我想有这两种形状:

预期结果

交叉点会给出:

路口

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

预期结果

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

笔记

这是 XOR 的结果:

异或

4

1 回答 1

0

在手中,我自己计算操作:

  1. 计算边缘(剪辑形状和其他形状)之间的交点。
  2. 对于每个顶点:按角度对其边进行排序(强制)
  3. 顺时针和逆时针穿过每个边以计算带有孔的新多边形

这足够有效,但我需要一个空间分区数据结构来对边缘进行排序并快速它们的交叉点。

于 2017-09-15T12:38:13.253 回答