關於構建AABB樹過程中記憶體優化

2021-07-11 01:23:16 字數 530 閱讀 2952

最近在實現滑鼠撿取物件時,需要實時計算射線與三角形是否相交。

涉及到了資料結構為aabb樹,具體參考

為了測試記憶體的使用,選取的測試用例為220w的三角形麵片的模型。

一開始自己建立的節點類為:

class aabbtreenode

構造過程中不斷的new出包圍盒的資料

同時在構造樹的遞迴過程中,不斷的new左右子樹指標。

剛開始的記憶體占用為:總共700m左右

實在難以承受。

然後參考opcode實現思路

class aabbtreenode

經過這個步驟記憶體降了100m左右。

同時在構造節點過程中預先new出記憶體:

aabbtreenode *root = new aabbtreenode[2 * mnbprimitives-1];

此時記憶體總共占用約為230m

實在很誇張,記下來,防止以後犯類似錯誤。

平衡二叉樹構建過程中的旋轉

若向平衡二叉樹中插入乙個新結點後破壞了平衡二叉樹的平衡性。首先要找出插入新結點後失去平衡的最小子樹根結點的指標。然後再調整這個子樹中有關結點之間的鏈結關係,使之成為新的平衡子樹。當失去平衡的最小子樹被調整為平衡子樹後,原有其他所有不平衡子樹無需調整,整個二叉排序樹就又成為一棵平衡二叉樹。失去平衡的最...

構建fabMap過程中可能遇到的錯誤

1.when opencv2.4.9 is not installed,the system has opencv2.4.8 pre installed in usr lib x86 64 linux gnu and usr include,where there is no opencv nonf...

關於android啟動過程中logo

android開機啟動會有3個logo出現 1.bootable啟動,出現android機械人影象 修改目標 用自定義的ppm替代 drivers video logo logo linux clut224.ppm,同時刪除logo linux clut224.c logo linux clut22...