1、圖形學把三角形作為基本圖形之一(還有點、線),許多情況下將目標信息存儲於頂點結構中由 vertex shader 向下傳遞到 fragment shader。 vertex shader 每個頂點執行一次,而 fragment shader 每個片元執行一次,並且一個三角形圖元的 fragment 多於 vertex (不討論三角形縮小到片元的情況),因此需要一個 vertex 目標信息到 fragment 目標信息的映射。為解決問題,插值算法利用重心坐標系來完成工作是眾多方法中的一種。
2、重心:幾何物體的各個部分都受到重力作用,這些重力作用集中於一點,這個點叫幾何物體的重心。
三角形的重心是三條邊中線的交點,具有以下性質:
1)重心到頂點的距離與重心到對邊中點的距離為2:1
2)重心和三角形3個頂點組成的3個三角形面積相等
3)重心到3個頂點距離的平方和最小
4)在平面直角坐標系中,重心的坐標是頂點坐標的算術平均
3、二維空間笛卡爾坐標系使用向量進行表示的方法:給定一個基點,兩個從基點出發的不同向向量。
1)由二維頂點a、b、c組成的三角形使用向量表示法以a為基點,(b-a) 與 (c-a) 為方向:p = a + β(b -a) + γ(c - a)
2)化簡等式:p = (1 - β - γ)a + βb + γc
3)添加變量α簡化a的系數:α = 1 - β - γ 即有等式:p = αa + βb + γc
4)對於處於三角形內部的點有α、β、γ的值域為(0.0, 1.0)
4、那么在已知p的情況下,要求得重心坐標一般方法
1)使用β、γ兩個位置量得到線性方程進行求解
2)幾何求解,利用長度比的思想,點p從基點a從(c-a)方向上的距離比上(c-a)的距離就是γ,β可以使用相同的方法求得
3)重心坐標與由重心和頂點分割成三個子三角形的面積成正比,所以將每個子三角形的面積比上面積的和即可
4、三角形的重心坐標可以擴展到3維后仍然能夠使用p = αa + βb + γc,只是等式中的所有頂點都是三維坐標而已,同時這個等式也能夠表示一個平面。叉乘能夠得到一個平面的法向量,同時叉乘結果的模長的一半能夠表示三角 形的面積|AxB| = 0.5*|A||B|sinθ。但是能夠看出來,這個面積與二維的不同在於它不帶方向的,因此不能直接用於重心坐標系的計算,需要配合點積來判斷方向。