2014-06-18 109 views
0

想象一下,你有與它周圍的圍欄一碼,這可能是這樣的檢測:快速算法,如果一個長方形相交的矩形邊界

______ ________ 
|  |_|  _| 
|    |_ 
|  _ ___| 
|__  |_| | 
    |   |__ 
___|  _  | 
|  | | |_ 
|________| |______| 

Don't ask why it's a weird shape, it's your yard, I didn't make it. 

..where,在中間的小盒子是有些武斷方形物體。如果物體朝任何方向朝向院子邊緣移動,那麼當物體與柵欄相撞時如何檢測?

如果你的院子數千倍大,並且有許多邊緣需要跟蹤,該怎麼辦?那麼你如何有效地解決這個問題呢?

回答

1

查看院子裏的一個大矩形,上面有幾個「負面」正方形。

將這些負方格的位置存儲在quad tree中。

若要檢查碰撞,請探測與該物體相鄰的四個方格的樹。

檢測操作的時間複雜度取決於四叉樹變體的選擇,但您可以在負平方數中預期對數時間。

+0

所以基本上如果樹中的四個方塊中的任何一個與我碰撞的物體共享一些位置或任何位置?這可能只是工作。 – imkendal

+0

我給出的簡單解決方案只是在樹中存儲點(位置),而不是範圍或矩形。因此,您的一個或多個相鄰位置在樹中,或者它們不在。這裏沒有「一些」。更復雜的變體存在使用分組的位置在樹中較少存儲。 – phs

+0

我明白了,非常感謝 – imkendal