空间八叉树剖分
空間八叉樹剖分
轉載自:http://hi.baidu.com/j_factory/blog/item/8bc1ca182d7f45f6af5133c3.html
?
空間八叉樹算法是一個空間非均勻網格剖分算法,該算法將含有整個場景的空間立方體按三個方向分割成八個子立方體網格,組織成一棵八叉樹。若某 一子立方體網格中所含景物面片數大于給定的閾值,則為該子立方體作進一步的剖分。上述剖分過程直至八叉樹每一個葉子節點所含面片數均小于給定的閾值為止。 這個算法也是利用了空間連貫性。
??? 八叉樹的最大深度表示空間分割所達到的層次,稱為空間分辨率,而八叉樹的終結節點對應分割后的空間網格單元。設八叉樹的深度為N,任 一個八叉樹終結節點的編碼為
?
,
?
。
?
??? 由上述八叉樹結點的編碼方式很容易找到空間任一點所在的空間網格單元。設P(x,y,z) 為一空間點,x,y,z取整數,其相應的二進制表
則
?
1??P所在單位立方體網格編碼為q1q2...qN
?
面上),則該空間網格的前左下角坐標為
?
?
??? 上述性質在下面介紹的光線跟蹤八叉樹算法中起了很重要的作用。
?
??? 下面來看如何進行光線跟蹤。設光線起始點為P0,方向為R,先求P0所在單位立方體網格的八叉樹編碼Q。這 只需先對P0各坐標分量取整得到單位立方體網格的前左下 角坐標P,然后即可用式(5)計算編碼Q。若計算出的P點位于 世界立方體的邊界上,則需根據光線前進方向判別光線是否已射出場景。若光線已射出場景,則算法結束。否則,在空間線性八叉樹結點表中查找Q。查 找的結果用兩個量表示。一個是表明查找是否成功的布爾量T,另一是未獲匹時,T取真值。這是因為該結點對應的空間網格包含了P0所在的最小網格單元。注意這一結點為非空的終結點,它表明P0點位于一含有三角形面片且邊長為2N-i的空間網格內部或邊界上。未獲匹配位數B定義為八叉樹終結點表中與Q獲得 最大程度匹配結點,其編碼尾部不匹配的位數。若該結點的編碼為?通過Q和B則可確定當前立方體的空間位置和大小。對線性八叉樹采用二分查找可以加快查詢速度。
http://blog.csdn.net/wsh6759/article/details/7424993
總結
- 上一篇: 【PHP】使用JpGraph绘制饼状图的
- 下一篇: 测试app发文