zoukankan      html  css  js  c++  java
  • DGP

    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邻域计算得到的,如下:

    [n(v) = frac{sum_{Tin Omega (v)} alpha_T old{n}(T)}{||sum_{Tin Omega(v)}alpha_Told{n}(T)||_2} ]

    其中,(T)为领域的三角形,(old{n}(T))为三角形的法向量,(alpha(T))为权重,权重的取值通常有:

    • 常量,取值为1;
    • 三角形面积;
    • 三角形与该顶点关联的角度;

    三角形内点的梯度

    三角形内的点(x)可以用重心坐标,结合三角形的三个点(xi, xj, xk)进行表示:

    [x = alpha x_i + eta x_j + gamma x_k ]

    那么x点的梯度就可以写成:

    [igtriangledown_x x = x_i igtriangledown_x alpha + x_j igtriangledown_x eta + x_k igtriangledown_x gamma ]

    其中,(alpha)的计算,是三角形(xx_jx_k)的面积和三角形(x_ix_jx_k)的面积比,其中三角形(xx_jx_k)的面积的计算为(xx_j)向量在以(x_jx_k)为底的高的方向上的投影长度(即三角形的高),那么接着就可以通过(1/2底x高)计算三角形面积,具体如下:

    [alpha = A_i / A_T \ = frac{left( (x-x_j)cdot frac{(x_k - x_j)^ot}{||x_k - x_j||_2} ight)||x_k-x_j||_2}{2A_T} \ = (x-x_j)cdot (x_k - x_j)^ot / 2A_T ]

    对x求导得:

    [igtriangledown_x alpha = frac{(x_k - x_j)^ot}{2A_T} ]

    同理可以求得:(igtriangledown_x eta, igtriangledown_x gamma)

    其中,((x_k - x_j)^ot)表示向量(vec{x_jx_k})逆时针旋转90度。

    梯度公式如下:

    [igtriangledown_x x = frac{(x_k - x_j)^ot}{2A_T} + frac{(x_j - x_i)^ot}{2A_T} + frac{(x_i - x_k)^ot}{2A_T} ]

    拉普拉斯算子

    关于拉普拉斯比较通俗的解释见:https://zhuanlan.zhihu.com/p/67336297

    拉普拉斯算子实际上衡量了空间中的每一个点处,该函数梯度倾向于增加还是减少。

    连续曲面上的拉普拉斯算子具有以下性质:NULL;对称性;局部性;线性性;最大值原理;半正定性。

    ???怎么理解,离散拉普拉斯算子包含了集合处理的完整的谱信息???

    顶点上的离散拉普拉斯算子的公式有:

    [(Lf)_i = sum_{jin Omega(i)}omega_{ij}(f_j - f_i) ]

    满足以下性质:

    • 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。此时公式为:

    [(Lf)_i = sum_{jin Omega(i)}(f_j - f_i) or \ (Lf)_i = frac{1}{N_i}sum_{jin Omega(i)}(f_j - f_i) ]

    Cotangent Laplacian

    散度在面上的积分,可以转换成梯度在线上的积分,(TODO:CHECK)具体如下:

    [int_{A_i}Delta f dA = int_{A_i} div abla f dA = int_{part A_i} ( abla f) cdot vec{n} ds ]

    结合图,可以更好的理解公式中的几个量的概念:

    • (A_i)顶点i的邻域;
    • (part A_i),邻域(A_i)的边界;
    • (vec{n}),边界上向外的法向量;
    • (f),mesh上定义的信号;

    针对一个三角形的情况,ac乘以它的out法向量加上cb乘上它的out法向量,就是向量ca逆时针旋转90度,加上向量bc逆时针旋转90度,等于向量ba逆时针旋转90度,即:

    [int_{part A_icap T} abla f cdot vec{n}ds = abla fcdot (a-b)^ot = frac{1}{2} abla f cdot (x_j - x_k)^ot ]

    对于每个三角形而言,xi的梯度都是常数,如下:

    [ abla f = (f_j - f_i) frac{(x_i - x_k)^ot}{2A_T} + (f_k - f_i)frac{(x_j-x_i)ot}{2A_T} ]

    因此代入后可得:

    [int_{part A_icap T} abla f cdot vec{n}ds = (f_j - f_i) frac{(x_i - x_k)^ot(x_j - x_k)^ot}{4A_T} + (f_k - f_i)frac{(x_j-x_i)^ot (x_j - x_k)^ot}{4A_T} ]

    又因为:

    [A_T = frac{1}{2}sin gamma_j ||x_j-x_i||||x_j-x_k|| \ = frac{1}{2}sin gamma_k ||x_i - x_k||||x_j - x_k|| \ cos gamma_j = frac{(x_j - x_i)cdot (x_j - x_k)}{||x_j - x_i||||x_j - x_k||} \ cos gamma_k = frac{(x_i - x_k)cdot (x_j - x_k)}{||x_i - x_k||||x_j - x_k||} ]

    最后可得的:

    [int_{A_i}Delta f dA = frac{1}{2}sum_{jinOmega(i)}(cot alpha_{ij} + cot eta_{ij})(f_j - f_i) ]

    右边项除以面积后,可以得到离散化的Laplace-Beltrami算子,如下:

    [Delta f(v_i) = frac{1}{2A_i}sum_{jinOmega(i)}(cot alpha_{ij} + cot eta_{ij})(f_j - f_i) ]

    离散曲率

    Laplace-Beltrami算子可以用平均离散曲率表示,如下:

    [Delta x = -2Hvec{n} ]

  • 相关阅读:
    Python学习-if条件语句
    Python学习-变量
    认识Python
    win7分盘
    mysql环境变量配置
    mysql的下载及配置
    c# excel xls保存
    js 在线引用
    js layer.js
    vue day3 bootstrap 联动下拉
  • 原文地址:https://www.cnblogs.com/grass-and-moon/p/13428329.html
Copyright © 2011-2022 走看看