我有一個點雲數組(已確定位於其自己的區域中的一組點)。結合最接近的凸多邊形
我們的目標是將這些單獨的羣集組合起來,這些羣集可以是
i。相交
ii。在彼此間的最小距離內
檢查ii使這變得更加困難。爲了快速處理這些點雲,我創建了AABB(沿X軸對齊的軸對齊邊界框)。
我的當前方法是使用分離軸定理的一些性質:
- 每個點雲
- 對於每個AABB創建AABB,檢查是否它們是由這些投影到隨機軸,然後重疊(nlog(n))將這些線性投影按照它們落在該行上的位置排序。然後我通過這個列表查看使用SAT檢查交叉點O(N)。大多數AABB的線性投影不會重疊,因此不會相交,而且我可以手動檢查(因爲1D中沒有重疊保證沒有交集,但反過來不是這樣)。
最後一部分是我卡住的地方。上述一維投影是爲了避免O(n^2)兩兩交叉檢查。但爲了結合在一定閾值內但不相交的凸多邊形,我無法看到圍繞O(N^2)兩兩檢查的方式。
有沒有辦法構造一些樹或圖來組合所有在一定距離範圍內的凸多邊形而不用檢查每個成對組合?
如果使用我使用我的步驟從1 & 2,您可以假設剩餘的pointclouds/AABB不相交。
EDIT
的潛在解決方案是添加的threshold/2
到AABB
寬度和高度,並檢查是否有交叉點。如果它們相交,那麼我可以檢查兩個實際的交點(對AABB來說這是很快的),以及兩者之間的最小距離。
您能否給我講解AABB的定義? – Mai
軸對齊邊界框(沿X軸分配)。 https://studiofreya.com/3d-math-and-physics/simple-aabb-vs-aabb-collision-detection/ – DaynaJuliana
我認爲你的問題聽起來太花哨,這也意味着混亂。基本上你在檢查常規盒子是否彼此靠得太近,但是你沒有將盒子定義爲簇中的單個點(你說的點雲)或者簇的中心,其半徑就是你問題中的閾值。你能澄清你的問題的描述嗎?幹得好AABB:D – Mai