重心坐标

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

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

2D三角形

由点abc构成的2D三角形

面积公式

(1)area=12|xbxaxcxaybyaycya|=12(xayb+xbyc+xcyaxaycxbyaxcyb)

坐标形式

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

α+β+γ=1

当且仅当α,β,γ满足

0<α<1

0<β<1

0<γ<1

坐标才会在三角形内

计算重心坐标

(2)γ=(yayb)x+(xbxa)y+xaybxbya(yayb)xc+(xbxa)yc+xaycxcya
(3)β=(yayc)x+(xcxa)y+xaycxcya(yayc)xb+(xcxa)yb+xaycxcya
(4)α=1βγ

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

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

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

3D三角形

面积公式

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

(6)area=12||(ba)×(ca)||

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

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

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

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

(7)α=nna||n||2β=nnb||n||2γ=nnc||n||2

其中

(8)na=(cb)×(pb)nb=(ac)×(pc)nc=(ba)×(pa)

 

坐标形式

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

α+β+γ=1