Laplacian on Triangle Mesh<\center>
局部平均区域
基本思想是mesh面上的点x的值设置为其局部领域的平均。下图是几种具体的情况:

其中蓝色区域为局部平均区域。
- Barycentric cell:三角形的重心和三角形边的中点相连
- Voronoi cell:三角形的外心和三角形的中点相连(对于钝角三角形可能会出现外心在外部)
- Mixed Voronoi cell:在Voronoi cell的基础上,将钝角三角形的外心替换成钝角对边的中点
梯度
拉普拉斯算子是梯度的散度,所以我们需要先求出梯度。

属性插值函数:
f(x)=αfi+βfj+γfk
其中:fi,fj,fk是三角形三个顶点的属性值,x为三角形内部的点,α,β,γ 是点x在三角形的重心坐标,α+β+γ=1。
梯度:
∇xf(x)=fi∇xα+fj∇xβ+fk∇xγ
对于α来说:
α=ATAi=2AT((x−xj)⋅∣∣xk−xj∣∣2(xk−xj)⊥)∣∣xk−xj∣∣2=2AT(x−xj)⋅(xk−xj)⊥
对x求导:
∇xα=2AT(xk−xj)⊥∇xβ=2AT(xi−xk)⊥∇xγ=2AT(xj−xi)⊥
得到梯度公式:
∇xf(x)=fi2AT(xk−xj)⊥+fj2AT(xi−xk)⊥+fk2AT(xj−xi)⊥
因为
(xk−xj)⊥+(xi−xk)⊥+(xj−xi)⊥=0
所以
∇xf(x)=(fj−fi)2AT(xi−xk)⊥+(fk−fi)2AT(xj−xi)⊥
离散拉普拉斯算子
均匀拉普拉斯
Δf(vi)=∣N1(vi)∣1vj∈N1(vi)∑(fj−fi)
此公式可以用于各向同性的remesh上。
余切形式的拉普拉斯
使用混合的有限元/有限体方法(mixed finite element/finite volume method),拉普拉斯算子可以更加精确地进行离散推导。目标是在局部平均区域A_i=A(v_i)上,对逐片线性函数梯度地散度进行积分。

∫AiΔfdA=∫Aidiv∇fdA=∫∂Ai(∇f)⋅nds
将积分分解到每个三角形上,并且局部的Voronoi区域通过三角形两条边的中点a和b,并且每个三角形中∇f(x)是常数,那么在该三角形T上的积分为
∫∂Ai∩T∇f⋅nds=∇f⋅(a−b)⊥=21∇f(u)⋅(xj−xk)⊥
将梯度公式代入:
∫∂Ai∩T∇f⋅nds=(fj−fi)2AT(xi−xk)⊥⋅(xj−xk)⊥+(fk−fi)2AT(xj−xi)⊥⋅(xj−xk)⊥
因为
AT=21sinγj∣∣xj−xi∣∣∣∣xj−xk∣∣=21sinγk∣∣xi−xk∣∣∣∣xj−xk∣∣
cosγj=∣∣xj−xi∣∣∣∣xj−xk∣∣(xj−xk)⋅(xj−xk)cosγk=∣∣xi−xk∣∣∣∣xj−xk∣∣(xi−xk)⋅(xj−xk)
于是得到:
∫∂Ai∩T∇f⋅nds=21(cotγk(fj−fi)+cotγj(fk−fi))
在整个局部平均区域Ai上积分得到:
∫∂Ai∩T∇f⋅nds=21j∈Ω(i)∑(cotαij+cotβij)(fj−fi)
所以在顶点vi处,函数f的拉普拉斯算子的离散平均为:
Δf(vi)=2Ai1j∈Ω(i)∑(cotαij+cotβij)(fj−fi)
矩阵化求解拉普拉斯
Δf(vi)=wivj∈N1(vi)∑wij(f(vj)−f(vi))
其中wi=2Ai1,wij=cotαij+cotβij。将线性和写成矩阵形式:
⎝⎜⎛Δf(v1)⋮Δf(vn)⎠⎟⎞=LDM⎝⎜⎛f(v1)⋮f(vn)⎠⎟⎞
其中D=diag(w1,...,wn),M是对称矩阵:
mi,j=⎩⎪⎨⎪⎧−∑vk∈N1(vi)wik,wij,0,i=jvj∈Ni(vi)otherwise
更高阶的拉普拉斯可以递归得到:
Δkf(vi)=wivj∈N1(vi)∑wij(Δk−1f(vj)−Δk−1f(vi))
那么这个矩阵表示就很简单的对应拉普拉斯矩阵L的k次幂Lk=(DM)k。
因此在n个顶点的mesh上更高阶的偏微分方程Δkf=b离散化之后会得到一个(n×n)的线性系统:
Lkx=b
其中x=(f(v1),...,f(vn))T,且b=((b(v1),...,b(vn)))T
矩阵性质
稀疏性 简单说一下吧。拉普拉斯矩阵中只有对角元和边对应的元素是非0的,其余全是0。根据欧拉公式,平均每一行大约7个非0元素。
对称性 由于对角矩阵D捣乱,所以矩阵L=DM不是对称的。不过对于任意k阶的拉普拉斯系统很容易转换为对称系统,即
M(DM)k−1x=D−1b
正定性 一般来讲,解偏微分方程都需要边界条件。即对于一个线性系统Ax=b,有部分变量xi保持不变,此时它们不再是未知量了。此时将对应的列ai移到右手边,即b←b−xiai,同时对应的行从整个系统中移除。注意到此时整个系统还是保持对称的!!!在移除边界条件之后,可以证明矩阵L是负定的!负定很简单,直接在每个L上乘一个-1就行,因此我们最后得到
(−1)kM(DM)k−1x=(−1)kD−1b
由此我们就得到了一个稀疏、对称且正定的线性系统。
Reference
[1]http://staff.ustc.edu.cn/~fuxm/course/2019_Spring_DGP/index.html
[2]https://optsolution.github.io/archives/19907.html