防止裁剪器合并多边形?
Prevent clipper from merging polygons?
当我计算两个相互接触的形状(例如,矩形 A 在一个更大的矩形 B 中,在矩形 A 处有一个孔)和剪辑形状(矩形 C)之间的差异时,这两个接触的形状被合并,因为它们共享相同的边,然后执行裁剪。
是否可以在裁剪时避免合并接触形状?
下面是两个形状(绿色的A和红色的B)和剪辑(所以操作是:A & B - Clip)之间的区别的例子,它returns蓝色的形状:
我想要这两个形状而不是蓝色矩形:
交集会给出:
这会给出我想要的四种形状:
我知道我可以对每个形状分别进行操作,但恐怕成本会更高。
备注
这是异或的结果:
手上我自己计算运算:
- 计算(剪辑形状和其他形状的)边之间的交点。
- 对于每个顶点:按角度对边进行排序(强制)
- 顺时针和逆时针遍历每条边以计算带有孔的新多边形
这已经足够高效了,但我需要一个 space 分区数据结构来对边进行排序并快速对它们的交集进行排序。
当我计算两个相互接触的形状(例如,矩形 A 在一个更大的矩形 B 中,在矩形 A 处有一个孔)和剪辑形状(矩形 C)之间的差异时,这两个接触的形状被合并,因为它们共享相同的边,然后执行裁剪。
是否可以在裁剪时避免合并接触形状?
下面是两个形状(绿色的A和红色的B)和剪辑(所以操作是:A & B - Clip)之间的区别的例子,它returns蓝色的形状:
我想要这两个形状而不是蓝色矩形:
交集会给出:
这会给出我想要的四种形状:
我知道我可以对每个形状分别进行操作,但恐怕成本会更高。
备注
这是异或的结果:
手上我自己计算运算:
- 计算(剪辑形状和其他形状的)边之间的交点。
- 对于每个顶点:按角度对边进行排序(强制)
- 顺时针和逆时针遍历每条边以计算带有孔的新多边形
这已经足够高效了,但我需要一个 space 分区数据结构来对边进行排序并快速对它们的交集进行排序。