变形梯度 Deformation Gradient
假设有二维三角形,其静态时的三个顶点的坐标是
x0=[x0y0]x1=[x1y1]x2=[x2y2]
重心坐标是
b=[uv]Tβ0(b)=1−u−vβ1(b)=uβ2(b)=vax(b)=i=0∑2xiβi=β0(b)x0+β1(b)x1+β2(b)x2
- βi 是三角形各顶点的基函数,也就是各顶点的权重插值函数
变形后的三个顶点的坐标是
x0=[x0y0]x1=[x1y1]x2=[x2y2]
重心坐标是
b=[uv]Tβ0(b)=1−u−vβ1(b)=uβ2(b)=vax(b)=i=0∑2xiβi=β0(b)x0+β1(b)x1+β2(b)x2
变形可以表示为如下仿射变换
x=Fx+t
我们计算变形梯度 F=∂x∂x
F=∂x∂x=∂b∂x∂x∂b=∂b∂x(∂b∂x)−1
将重心坐标公式代入
b=[uv]Tβ0(b)=1−u−vβ1(b)=uβ2(b)=vaF=∂b∂x(∂b∂x)−1=∂b∂(i=0∑2xiβi)∂b∂(i=0∑2xiβi)−1=(i=0∑2xi∂b∂βi)(i=0∑2xi∂b∂βi)−1=(x0∂b∂β0(b)+x1∂b∂β1(b)+x2∂b∂β2(b))(x0∂b∂β0(b)+x1∂b∂β1(b)+x2∂b∂β2(b))−1=([x0y0][∂u∂β0∂v∂β0]+[x1y1][∂u∂β1∂v∂β1]+[x2y2][∂u∂β2∂v∂β2])⋅⋯=([ ∂u∂β0[x0y0]∂v∂β0[x0y0] ]+[ ∂u∂β1[x1y1]∂v∂β1[x1y1] ]+[ ∂u∂β2[x2y2]∂v∂β2[x2y2] ])⋅⋯=[(∂u∂β0[x0y0]+∂u∂β1[x1y1]+∂u∂β2[x2y2])(∂v∂β0[x0y0]+∂v∂β1[x1y1]+∂v∂β2[x2y2])]⋅⋯
注意结果是向量外积,生成了 2×2 矩阵,我们可以定义几个矩阵来简化这个描述过程
XX= ∣ x0 ∣∣x1∣∣x2∣∈R2×3= ∣ x0 ∣∣x1∣∣x2∣∈R2×3ab=[uv]Tβ0(b)=1−u−vβ1(b)=uβ2(b)=vaHXHXHF=∂u∂β0∂u∂β1∂u∂β2∂v∂β0∂v∂β1∂v∂β2=−1−1−0−1−0−1= ∣ x0 ∣∣x1∣∣x2∣−1−1−0−1−0−1= ∣x1−x0 ∣∣x2−x0∣=Ds= ∣ x0 ∣∣x1∣∣x2∣−1−1−0−1−0−1= ∣x1−x0 ∣∣x2−x0∣=Dm=XH(XH)−1=DsDm−1