Barycentric Coordinates of Tetrahedron (計算四面體的重心座標)

四面體應該是說空間體狀結構的最簡單形式,只需要四個頂點就可以構成,某些情況下可能需要用四面體來做一些插值之類的操作,或是碰撞檢測(比如判斷一個點是否在四面體的內部),這些都可以用其重心座標來成(Barycentric Coordinates)。四面體的重心座標跟三角形的重心座標類似,都是找到組成四面體的幾個頂點與目標點之間的權重關係,進而來描述該目標點。一般情況下,三角形重心座標的計算方法是使用對應的子三角形與原始三角形的面積比值來計算;同樣,擴展到空間中的四面體的重心座標就可以用對應的子四面體的體積比值來計算。不過這種方法稍顯複雜,最近看到了一種更加簡便的方法(但也跟體積比值法類似),使用點到平面的距離比值方法來計算。


首先定義點到平面的有向距離爲:D(p , PLabc),其中p、a、b、c均爲空間上的點,而PL是由a、b、c三個點所構成的平面,那麼對於上圖分佈的一個四面體以及另外的任意一個點P,可得該點的重心座標爲:

其中的分別是P點相對於a,b,c,d點的權重,而且有+++= 1
有了重心座標之後就可以使用其來判斷P點與該四面體間的關係:

  • 如果均屬於[0,1],那麼P點位於該四面體的內部。
  • 如果其中某一項不在此範圍內,還可以根據其越域方式來判斷P點在四面體外的分佈情況:比如小於0,那麼P點就處於bcd所對應的平面之下(此處用a點來參考平面的上下);反之,若其大小1,那麼P點就處於過P點且平行於bcd平面的平面之上。

這種計算方法還是很有用的,一方面用處較多,另一方面效率不大,點到平面的距離只需做dot就夠了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章