...
本文已参与[新人创作礼]活动,一起开启掘金创作之路
转载请注明出处.
图形学的数学基础(二十):几何图元-重心坐标
定义重心坐标(BarycentricCoordinates)
对于空间内的三角形△v1v2v3和任意一点p,必定唯一存在三个数b1,b2,b3,满足:
b1+b2+b3=1
p=b1v1+b2v2+b3v3
则b1,b2,b3就称为p点在此三角形△v1v2v3上的重心坐标.
重心坐标表示了三角形每个顶点对该点的权重(贡献),重心坐标可以用来三角形光栅化顶点的属性插值,比如说uv 颜色 法线的线性插值。
重心坐标也是一种坐标系统,类似于普通笛卡尔坐标系,但有一个区别就是,重心坐标的三个分量之和为1:
b1+b2+b3=1
这种归一化的约束消除了一个*度,因此即使有三个坐标,它仍然是一个二维空间。
重心坐标不仅适用于三角形内的点,对于边上的点甚至三角形外的点都是适用的,三角形内的重心坐标都是被限制到[0,1]范围内,三角形外的任何点都至少有一个负坐标。
还有一种解释重心坐标的角度,丢弃b3,将(b1,b2)解释为常规的二维坐标,原点位于v3,x轴是v1−v3,y轴是v2−v3
(b1,b2,b3)=>b1v1+b2v2+b3v3=>b1v1+b2v2+(1−b1−b2)v3=>b1v1+b2v2+v3−b1v3−b2v3=>v3+b1(v1−v3)+b2(v2−v3)
计算重心坐标
已知p的坐标和v1,v2,v3的顶点坐标,求p的重心坐标(b1,b2,b3),只需要求解线性方程组即可:
⎩⎨