3D Math Keynote 3

3D Math Keynote 3算法

一、球的表面積 Surface、球的體積 Volumn:spa

  

二、當物體旋轉後,若是經過變換後的舊AABB來頂點來計算新的AABB頂點,則生成的新AABB可能比實際的新AABB大一些。blog

  

  由 舊AABB 快速計算 新AABB的方法。it

  

  若是 m < 0,則取min值參與計算,若是 m > 0,則取max值參與計算。變量

三、多於3個點的最佳平面。算法就是求出全部的n,而後求個平均值。(此公式書中未給出證實過程)方法

  

  使用求和符號,能使公式更簡潔一些。im

  

  最佳d值爲:img

  

四、點到平面的距離。好比平面外有一點q,求q到平面的距離。時間

  

  

五、三角形的正弦、餘弦公式。co

  

  

  海倫公式,讓咱們可使用三邊長度,計算出面積:

    

六、根據三個頂點座標,快速計算三角形面積。

  順時針,依次每條邊與x軸圍成的面積。

    

  A(e1) + A(e2) + A(e3) 便是三角形面積。

  

  能夠看到若是將三角形下移h高度,使得三角形與X軸穿叉,面積實際上不會變。

  A(e1) = (y3+y2-h)(x3-x2)/2,將-h提取出來,獲得 -hx3+hx2

  A(e2) = (y1+y3-h)(x1-x3)/2,將-h提取出來,獲得 -hx1+hx3

  A(e3) = (y2+y1-h)(x2-x1)/2,將-h提取出來,獲得 -hx2+hx1

  能夠看到,上面三個A中新增出來的項,恰好相互抵消。因此即便三角形與X軸相互穿叉,上述算法也能獲得正確的面積。

  最後,最簡單的方法實際是計算叉積,叉積便是面積。

  

七、三角形局部座標,一般可使用重心座標。

  

    

  每一個頂點對應的邊上的每個點的對應份量爲0。

  

  重心座標不一樣於笛卡爾座標,笛卡爾有2個維度的變量,重點座標卻有3個維度的變化。因爲 b1+b2+b3=1,因此實際上,在重心座標系下,只要兩個維度就能唯一肯定一個位置。

八、給定 v1,v2,v3和p,計算 p 的重心座標。

    

  

  重心座標實際是面積比。

  

九、計算3D中任意點的重心座標。

  一種算法是經過拋棄 x,y,z 中的一個份量,將3D問題轉化到 2D 中。

  但存在一個問題,若是投影后三點或兩點共線怎麼辦。一種解決方法是,挑選投影面積最大的那一面來計算。實際計算方法就是,拋棄法向量中份量最大的那一個軸。

  

  另外一種算法是使用公式 12.23 中的面積比法,計算p點與各邊圍成的面積,求出比例。

十、重心或質心。

  

  心裏是指到三角形各邊相等的點。之因此稱之爲心裏,是由於它是三角形內切圓的圓心。心裏是角平分線的交點。

  

  

  外心是到三角形各頂點距離相等的點,是三角形外接圓的圓心。

  

    

    

十一、簡單多邊形不包含洞,複雜多邊形可能包含洞。

  凸多邊形任意兩點連續均在圖形內,凹多邊形有可能在圖形外。怎樣才能知道一個多邊形是凹的仍是凸的?一種方法是檢查n個頂點的較小角的和(解決凹多邊形的問題), 是否爲 (n-2)*180。

  

  凸多邊形的補角和爲 360 度。

  另外一個檢測凹凸多邊形的方法是每個點的轉身,用叉乘來作。

十二、點距直線的最接近點。

    

1三、點距射線的最接近點。

    

1四、點到平面的最接近點。與12中的點到直接的最接近點公式同樣,只是多了一維。

  

1五、點到圓或球的最接近點。

    

1六、計算AABB上的最接近點。
  算法是按必定順序,沿着每條軸將 q 推 B。

  

  

1七、2D 中隱式直接相交性檢測。

  

1八、3D中兩條射線的相交檢測。

  

  

1九、射線和平面的相交性檢測。

    

  上述公式是經過代數的方程的方法來解。  

  根據公式,能夠提供另外一種理解方法。 d-p0*n 實際上是 p0到平面的距離,d*n實際上是d與n平行的分向量。總距離除以向量步行,便可獲得t的值。

 

20、AABB和平面的相交性檢測。

  

   動態檢測:

    

2一、三平面相交性檢測。算法與2D中兩直線相交性檢測相似,解方程。

    

 

2二、射線和圓、球的相交性檢測。

  

  上圖中 a能夠經過 e到射線的投影計算出來。

  

  b 能夠經過 e、a求出來。

  

  f 能夠經過 r、b求出來。

  

  t 能夠經過 a、f求出來。

  

 

2三、兩個圓球的相交性檢測。

   兩個運動的球須要經過相對運動來計算。

    

  經過相對運動,將問題轉化成了以下模型:

  

  根據 cos 定理,有以下公式:

  

    

2四、球和AABB的相交性檢測。

  選擇 min/ max,取一個最小 magnitude, 看是否小於距離。

2五、球和平面的相交性檢測。

  計算圓心到平面的距離,看是否小於r。

  

  若是圓在運行中,如何求解t爲什麼值時與平面碰撞?

  

  問題轉化成了點到平面的距離。

  

 

2六、射線和三角形的相交性檢測。

  第一步,計算射線到三角形平面的交點。第二步,經過計算交點的重心主座標,來判斷它是否在三角形中。

2七、射線和AABB的相交性檢測。

  書中未詳細說明算法。

2八、兩個AABB的相交性檢測。

  檢測兩個AABB是否相交很是簡單,只要在每一維上檢查它們的重合度便可。若是全部維上都沒有重合,那麼這兩個AABB就不會相交。

  動態狀況麻煩一點,若是向某方向以d運行,求t時刻相遇。t爲全部維上同時重合的第一個點。

  

  全部時間區間的交集,就是兩個邊界框相交的時間段。

  

2九、

30、

3一、

3二、

3三、

相關文章
相關標籤/搜索