Hat Function

对一个有个顶点的三角形mesh,定义个对应的基函数,每个函数和一个顶点对应。的值由下式定义:

其中是点重心坐标(barycentric coordinate)的分量。简而言之,在顶点处为1,在其他顶点处为0,在非顶点处则按其所处三角形的重心坐标对三个顶点进行插值。

center (图片来自CS 15-458/858: Discrete Differential Geometry. Keenan Crane

我们可以用这些的加权和来近似其他的复杂函数

这就是“仅以顶点处的值构成的向量来表示整个函数”的几何解释。

Laplacian

Cotan Formula

给定triangle mesh 上的方程:

显然:

此时根据green’s first identity,有:

假设我们的mesh是无边界的,那么对的每条边,都一定有另一个三角形的一条边与之重合,且法线相反。因此,当我们同时考虑mesh上所有的三角形时,上式右侧的第二项可以被抵消掉,只剩下:

可以被近似表示为,于是:

注意到:

从而:

这就得到了著名的cotan公式。基于此,对每个顶点,都有:

Area Matrix

注意我们对的离散化方式并不相同,被“分解”为一系列的加权和,则是被“投影”到了这些上。这两种离散化都说得过去,如果想看看它们的关系,可以考虑将也表示为:

在与相邻的某个三角形中,容易证明:

其中是三角形的面积。

如果用矩阵来表示之间的关系,我们会发现它是对称的,但不是对角的。如果我们假定的差异很小,那么上面的积分结果可以被近似为,从而将其矩阵转换为对角阵——

汇总

我们把cotan公式的矩阵表示记作,在实践中,常常把预乘在一起,记作。这样一来,原方程被转换为了:

可以证明是半正定的,十分便于求解。

Gradient

center

给定三角形以顺时针方向给出)各顶点的标量值,以重心坐标指定其内部每个点对应的

此时:

接下来看看单独的。显然的方向是表示将向量逆时针旋转90°,垂直于线段且朝向。此外,上为0,在处为1,故的大小为1除以的距离——

其中是三角形的面积。

综合起来有:

Divergence

给定一个以三角形为单元的分段线性向量场,且的取值总是位于对应三角形所在的平面上(之前所讨论的梯度场就是一个绝佳的例子),来看看如何定义顶点处的散度。

center

考虑与顶点直接相连的一圈三角形,记其中的一个为,进行研究。设的距离为,取平行于、与相距的线段作为上的边界,则的散度的贡献为:

现记处的内角,处的内角,考虑方程:

将它分解到这两个方向上:

联立,解得:

因此对散度的贡献也可以写成:

遍历与相邻的所有三角形,将它们的上式值相加即可得到顶点的散度。

这里我们遗留了一个问题——为什么积分的边界被取作与相距的线段?这其实不是很有道理,因为和连续情形下的散度对不上。但如果从“”的角度出发,则可以给出一个解释。对包含顶点的一圈区域使用Stokes公式:

现假设是某个标量函数的梯度,则上式右侧是上的积分。此时,考虑上式在三角形中的部分:

如果把取成三角形的中线,那么:

由此可见,把取成包含的一圈三角形的中线,就能使得“”成立。我们是在人为地构造梯度和cotan laplacian之间的桥梁,并把构造的结果称之为散度。