2010-10-03 42 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