我有(X1,Y1,X2,Y2)格式的两个长矩形'矩形',我希望在这些列表上执行布尔运算(AND,OR,ANDNOT)。我查看了一些常见的裁剪算法(Weiler-Atherton,Vatti等),但它们似乎过于通用(它们都处理具有任意方向边的多边形)。我也不太热衷于基于位图的算法,因为这些布尔形状的容差与它们的尺寸相比非常小。
请为我的用例推荐任何算法。我的重点主要是最小化运行时间。
谢谢!
编辑 - 两个长矩形列表上的暴力布尔运算是O(n ^ 2)运算。我有理由相信,鉴于正确的数据结构和算法,我们可以将其降至最多O(nlogn)。
EDIT2 - 结果是另一个长长的矩形列表(不相交,但可能接触)。例如,如果我的输入列表是{{(0,0),(2,2)}}和{{(1,1),(3,3)}},并且预期的布尔运算是OR,那么我的输出应为{{(0,0),(2,1)},{(0,1),(3,2)},{(1,2),(3,3)}}。