我在指定的空間中有一組矩形,它們可以有不同的尺寸和位置。矩形重疊的數據結構
我需要檢測碰撞簇,彼此相交的矩形組,如附圖所示,其中我有兩個簇(紅框)。
瑣碎的方法是讓這些矩形的載體,以雙循環for
交叉檢查,像什麼
for (size_t i = 0; i < rectangles.size(); i++) {
for (size_t j = i + 1; j < rectangles.size(); j++) {
if (rectangles.at(i).intersect(rectangles.at(j)) {
// Add rectangle[j] to cluster in which rectangle[i] is
}
}
我不認爲這是爲了執行結石最有效的方法。
如何有效計算這些簇?我已經閱讀了有關使用四叉樹的平面分區的一些內容,但我不知道在這種情況下如何使用它們。這是合適的數據結構還是更有效的方法(我必須在軟實時處理它)。
http://en.wikipedia.org/wiki/Collision_detection – 2014-08-27 13:46:12
相關:http://stackoverflow.com/q/5880558/951890 – 2014-08-27 13:51:02
@VaughnCato R-Tree是我的問題的正確選擇,你同意嗎?我犯了一個錯誤? – Jepessen 2014-08-27 13:57:46