使用重心坐标插值三角形顶点的任何属性

⌚Time: 2022-10-06 01:39:29

👨‍💻Author: Jack Ge

三角形重心坐标插值的作用?

三角形重心坐标插值的主要作用是在三角形内部平滑、连续地过渡顶点属性,实现像素级别的属性计算。具体体现在:

  1. 图形渲染中的属性插值
    在光栅化阶段,已知三角形三个顶点的颜色、纹理坐标、法线等属性,利用重心坐标可计算三角形内部任意片元的对应属性,实现平滑着色、纹理映射、光照计算等。

  2. 保证线性变换的协调性
    重心坐标是仿射不变的,在投影变换(如透视投影)后,需在屏幕空间做透视校正插值,才能得到正确的三维空间属性。重心坐标是这一校正过程的基础。

  3. 几何处理与物理模拟
    在有限元分析、网格变形、参数化等应用中,重心坐标插值用于在三角形网格内部插值位移、密度等物理量,而无需依赖网格拓扑结构。

  4. 简化值与位置的映射
    通过三个顶点权重(和为1)表示内部任何点,使复杂属性分布简化为线性组合,计算高效且稳定。

通俗理解:已知三角形三个角点的信息,想知道内部任一点的信息(如颜色、温度),重心坐标就是给出“该点离每个角点有多近”的权重,按权重混合三个角点的值即可。

什么是三角形重心坐标?

三角形重心坐标(Barycentric coordinates)是描述三角形内部或平面上任意一点位置的一种坐标系统。它用三个非负的权重(标量)来表示点相对于三角形三个顶点的位置。

设三角形三个顶点为 A,B,C 对于平面上的任意一点 P,可以表示为:

P=αA+βB+γC

它由三个系数 (α,β,γ) 组成,满足:

α+β+γ=1

则 (α,β,γ) 称为点 P 关于 △ABC 的重心坐标。

几何解释:

重心坐标与三角形面积有关。设 △ABC 的面积为 S,△PBC 的面积为 Sα,△APC 的面积为 Sβ,△ABP 的面积为 Sγ,则:

α=Sα/S,β=Sβ/S,γ=Sγ/S

并且 Sα+Sβ+Sγ=S

为什么三个和为1的系数可以表示p点

三角形的顶点分别为A,B,C,将A看作为坐标系原点,A到B和C的向量为基向量,那么任意点P可以表示为

P=A+β(B-A)+γ(C-A)

展开合并处理

P=(1-β-γ)A+βB+γC

定义一个新变量α,使得

α=1-β-γ

得出

P(α,β,γ)=αA+βB+γC

其中α+β+γ=1

重心坐标的由来

对于

P=w1*P1+w2*P2+w3*P3

移项

w1*P1+w2*P2+w3*P3−P=0

因为w1+w2+w3 = 1,也就等于

w1*P1+w2*P2+w3*P3−(w1+w2+w3)P=0

展开,合并同类项,最后得到

w1*(P1-P)+w2*(P2-P)+w3*(P3-P)=0

上式说明,如果P1点挂重物w1,P2点挂重物w2,P3点挂重物w3,则P正好是重心,如果把P点放在避雷针上,能够保持平衡

计算重心坐标的方法

面积法

A的系数α:其对应的三角形面积AA(红色部分)占总面积的比值

B的系数β:其对应的三角形面积AB(黄色部分)占总面积的比值

C的系数γ:其对应的三角形面积AC(蓝色部分)占总面积的比值

公式法

根据笛卡尔坐标直接计算三角形重心坐标的显式公式

其中 P=(x,y),三角形顶点 A(xa,ya),B(xb,yb),C(xc,yc)

三角形颜色插值实现

1.使用公式法计算出每个像素点的重心坐标α、β、γ

2.三角形的三个顶点为a,b,c,对于在三角形内部的像素p,它的颜色值为


p.color.red=α*a.color.red+β*b.color.red+γ*c.color.red;

p.color.green=α*a.color.green+β*b.color.green+γ*c.color.green;

p.color.blue=α*a.color.blue+β*b.color.blue+γ*c.color.blue;