2010-10-03 75 views
1

我有一个画布,可以绘制,调整大小和移动矩形。矩形贴合,同时调整大小和移动

我正在寻找一种算法,以防止重叠,并启用我正在与其他矩形编辑矩形的捕捉。

我尝试了不同的方法,但我无法正常工作。

我所有的方法都基于一个简单的循环,检查我正在编辑的矩形(E)与其他矩形(O [n])。

防止重叠不是问题,我的问题是抢购,因为它可以修改Ë在迭代O.

例如,如果我电子邮件移动Ø附近[1]它会用它捕捉,但这捕捉可能会与O [0]创建重叠,而不会检查重叠。

在我开始做一些递归或太天真的事情之前,我想知道是否有人知道更好的方法。

回答

1

双通道方法是否有助于

  1. 在第一遍中,对照O检查E并生成简短候选项列表。

  2. 在第二遍中,检查每个捕捉对象与O的重叠。

如果扫描O公司的整个列表是非常昂贵(的努力与对象的数量呈线性增长),考虑quad-tree用于存储对象和/或它们的顶点。四叉树可以让您更快地缩小附近的点。

+0

是的,我可以试试,因为我认为这将是一个噩梦来检查所有组合的候选人,但想了一下(不知道想),对于任何矩形组合,你可以只有一个单元候选人通过x和1为y。这意味着我需要2次第二次传球,其中一次有x候选人,第二次有x/y(或者只有第一次传球失败时才有y)。不知道这是明确的,但我认为这应该工作。 – 2010-10-03 17:26:15

相关问题