余切拉普拉斯算子推导 cotangent Laplace-Beltrami operator

本文主要是介绍余切拉普拉斯算子推导 cotangent Laplace-Beltrami operator,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。

参考自polygon mesh proccessing这本书

基本思路及原理

余切拉普拉斯算子是一种考虑了网格底层几何联系的一种算子,在网格平滑,参数化等算法中经常被用到。它是受到了有限元思绪启发推导出来的。
用到有限元中的散度定理。
目标是对三角平面分片线性函数的梯度的散度进行面积积分。
散度定理如下,对散度的面积分,可以转化为梯度对边界的线积分。
∫ A i d i v F ( u ) d ⁡ A = ∫ ∂ A i F ( u ) ⋅ n ( u ) d ⁡ s \int_{A_i}div\;F(u)\operatorname dA = \int_{\partial A_i}F(u) \cdot n(u) \operatorname ds AidivF(u)dA=AiF(u)n(u)ds

上述式子把对 A i 面积的积分和对 A i 边界( ∂ A i )的积分联系起来。 其中 n 代表与三角形共面并垂直于边界向外的单位向量。 上述式子把对A_i面积的积分和对A_i边界(\partial A_i)的积分联系起来。\\其中 \boldsymbol n 代表与三角形共面并垂直于边界向外的单位向量。 上述式子把对Ai面积的积分和对Ai边界(Ai)的积分联系起来。其中n代表与三角形共面并垂直于边界向外的单位向量。

拉普拉斯积分推导

在这里插入图片描述
将上述定理应用于拉普拉斯,可以得到下述公式

∫ A i Δ f ( u ) d ⁡ A = ∫ A i d i v ∇ f ( u ) d ⁡ A = ∫ ∂ A i ∇ f ( u ) ⋅ n ( u ) d ⁡ s \int_{A_i}{\Delta f(\boldsymbol u) \operatorname d A} = \int_{A_i}{div \nabla f(\boldsymbol u) \operatorname dA} =\int_{\partial A_i}{\nabla f(\boldsymbol u) \cdot \boldsymbol {n(u)} \operatorname d s} AiΔf(u)dA=Aidivf(u)dA=Aif(u)n(u)ds

我们可以对每个三角内的区域进行积分,如上图的右图,对于单个三角形,积分如下,三角形的梯度是常量可以提出来,a和b是中点。

∫ ∂ A i ∩ T ∇ f ( u ) ⋅ n ( u ) d ⁡ s = ∇ f ( u ) ⋅ ∫ ∂ A i ∩ T n ( u ) d ⁡ s = ∇ f ( u ) ⋅ ( a − b ) ⊥ = 1 2 ∇ f ( u ) ⋅ ( x j − x k ) ⊥ \int_{\partial A_i \cap T}{\nabla f(\boldsymbol u) \cdot \boldsymbol {n(u)} \operatorname d s} = \nabla f(\boldsymbol u) \cdot \int_{\partial A_i \cap T}{\boldsymbol {n(u)} \operatorname d s}= \nabla f(\boldsymbol u) \cdot (\boldsymbol a-\boldsymbol b)^\perp\\ =\frac 1 2 \nabla f(\boldsymbol u) \cdot (\boldsymbol {x_j}-\boldsymbol {x_k})^\perp AiTf(u)n(u)ds=f(u)AiTn(u)dsf(u)(ab)=21f(u)(xjxk)

下面解释一下上式中(a-b)怎么来的。

请添加图片描述
我们先把线的法向转90度与中间的小三角形平齐。
对线的积分就是乘上线的长度,所以旋转以后的分积就是小三角形三条边形成的向量。
原来积分的结果应该是
(a-c)+(c-b)

由于(a-c)+(c-b)+(b-a)=0
所以(a-b) = (a-c)+(c-b)

转化成余切形式

梯度详解
三角形的梯度是一个常量,代入上式,得到

