DGP - 2. Discrete differential geometry
视屏地址:https://www.bilibili.com/video/BV1B54y1B7Uc
目标
为了获取三角网格表面近似的微分特性。
- 局部平均区域;
- 法向量;
- 梯度;
- 拉普拉斯算子;
- 离散曲率;
局部平均区域
人与人之间是存在安全距离的,在一个食堂,面对周围都是不熟悉的人,一般都会选择和别人不相邻的位置进餐。三角网格表面中的一个点,它的局部平均区域是怎么样的呢?
通常有三种表示方法:
- Barycentric cell:将顶点周围的三角面的重心坐标连接到一起;
- Voronoi cell:泰森多边形,又叫洛诺伊图,顶点周围线段的垂直平分线组成的区域;
- Mixed Voronoi cell:利用对边的中心点对Voronoi cell的修正,防止连接线超出周围三角形区域;
各自的面积计算如下:
Barycentric cell:其面积为周围三角形面积之和的三分之一;
Voronoi cell:三角形外切圆半径计算链接,根据外切圆半径可以计算得到周围区域的面积;
Mixed Voronoi cell:修正的区域面积为三角形面积的一般,非修正区域的面积计算和Voronoi cell一致。
法向量
三角形的法向量是很明确的,通过叉积就能够计算得到。但是一个顶点的法向量是怎么确定呢?通常是通过该顶点的one-ring邻域计算得到的,如下:
其中,(T)为领域的三角形,(old{n}(T))为三角形的法向量,(alpha(T))为权重,权重的取值通常有:
- 常量,取值为1;
- 三角形面积;
- 三角形与该顶点关联的角度;
三角形内点的梯度
三角形内的点(x)可以用重心坐标,结合三角形的三个点(xi, xj, xk)进行表示:
那么x点的梯度就可以写成:
其中,(alpha)的计算,是三角形(xx_jx_k)的面积和三角形(x_ix_jx_k)的面积比,其中三角形(xx_jx_k)的面积的计算为(xx_j)向量在以(x_jx_k)为底的高的方向上的投影长度(即三角形的高),那么接着就可以通过(1/2底x高)计算三角形面积,具体如下:
对x求导得:
同理可以求得:(igtriangledown_x eta, igtriangledown_x gamma)
其中,((x_k - x_j)^ot)表示向量(vec{x_jx_k})逆时针旋转90度。
梯度公式如下:
拉普拉斯算子
关于拉普拉斯比较通俗的解释见:https://zhuanlan.zhihu.com/p/67336297
拉普拉斯算子实际上衡量了空间中的每一个点处,该函数梯度倾向于增加还是减少。
连续曲面上的拉普拉斯算子具有以下性质:NULL;对称性;局部性;线性性;最大值原理;半正定性。
???怎么理解,离散拉普拉斯算子包含了集合处理的完整的谱信息???
顶点上的离散拉普拉斯算子的公式有:
满足以下性质:
- NULL:当f为常数的时候,结果为0;
- 对称性:(omega_{ij} = omega_{ji}), 暗示实对称矩阵,有实特征值和实特征向量;
- 局部性:ij不共边的时候(omega_{ij} = 0) ;
- 线性性:(sum_{j}omega_{ij}(f_i - f_j)=0) ;
- 正权重:(omega_{ij} > 0, i e j)
uniform Laplacian
当权重为1,或为(1/N_i)的时候,被称为uniform Laplacian。此时公式为:
Cotangent Laplacian
散度在面上的积分,可以转换成梯度在线上的积分,(TODO:CHECK)具体如下:
结合图,可以更好的理解公式中的几个量的概念:
- (A_i)顶点i的邻域;
- (part A_i),邻域(A_i)的边界;
- (vec{n}),边界上向外的法向量;
- (f),mesh上定义的信号;
针对一个三角形的情况,ac乘以它的out法向量加上cb乘上它的out法向量,就是向量ca逆时针旋转90度,加上向量bc逆时针旋转90度,等于向量ba逆时针旋转90度,即:
对于每个三角形而言,xi的梯度都是常数,如下:
因此代入后可得:
又因为:
最后可得的:
右边项除以面积后,可以得到离散化的Laplace-Beltrami算子,如下:
离散曲率
Laplace-Beltrami算子可以用平均离散曲率表示,如下: