重心坐标

例如颜色等信息一般储存在三角形的顶点中,在进行着色时需要使用三个顶点的属性进行插值。

通常使用三角形重心坐标进行插值

2D三角形

由点a,b,c构成的2D三角形

面积公式

(1)area=12|xb−xaxc−xayb−yayc−ya|=12(xayb+xbyc+xcya−xayc−xbya−xcyb)

坐标形式

p(α,β,γ)=αa+βb+γc

α+β+γ=1

当且仅当α,β,γ满足

0<α<1

0<β<1

0<γ<1

坐标才会在三角形内

计算重心坐标

(2)γ=(ya−yb)x+(xb−xa)y+xayb−xbya(ya−yb)xc+(xb−xa)yc+xayc−xcya
(3)β=(ya−yc)x+(xc−xa)y+xayc−xcya(ya−yc)xb+(xc−xa)yb+xayc−xcya
(4)α=1−β−γ

也可以用面积的比值来表示

(5)α=Aa/Aβ=Ab/Aγ=Ac/A

在进行计算时实际只需要计算其中任意三个面积

3D三角形

面积公式

使用三维向量的叉乘运算求三角形面积

(6)area=12||(b−a)×(c−a)||

但是此处计算的不是有符号面积,即计算的是三角形面积的绝对值,不能直接用于计算重心坐标。

在计算重心坐标时,需要考虑面积的符号

可以发现,按顺时针和逆时针方向定义的顶点顺序,在计算法向量时会得到方向相反的结果

而使用点乘的方式,就可以通过向量的夹角计算出有符号面积,有

(7)α=n⋅na||n||2β=n⋅nb||n||2γ=n⋅nc||n||2

其中

(8)na=(c−b)×(p−b)nb=(a−c)×(p−c)nc=(b−a)×(p−a)

 

坐标形式

坐标形式与2D相同 p(α,β,γ)=αa+βb+γc

α+β+γ=1