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