∫ ∂ A i ∩ T ∇ f ( u ) ⋅ n ( u ) d ⁡ s = ( f j − f i ) ( x i − x k ) ⊥ ⋅ ( x j − x k ) ⊥ 4 A T + ( f k − f i ) ( x j − x i ) ⊥ ⋅ ( x j − x k ) ⊥ 4 A T \int_{\partial A_i \cap T}{\nabla f(\boldsymbol u) \cdot \boldsymbol {n(u)} \operatorname d s} = (f_j-f_i)\frac {(x_i-x_k)^\perp \cdot (x_j-x_k)^\perp}{4A_T} + (f_k-f_i)\frac {(x_j-x_i)^\perp \cdot (x_j-x_k)^\perp}{4A_T} AiTf(u)n(u)ds=(fjfi)4AT(xixk)(xjxk)+(fkfi)4AT(xjxi)(xjxk)

向量的点乘和叉乘可以转化成余弦和正弦。

γ j , γ k 表示 v j , v k 点上对应的角 \gamma_j,\gamma_k表示 v_j, v_k 点上对应的角 γj,γk表示vj,vk点上对应的角

面积
A T = 1 2 s i n γ j ∥ x j − x i ∥ ∥ x j − x k ∥ = 1 2 s i n γ k ∥ x i − x k ∥ ∥ x j − x k ∥ A_T=\frac {1} {2} sin \gamma_j\left\|x_j-x_i\right\|\left\|x_j-x_k\right\|=\frac {1} {2} sin \gamma_k\left\|x_i-x_k\right\|\left\|x_j-x_k\right\| AT=21sinγjxjxixjxk=21sinγkxixkxjxk

点乘
c o s γ j = ( x j − x i ) ⋅ ( x j − x k ) ∥ x j − x i ∥ ∥ x j − x k ∥ cos \gamma_j = \frac {(x_j-x_i)\cdot(x_j-x_k)}{\left\|x_j-x_i\right\|\left\|x_j-x_k\right\|} cosγj=xjxixjxk(xjxi)(xjxk)

c o s γ k = ( x i − x k ) ⋅ ( x j − x k ) ∥ x i − x k ∥ ∥ x j − x k ∥ cos \gamma_k = \frac {(x_i-x_k)\cdot(x_j-x_k)}{\left\|x_i-x_k\right\|\left\|x_j-x_k\right\|} cosγk=xixkxjxk(xixk)(xjxk)

将上面公式代入式子可得到

∫ ∂ A i ∩ T ∇ f ( u ) ⋅ n ( u ) d ⁡ s = 1 2 ( c o t γ k ( f j − f i ) + c o t γ j ( f k − f i ) ) \int_{\partial A_i \cap T}{\nabla f(\boldsymbol u) \cdot \boldsymbol {n(u)} \operatorname d s} = \frac 1 2 (cot \gamma_k(f_j-f_i)+cot \gamma_j(f_k-f_i)) AiTf(u)n(u)ds=21(cotγk(fjfi)+cotγj(fkfi))

上面公式是对一个三角形内区域的积分。
把所有三角形各分加起来,可以发现每条边都对应两个角(看最上面那张图左边),整体公式如下。

∫ A i Δ f ( u ) d ⁡ A = 1 2 [ ∑ v j ∈ N ( v i ) ( c o t α i , j + c o t β i , j ) ( f j − f i ) ] \int_{A_i}{\Delta f(\boldsymbol u) \operatorname d A} = \frac 1 2 \left [\displaystyle \sum_{v_j\in N(v_i)}(cot \alpha_{i,j}+cot \beta_{i,j})(f_j-f_i)\right ] AiΔf(u)dA=21 vjN(vi)(cotαi,j+cotβi,j)(fjfi)

得到点的拉普拉斯公式如下

Δ f ( v i ) = 1 2 A i [ ∑ v j ∈ N ( v i ) ( c o t α i , j + c o t β i , j ) ( f j − f i ) ] \Delta f(v_i) = \frac {1} {2A_i} \left [\displaystyle \sum_{v_j\in N(v_i)}(cot \alpha_{i,j}+cot \beta_{i,j})(f_j-f_i)\right ] Δf(vi)=2Ai1 vjN(vi)(cotαi,j+cotβi,j)(fjfi)


