重心坐标(barycentric coordinates)是用三角形三个顶点的权重来描述平面内任意一点的方法。给定三角形顶点 AA、BB、CC,平面上任意一点 PP 可以写成:

P=α A+β B+γ C,α+β+γ=1P = \alpha\,A + \beta\,B + \gamma\,C, \qquad \alpha + \beta + \gamma = 1

其中 (α,β,γ)(\alpha, \beta, \gamma) 就是点 PP 的重心坐标,它是 线性插值 在三角形上的推广:三个权重构成一次加权平均。

几何上,每个权重等于对应对边所夹子三角形的面积比:

α=S△PBCS△ABC,β=S△PACS△ABC,γ=S△PABS△ABC\alpha = \frac{S_{\triangle PBC}}{S_{\triangle ABC}}, \quad \beta = \frac{S_{\triangle PAC}}{S_{\triangle ABC}}, \quad \gamma = \frac{S_{\triangle PAB}}{S_{\triangle ABC}}

由此可以直接判断点的位置:

  • 三个权重都在 [0,1][0, 1] 内 ⇔ 点在三角形内部(或边界上)
  • 某个权重为负 ⇔ 点在三角形外部

在光栅化中,片元的颜色、法线、UV 等属性就是三个顶点属性的重心加权和:

f(P)=α f(A)+β f(B)+γ f(C)f(P) = \alpha\,f(A) + \beta\,f(B) + \gamma\,f(C)

注:对于 w≠1w \neq 1 的 齐次坐标,直接对顶点属性进行重心插值会得到非线性的结果,需要先做透视除法再进行插值。