我有一个画布,我可以在其中绘制,调整大小和移动矩形。
我正在寻找一种算法来防止重叠并启用我正在用其他矩形编辑的矩形的捕捉。
我尝试了不同的方法,但我无法正常工作。
我的所有方法都基于一个简单的循环,它检查我正在编辑的矩形(E)和其他矩形(O [n])。
防止重叠不是问题,我的问题是捕捉,因为它可以在迭代O时修改E..
例如,如果我在O [1]附近移动E,它将与它对齐,但此捕捉可能会与O [0]重叠,重叠将无法检查。
在我开始做一些递归或太天真的事情之前,我想知道是否有人知道更好的方法。
答案 0 :(得分:1)
双通道方法是否有帮助,例如
在第一遍中,针对O检查E并生成一个简短的候选候选列表。
在第二遍中,检查每个快照候选者是否与O重叠。
如果扫描整个O列表非常昂贵(努力随着对象数量线性增长),请考虑quad-tree来存储对象和/或它们的顶点。四叉树可让您更快地缩小附近点的范围。