本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。

这篇关于余切拉普拉斯算子推导 cotangent Laplace-Beltrami operator的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/403683

相关文章

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

【无线通信发展史⑧】测量地球质量?重力加速度g的测量?如何推导单摆周期公式?地球半径R是怎么测量出来的?

前言:用这几个问答形式来解读下我这个系列的来龙去脉。如果大家觉得本篇文章不水的话希望帮忙点赞收藏加关注,你们的鼓舞是我继续更新的动力。 我为什么会写这个系列呢? 首先肯定是因为我本身就是一名从业通信者,想着更加了解自己专业的知识,所以更想着从头开始了解通信的来源以及在每一个时代的发展进程。 为什么会从头开始写通信? 我最早是学习了中华上下五千年,应该说朝代史,这个算个人兴趣,从夏

CF #278 (Div. 2) B.(暴力枚举+推导公式+数学构造)

B. Candy Boxes time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/488/problem/B There

HDU2524(规律推导)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2524 解题思路: 暴力推出矩阵,以n = 2 , m = 4为例: 1 3  6  10 3 9 18 30 可以发现第一行和第一列都是有规律的,彼此相差2、3、4·····,其他元素为相应行第一个元素乘以第一列元素的积。预处理之后,我们O(1)就可以输出g[n][m]的值。 另外,

Ural1209(数学推导)

题目链接:点击打开链接 解题思路: 此题甚好。推导公式,首先观察序列110100100010000·····,我们把为1的下标单独拿出来看。依次为1、2、4 、7、 11·····,可以分解为1+(0) 、1+(0+1)、1+(0+1+2)、1+(0+1+2+3)、1+(0+1+2+3+4),可以推导出规律1 + x * (x - 1) / 2。 那么对于每个n,我们只要判断是否存在x

Python中如何实现列表推导式(List Comprehension)

Python中的列表推导式(List Comprehension)是一种简洁且高效的方式来创建列表。它不仅让代码更加简洁,而且通常比使用循环和条件语句生成列表更快。列表推导式的基本形式允许你从现有的列表或其他可迭代对象中创建新的列表,同时应用过滤和转换操作。下面我将详细解释列表推导式的概念、基本语法、高级用法以及其在实际应用中的优势。 一、列表推导式的基本概念 列表推导式是Python中的一种

对极约束及其性质 —— 公式详细推导

Title: 对极约束及其性质 —— 公式详细推导 文章目录 前言1. 对极约束 (Epipolar Constraint)2. 坐标转换 (Coordinate Transformations)3. 像素坐标 (Pixel Coordinates)4. 像素坐标转换 (Transformations of Pixel Coordinates)5. 本质矩阵 (Essential Matr

【Python基础】Python推导式

本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢! 文章目录 一、前言二、列表推导式三、元组推导式(生成器表达式)四、字典推导式五、集合推导式六、总结 一、前言 Python推导式(Comprehensions)是Python语言中一种独特且强大的语法特性,用于从已有的可迭代对象(如列表、元组、字典、集合)快速创建

《机器学习》 基于SVD的矩阵分解 推导、案例实现

目录 一、SVD奇异值分解 1、什么是SVD 2、SVD的应用         1)数据降维         2)推荐算法         3)自然语言处理 3、核心         1)什么是酉矩阵         2)什么是对角矩阵 4、分解过程 二、推导 1、如何求解这三个矩阵         1)已知:          2)根据酉矩阵的特点即可得出:

从“法线贴图的意义”到“切线空间公式的推导与验证”

目录 目标1. 法线贴图1.1 “法线”的意义1.2 “法线贴图”的意义 2. 切线空间2.1 法线贴图中数据的含义2.2 “切线空间”的定义 3. 切线空间计算公式3.1 构造几何关系等式3.2 切线空间计算公式 4. 代码5. 验证——与其他美术软件计算的结果进行比较总结 目标 本篇的重点是 讨论法线贴图的意义讨论切线空间的意义推导切线空间的计算公式根据公式编写代码将其计算