下載源程序
幾何檢測(cè)(6) 摘要: 前面都提到了cAABB3類,它代表的是3D中的軸對(duì)齊矩形邊界框(AABB),這里給出類的完整定義和實(shí)現(xiàn)。
幾何檢測(cè)(5) 摘要: 檢測(cè)兩個(gè)靜止AABB的相交性是很簡(jiǎn)單的,只需要在每一維上單獨(dú)檢查它們的重合程度即可。如果在所有維上都沒有重合,那么這兩個(gè)AABB就不會(huì)相交。intersectAABBs()就是用這項(xiàng)技術(shù)來實(shí)現(xiàn)的。
AABB間的動(dòng)態(tài)測(cè)試稍微復(fù)雜一些??紤]一個(gè)由極值點(diǎn)smin和smax定義的靜止AABB和一個(gè)由mmin和mmax定義的運(yùn)動(dòng)AABB。運(yùn)動(dòng)AABB的運(yùn)動(dòng)由向量d給出,t從0變換到1。
幾何檢測(cè)(4) 摘要:
球和平面的靜態(tài)檢測(cè)相對(duì)容易一些,可以用公式12.14來計(jì)算球心到平面的距離。如果距離小于球半徑,那么它們相交。實(shí)際上還能作一種更靈活的檢測(cè),這種檢測(cè)把相交分為球完全在平面正面,完全在背面,跨平面等三種情況。仔細(xì)分析程序清單13.2:
幾何檢測(cè)(3) 摘要: 考慮3D中由極值點(diǎn)pmin和pmax定義的AABB和以標(biāo)準(zhǔn)方式定義的平面:p . n =
d,其中n為單位向量,平面與AABB必須處于相同的坐標(biāo)系中。
一種簡(jiǎn)單的靜態(tài)測(cè)試方法是,計(jì)算矩形邊界框頂點(diǎn)和n的點(diǎn)積,通過比較點(diǎn)積和d,來檢測(cè)邊界框的頂點(diǎn)是否完全在平面的一邊,或是在另外一邊。如果所有點(diǎn)積都大于d,那么整個(gè)邊界框就在平面的正面所指的一側(cè);如果所有的點(diǎn)積都小于d,那么整個(gè)邊界框就在平面的反面所指的一側(cè)。
幾何檢測(cè)(2) 摘要:
相交性測(cè)試的目的是檢測(cè)兩個(gè)幾何圖元是否相交,在某些情況下還要求出相交部分,這些基本測(cè)試構(gòu)成了碰撞檢測(cè)系統(tǒng)的基礎(chǔ)。碰撞檢測(cè)用來防止物體互相穿越,或者使物體看起來好像互相被彈開。
我們將討論兩種不同類型的相交性測(cè)試:
(1)靜態(tài)測(cè)試檢測(cè)兩個(gè)靜止圖元是否相交。它是一種布爾型測(cè)試----也就是說,測(cè)試結(jié)果只有真(相交時(shí))或假(不相交時(shí))。如果兩個(gè)圖元相交,則可以獲取更多的信息。但一般來說,這種測(cè)試的目的只是返回一個(gè)布爾值。
幾何檢測(cè)(1) 摘要: 考慮2D中的直線L,L由所有滿足p . n = d的點(diǎn)p組成。
其中n是單位向量,我們的目標(biāo)是對(duì)任意點(diǎn)q,找出直線L上距q距離最短的點(diǎn)q',它是q投影到L上的結(jié)果。讓我們畫一條經(jīng)過q平行于L的輔助線
M,如圖13.1所示。設(shè)nM和dM分別為直線方程的法向量和d值。因?yàn)長和M平行,所以它們的法向量相等:nM=n。又因?yàn)閝在M上,所以dM為 q.n。