【笔记】Polygon mesh processing 读书笔记(3)
文章目录
3. 微分几何
曲线
- 光滑平面曲线,可认为是可微的一维流形,参数化为:
x : [ a , b ] → R 2 , x ( u ) = ( x ( u ) , y ( u ) ) T , u ∈ [ a , b ] ⊂ R \bold{x}:[a,b] \rightarrow \mathbb{R}^2,\\ \bold{x}(u)=(x(u),y(u))^{T}, u \in [a,b] \subset \mathbb{R} x:[a,b]→R2,x(u)=(x(u),y(u))T,u∈[a,b]⊂R
-
曲线的切向量 x ′ ( u ) = ( x ′ ( u ) , y ′ ( u ) ) T \bold{x}'(u)=(x'(u),y'(u))^{T} x′(u)=(x′(u),y′(u))T,是一阶微分
-
假设参数化是正则的(regular),就是说 x ′ ( u ) ≠ 0 \bold{x}'(u)\neq0 x′(u)=0,那么法向量 n ( u ) = x ′ ( u ) ⊥ / ∣ ∣ x ′ ( u ) ⊥ ∣ ∣ \bold{n}(u)=x'(u)^{\bot}/||x'(u)^{\bot}|| n(u)=x′(u)⊥/∣∣x′(u)⊥∣∣, ⊥ \bot ⊥是旋转90°的意思
-
同一条曲线可能有不同的参数化方式;但是对一个固定的 u u u来说,参数化的结果(值 x ( u ) \bold{x}(u) x(u))是不一样的。通过重参数化可以实现不改变曲线形状下,更改参数化结果(值)
-
微分几何关心的是与参数化方式无关的曲线性质,如长度、曲率等
弧长
- 弧长参数化,是一种保留长度的映射,也是具有**等距性(isometry)**的重参数化
s = s ( u ) = ∫ a u ∣ ∣ x ′ ( t ) ∣ ∣ d t s=s(u)=\int_{a}^{u}||\bold{x}'(t)||dt s=s(u)=∫au∣∣x′(t)∣∣dt
- 这种参数化与参数化方式无关,总是实现从参数域 [ a , b ] [a,b] [a,b]到长度域 [ 0 , L ] [0,L] [0,L]的映射,其中 L = ∫ a b ∣ ∣ x ′ ( u ) ∣ ∣ d u L=\int{a}^{b}||x'(u)||du L=∫ab∣∣x′(u)∣∣du是曲线总长度
- 任意参数化方式,对曲线上的同一点,其到起点的弧长都是相等的
- 但是曲线不满足regular条件时,这个性质就不再成立了
曲率
- 设一个正则曲线用弧长参数化,可定义某点的曲率为:
κ ( s ) : = ∣ ∣ x ′ ′ ( s ) ∣ ∣ \kappa(s):=||x''(s)|| κ(s):=∣∣x′′(s)∣∣
曲率可以描述切向量的倒数与法向量的关系:
x
′
′
(
s
)
=
κ
(
s
)
n
(
s
)
\bold{x}''(s)=\kappa(s)\bold{n}(s)
x′′(s)=κ(s)n(s)
处处曲率为0的曲线,是线段;
处处曲率相等的曲线,是圆
曲率还可以定义为内切圆半径的倒数
表面
弧长和曲率是曲线的欧式不变量,也就是对刚性运动无关。类似的,光滑表面也有度量
表面的参数化表示
- 例子:球面坐标系

( θ , ϕ ) → ( x , y , z ) θ ∈ [ 0 , 2 π ] , ϕ ∈ [ − π , π ] x ( θ , ϕ ) = ( x ( θ , ϕ ) , y ( θ , ϕ ) , z ( θ , ϕ ) ) T = ( R cos ( θ ) cos ( ϕ ) , R sin ( θ ) cos ( ϕ ) , R sin ( ϕ ) ) T (\theta,\phi) \rightarrow (x,y,z)\\ \theta \in [0,2\pi], \phi \in [-\pi, \pi]\\ \bold{x}(\theta,\phi)=(x(\theta,\phi),y(\theta,\phi),z(\theta,\phi))^{T}=(R\cos(\theta)\cos(\phi),R\sin(\theta)\cos(\phi),R\sin(\phi))^{T} (θ,ϕ)→(x,y,z)θ∈[0,2π],ϕ∈[−π,π]x(θ,ϕ)=(x(θ,ϕ),y(θ,ϕ),z(θ,ϕ))T=(Rcos(θ)cos(ϕ),Rsin(θ)cos(ϕ),Rsin(ϕ))T
-
正式形式: x ( u , v ) = ( x ( u , v ) , y ( u , v ) , z ( u , v ) ) T \bold{x}(u,v)=(x(u,v),y(u,v),z(u,v))^{T} x(u,v)=(x(u,v),y(u,v),z(u,v))T
-
以球面坐标系为例,表面的参数化具有以下定义:
- 点 p ( x , y , z ) \bold{p}(x,y,z) p(x,y,z)的球面坐标定义为 ( θ , ϕ ) (\theta,\phi) (θ,ϕ)
- 参数域中每条垂直线,也就是 θ = c \theta=c θ=c,对应3D表面的一条曲线,iso- θ \theta θ曲线,就是连通两个极点的经线;
- 参数域中每条水平先,也就是 ϕ = c \phi=c ϕ=c,对应3D表面的纬线,iso- ϕ \phi ϕ曲线, ϕ = 0 \phi=0 ϕ=0对应的就是赤道
-
注意到参数域到表面出现的失真
度量性质
- 给出连续表面的参数化形式:
x ( u , v ) = ( x ( u , v ) y ( u , v ) z ( u , v ) ) , ( u , v ) ∈ Ω ⊂ R 2 \bold{x}(u,v)=\begin{pmatrix}x(u,v)\\y(u,v)\\z(u,v)\end{pmatrix}, (u,v)\in \Omega \subset \mathbb{R}^2 x(u,v)=⎝⎛x(u,v)y(u,v)z(u,v)⎠⎞,(u,v)∈Ω⊂R2
- 对一点 x ( u 0 , v 0 ) ∈ S \bold{x}(u_0,v_0) \in \mathcal{S} x(u0,v0)∈S,有两条***iso-parameter曲线***:
C u ( t ) = x ( u 0 + t , v 0 ) C v ( t ) = x ( u 0 , v 0 + t ) \bold{C}_{\bold{u}}(t)=\bold{x}(u_0+t,v_0)\\ \bold{C}_{\bold{v}}(t)=\bold{x}(u_0,v_0+t) Cu(t)=x(u0+t,v0)Cv(t)=x(u0,v0+t)
求偏导
x
u
(
u
0
,
v
0
)
:
=
∂
x
∂
u
(
u
0
,
v
0
)
x
v
(
u
0
,
v
0
)
:
=
∂
x
∂
v
(
u
0
,
v
0
)
\bold{x}_{u}(u_0,v_0):=\frac{\partial\bold{x}}{\partial u}(u_0,v_0)\\ \bold{x}_{v}(u_0,v_0):=\frac{\partial\bold{x}}{\partial v}(u_0,v_0)\\
xu(u0,v0):=∂u∂x(u0,v0)xv(u0,v0):=∂v∂x(u0,v0)
设一个正则参数化,也就是说
x
u
×
x
v
≠
0
\bold{x}_{u}\times\bold{x}_v\neq 0
xu×xv=0,切平面可由这两个切向量张成;表面法向量同时垂直于这两个切向量:
n
=
x
u
×
x
v
∣
∣
x
u
×
x
v
∣
∣
\bold{n}=\frac{\bold{x}_{u}\times\bold{x}_v}{||\bold{x}_{u}\times\bold{x}_v||}
n=∣∣xu×xv∣∣xu×xv
- 进一步可以给出方向导数。设参数空间的向量 w ⃗ = ( u w , v w ) T \vec{\bold{w}}=(u_w,v_w)^T w=(uw,vw)T,考虑一条用 ( t , w ⃗ ) (t,\vec{w}) (t,w)参数化的直线 ( u , v ) = ( u 0 , v 0 ) + t w ⃗ (u,v)=(u_0,v_0)+t\vec{\bold{w}} (u,v)=(u0,v0)+tw,这条直线在表面上就是通过点 x \bold{x} x的一条曲线
C w ( t ) = x ( u 0 + t u w , v 0 + t v w ) \bold{C}_{\bold{w}}(t)=\bold{x}(u_0+tu_w,v_0+tv_w) Cw(t)=x(u0+tuw,v0+tvw)
w \bold{w} w关于 x \bold{x} x在 ( u 0 , v 0 ) (u_0,v_0) (u0,v0)的方向导数定义为曲线 C w \bold{C}_{\bold{w}} Cw在 t = 0 t=0 t=0时的切向, w = ∂ C w ( t ) / ∂ t \bold{w}=\partial\bold{C_{\bold{w}}}(t)/\partial t w=∂Cw(t)/∂t
应用链式法则,
w
=
J
w
⃗
\bold{w}=\bold{J}\vec{\bold{w}}
w=Jw,
J
=
[
∂
x
∂
u
∂
x
∂
v
∂
y
∂
u
∂
y
∂
v
∂
z
∂
u
∂
z
∂
v
]
=
[
x
u
,
x
v
]
\bold{J}=\begin{bmatrix} \frac{\partial x}{\partial u} & \frac{\partial x}{\partial v}\\ \frac{\partial y}{\partial u} & \frac{\partial y}{\partial v}\\ \frac{\partial z}{\partial u} & \frac{\partial z}{\partial v}\\ \end{bmatrix} =[\bold{x}_u,\bold{x}_v]
J=⎣⎡∂u∂x∂u∂y∂u∂z∂v∂x∂v∂y∂v∂z⎦⎤=[xu,xv]
第一基本形式
- 参数化函数 x \bold{x} x的Jacobian矩阵对应的是参数空间向量 w ⃗ \vec{\bold{w}} w到表面切向量 w \bold{w} w的线性映射
- Jacobian矩阵编码了表面的度量:允许度量角度、距离和面积怎样从参数域变换到表面的
设
w
1
⃗
\vec{\bold{w}_1}
w1和
w
2
⃗
\vec{\bold{w}_2}
w2是参数空间的两个单位方向向量,夹角余弦为
w
1
⃗
T
w
2
⃗
\vec{\bold{w}_1}^{T}\vec{\bold{w}_2}
w1Tw2,那么对应的表面的两个切向量的夹角余弦为
w
1
T
w
2
=
(
J
w
⃗
1
T
)
(
J
w
⃗
2
)
=
w
1
T
(
J
T
J
)
w
2
⃗
\bold{w}_1^{T}\bold{w}_2=(\bold{J\vec{w}_1}^{T})(\bold{J\vec{w}_2})=\bold{w}_1^T(\bold{J}^T\bold{J})\vec{\bold{w}_2}
w1Tw2=(Jw1T)(Jw2)=w1T(JTJ)w2
J
T
J
\bold{J}^T\bold{J}
JTJ就是第一基本形式:
I
=
J
T
J
=
[
E
F
F
G
]
:
=
[
x
u
T
x
u
x
u
T
x
v
x
u
T
x
v
x
v
T
x
v
]
\bold{I}=\bold{J}^T\bold{J}= \begin{bmatrix} E & F\\ F & G \end{bmatrix}:= \begin{bmatrix} \bold{x}_u^T\bold{x}_u & \bold{x}_u^T\bold{x}_v \\ \bold{x}_u^T\bold{x}_v & \bold{x}_v^T\bold{x}_v \end{bmatrix}
I=JTJ=[EFFG]:=[xuTxuxuTxvxuTxvxvTxv]
第一基本形式除度量角度外,还可以度量切向量的长度的平方
∣
∣
w
∣
∣
2
=
w
⃗
T
I
w
⃗
||\bold{w}||^2=\vec{\bold{w}}^T\bold{I}\vec{\bold{w}}
∣∣w∣∣2=wTIw
- 使用第一基本形式可以度量曲线 x ( t ) = x ( u ( t ) ) \bold{x}(t)=\bold{x}(\bold{u}(t)) x(t)=x(u(t))的长度,其中 u ( t ) = ( u ( t ) , v ( t ) ) \bold{u}(t)=(u(t),v(t)) u(t)=(u(t),v(t))在参数域
曲线的切向量可表示为:
d
x
(
u
(
t
)
)
d
t
=
∂
x
∂
u
∂
u
∂
t
+
∂
x
∂
v
∂
v
∂
t
=
x
u
u
t
+
x
v
u
v
\frac{d\bold{x}(\bold{u}(t))}{dt}=\frac{\partial\bold{x}}{\partial u}\frac{\partial u}{\partial t}+\frac{\partial\bold{x}}{\partial v}\frac{\partial v}{\partial t}=\bold{x}_uu_t+\bold{x}_vu_v
dtdx(u(t))=∂u∂x∂t∂u+∂v∂x∂t∂v=xuut+xvuv
曲线的长度可表示为:
l
(
a
,
b
)
=
∫
a
b
(
u
t
,
v
t
)
I
(
u
v
,
v
t
)
T
d
t
=
∫
a
b
E
u
t
2
+
2
F
u
t
v
t
+
G
v
t
2
d
t
l(a,b)=\int_a^b\sqrt{(u_t,v_t)\bold{I}(u_v,v_t)^T}dt=\int_a^b \sqrt{Eu_t^2+2Fu_tv_t+Gv_t^2}dt
l(a,b)=∫ab(ut,vt)I(uv,vt)Tdt=∫abEut2+2Futvt+Gvt2dt
表面面积可以记为
A
=
∬
U
d
e
t
(
I
)
d
u
d
v
=
∬
U
E
G
−
F
2
d
u
d
v
A=\iint_{U}\sqrt{det(\bold{I})}dudv=\iint_{U}\sqrt{EG-F^2}dudv
A=∬Udet(I)dudv=∬UEG−F2dudv
- 因为第一基本形式可以度量角度、距离和面积,因此可被认为是一种几何工具,也被叫做度量张量(metric tensor)
各向异性
除把参数空间的方向变换为表面的切向量外,还可以把参数空间的圆变换成小所愿,anisotropy ellipse
- 各向异性随缘的主轴: e 1 = J e 1 ⃗ , e 2 = J e 2 ⃗ \bold{e}_1=\bold{J}\vec{\bold{e}_1}, \bold{e}_2=\bold{J}\vec{\bold{e_2}} e1=Je1,e2=Je2
- 主轴长度 σ 1 = λ 1 , σ 2 = λ 2 \sigma_1=\sqrt{\lambda_1}, \sigma_2=\sqrt{\lambda_2} σ1=λ1,σ2=λ2
表面曲率
对表面一点 p \bold{p} p,设切向量是 t = u t x t + v t x v \bold{t}=u_t\bold{x}_t+v_t\bold{x}_v t=utxt+vtxv,对应参数空间的 t ⃗ = ( u t , v t ) T \vec{\bold{t}}=(u_t,v_t)^T t=(ut,vt)T
则法曲率(normal curvature) κ n ( t ⃗ ) \kappa_n(\vec{\bold{t}}) κn(t)是平面曲线(由切向量和表面法向量张成的平面与表面求交得到的曲线)的曲率

κ n ( t ⃗ ) = t ⃗ T I I t ⃗ t ⃗ T I t ⃗ = e u t 2 + 2 f u t v t + g v + t 2 E u t 2 + 2 F u t v t + G v t 2 \kappa_n(\vec{\bold{t}})=\frac{\vec{\bold{t}}^T\bold{II}\vec{\bold{t}}}{\vec{\bold{t}}^T\bold{I}\vec{\bold{t}}}=\frac{eu_t^2+2fu_tv_t+gv+t^2}{Eu_t^2+2Fu_tv_t+Gv_t^2} κn(t)=tTIttTIIt=Eut2+2Futvt+Gvt2eut2+2futvt+gv+t2
- I I \bold{II} II是第二基本形式:
I I = [ e f f g ] = [ x u u T n x u v T n x u v T n x v v T n ] \bold{II}=\begin{bmatrix} e & f\\ f & g\\ \end{bmatrix}=\begin{bmatrix} \bold{x}_{uu}^T\bold{n} & \bold{x}_{uv}^T\bold{n}\\ \bold{x}_{uv}^T\bold{n} & \bold{x}_{vv}^T\bold{n} \end{bmatrix} II=[effg]=[xuuTnxuvTnxuvTnxvvTn]
u u uu uu是二阶偏导
- 假如绕着点 p \bold{p} p的法向旋转切向量,然后得到不同的法曲率,这个法曲率有两个极值,称为主曲率 κ 1 , κ 2 \kappa_1, \kappa_2 κ1,κ2(一个是最大曲率,一个是最小曲率)
- 如果 κ 1 ≠ κ 2 \kappa_1 \neq \kappa_2 κ1=κ2,对应两个单位切向量 t 1 , t 2 \bold{t}_1,\bold{t}_2 t1,t2,称为主方向
- 表面上两个曲率相等的点,称为umbilical或locally spherical,这些点的曲率性质是各向同的。平面或球表面的任一点都是umbilical的
Euler定理
欧拉关于法曲率和主曲率的关系:
κ
n
(
t
⃗
)
=
κ
1
cos
2
ψ
+
κ
2
sin
2
ψ
\kappa_n(\vec{\bold{t}})=\kappa_1 \cos^2\psi+\kappa_2\sin^2 \psi
κn(t)=κ1cos2ψ+κ2sin2ψ
式中
ψ
\psi
ψ是切向量
t
\bold{t}
t和主方向
t
1
\bold{t}_1
t1的夹角
- 这个关系说明,表面的曲率完全由两个主曲率决定;任意法曲率都是这两个曲率的凸集组合;
- 两个主方向永远是正交的
曲率张量
表面的局部性质可以用曲率张量 C \bold{C} C表示,一个3×3的对称矩阵,特征值为 κ 1 , κ 2 , 0 \kappa_1,\kappa_2,0 κ1,κ2,0,特征向量 t 1 , t 2 , n \bold{t}_1,\bold{t}_2,\bold{n} t1,t2,n,构造方法是 C = P D P − 1 \bold{C}=\bold{PDP}^{-1} C=PDP−1, P = [ t 1 , t 2 , n ] \bold{P}=[\bold{t}_1,\bold{t}_2,\bold{n}] P=[t1,t2,n], D = d i a g ( κ 1 , κ 2 , 0 ) \bold{D}=diag(\kappa_1,\kappa_2,0) D=diag(κ1,κ2,0)
其他两个曲率度量:
- 平均曲率 H = κ 1 + κ 2 2 H=\frac{\kappa_1+\kappa_2}{2} H=2κ1+κ2
- 高斯曲率 K = κ 1 κ 2 K=\kappa_1\kappa_2 K=κ1κ2
高斯曲率可以把表面点分为三类:
- elliptical椭圆点( K > 0 K>0 K>0)
- hyperbolic双曲线点( K < 0 K<0 K<0)
- parabolic抛物线点( K = 0 K=0 K=0)
双曲线点表面是局部鞍型;椭圆点是局部凸性的;抛物线点一般是分离前两者的
固有几何(Intrinsic Geometry)
- 仅依赖第一基本形式的性质称为固有的。固有几何只靠表面2D物体即可获知,不需要第三维信息
- 高斯曲率是固有几何,可以直接从第一基本形式推导出来;但是平均曲率不是
- 固有几何与参数化方法无关
Laplace算子
- Laplace算子定义为梯度的散度,对2-参数函数,可写做二阶偏导的和:
Δ f = d i v ∇ f = d i v ( f u f v ) = f u u + f v v \Delta f = div\nabla f = div\begin{pmatrix}f_u\\f_v\end{pmatrix} = f_{uu} + f_{vv} Δf=div∇f=div(fufv)=fuu+fvv
- Laplace-Beltrami算子拓展了Laplace算子到二维流形:
Δ S f = d i v S ∇ S f \Delta_{\mathcal{S}} f = div_{\mathcal{S}}\nabla_{\mathcal{S}}f ΔSf=divS∇Sf
需要给出流形上梯度和散度的定义。给定坐标
x
\bold{x}
x,一种计算方式是:
Δ
S
x
=
−
2
H
n
\Delta_{\mathcal{S}}\bold{x}=-2H\bold{n}
ΔSx=−2Hn
尽管Laplace-Beltrami算子计算的时候使用了平均曲率,但是Laplace-Beltrami算子本身是intrinsic的
离散微分算子
对多边形网格来说,上述概念不能直接使用,需要定义离散微分算子。假设网格可以被看做是光滑表面的分段线性逼近,那么目标就是计算underlying表面的微分性质的approximation。经典的Laplace-Beltrami算子的离散化方法:
局部平均区域
- 总的思想是在一个局部邻域 N ( x ) \mathcal{N}(\bold{x}) N(x),计算空间平均
- 通常, x \bold{x} x是网格顶点,n-ring领域或者其他方式用做平均区域
- 局部区域的大小影响离散算子的稳定性和准确率;淋浴越大,平均操作月光花,计算结果越稳定,但是不准确
几种平均区域的变种:

- Barycentric cell,连接三角形的重心和边的中点;
- Voronoi cell,连接三角形外心和边的中点
- Mixed Voronoi cell,修改一下,内角是钝角的三角形,用对面边中点取代外心
法向量
对独立的三角形 T = ( x i , x j , x k ) T=(\bold{x}_i,\bold{x}_j,\bold{x}_k) T=(xi,xj,xk),法向量 n ( T ) = ( x j − x i ) × ( x k − x i ) ∣ ∣ ( x j − x i ) × ( x k − x i ) ∣ ∣ \bold{n}(T)=\frac{(\bold{x}_j-\bold{x}_i)\times (\bold{x}_k-\bold{x}_i)}{||(\bold{x}_j-\bold{x}_i)\times (\bold{x}_k-\bold{x}_i)||} n(T)=∣∣(xj−xi)×(xk−xi)∣∣(xj−xi)×(xk−xi)
通过计算one-ring邻居的法向量的平均值,可以得到
n
(
v
)
=
∑
T
∈
N
1
(
v
)
α
T
n
(
T
)
∣
∣
∑
T
∈
N
1
(
v
)
α
T
n
(
T
)
∣
∣
\bold{n}(v)=\frac{\sum_{T\in\mathcal{N}_{1}(v)}\alpha_T\bold{n}(T)}{||\sum_{T\in\mathcal{N}_{1}(v)}\alpha_T\bold{n}(T)||}
n(v)=∣∣∑T∈N1(v)αTn(T)∣∣∑T∈N1(v)αTn(T)
-
α
T
\alpha_{T}
αT有不同的选择:
- 常数,不考虑长度、三角形面积、角度,计算结构可能反直觉
- 基于三角形面积加权, α T = ∣ T ∣ \alpha_{T}=|T| αT=∣T∣,也可能反直觉
- 基于相邻三角形的内角, α T = θ T \alpha_{T}=\theta_{T} αT=θT,计算开销较大,但效果较好
梯度
设一个分段线性函数
f
f
f,方便起见,记
f
(
v
i
)
=
f
(
x
i
)
=
f
(
u
i
)
=
f
i
f(v_i)=f(\bold{x}_i)=f(\bold{u}_i)=f_i
f(vi)=f(xi)=f(ui)=fi,对三角形
(
x
i
,
x
j
,
x
k
)
(\bold{x}_i,\bold{x}_j,\bold{x}_k)
(xi,xj,xk)的一点,可线性插值为:
f
(
u
)
=
f
i
B
i
(
u
)
+
f
j
B
j
(
u
)
+
f
k
B
k
(
u
)
f(\bold{u})=f_iB_i(\bold{u})+f_jB_j(\bold{u})+f_kB_k(\bold{u})
f(u)=fiBi(u)+fjBj(u)+fkBk(u)
u
=
(
u
,
v
)
\bold{u}=(u,v)
u=(u,v)是2D共性参数化中的参数对
B B B是重心基函数:

重心基函数大小为1,且满足 B i ( u ) + B j ( u ) + B k ( u ) = 1 B_{i}(\bold{u})+B_{j}(\bold{u})+B_{k}(\bold{u})=1 Bi(u)+Bj(u)+Bk(u)=1;并且 ∇ B i ( u ) + ∇ B j ( u ) + ∇ B k ( u ) = 0 \nabla B_{i}(\bold{u})+\nabla B_{j}(\bold{u})+\nabla B_{k}(\bold{u})=0 ∇Bi(u)+∇Bj(u)+∇Bk(u)=0
因此
f
f
f的梯度:
∇
f
(
u
)
=
f
i
∇
B
i
(
u
)
+
f
j
∇
B
j
(
u
)
+
f
k
∇
B
k
(
u
)
∇
f
(
u
)
=
(
f
j
−
f
i
)
∇
B
j
(
u
)
+
(
f
k
−
f
i
)
∇
B
k
(
u
)
\nabla f(\bold{u})=f_i\nabla B_{i}(\bold{u})+f_j\nabla B_{j}(\bold{u})+f_k\nabla B_{k}(\bold{u})\\ \nabla f(\bold{u})=(f_j-f_i)\nabla B_{j}(\bold{u})+(f_k-f_i)\nabla B_{k}(\bold{u})\\
∇f(u)=fi∇Bi(u)+fj∇Bj(u)+fk∇Bk(u)∇f(u)=(fj−fi)∇Bj(u)+(fk−fi)∇Bk(u)
∇ B i ( u ) = ( x k − x j ) ⊥ 2 A T \nabla B_i(\bold{u})=\frac{(\bold{x}_k-x_j)^{\bot}}{2A_T} ∇Bi(u)=2AT(xk−xj)⊥
沿着顶点 v i v_i vi对边垂直方向,下降速度最快
最终,梯度表示为:
∇
f
(
u
)
=
(
f
j
−
f
i
)
(
x
i
−
x
k
)
⊥
2
A
T
+
(
f
k
−
f
i
)
(
x
j
−
x
i
)
⊥
2
A
T
\nabla f(\bold{u})=(f_j-f_i)\frac{(\bold{x}_i-x_k)^{\bot}}{2A_T}+(f_k-f_i)\frac{(\bold{x}_j-x_i)^{\bot}}{2A_T}
∇f(u)=(fj−fi)2AT(xi−xk)⊥+(fk−fi)2AT(xj−xi)⊥
离散Laplace-Meltrami算子
两种形式:Uniform graph Laplacian和余切形式
Uniform Laplacian
【Taubin95】
Δ
f
(
v
i
)
=
1
∣
N
1
(
v
i
∣
∑
v
j
∈
N
1
(
v
i
)
(
f
j
−
f
i
)
\Delta f(v_i)=\frac{1}{|\mathcal{N}_1(v_i|}\sum_{v_j\in \mathcal{N}_1(v_i)}(f_j-f_i)
Δf(vi)=∣N1(vi∣1vj∈N1(vi)∑(fj−fi)
应用到坐标函数
x
\bold{x}
x时,uniform Laplacian相当于一个从中心顶点
x
i
\bold{x}_i
xi指向one-ring平均顶点的向量
这种算式,当所有顶点共面时,计算结果不为0;然而我们想让结果为0。因此,uniform Laplacian对非均匀网格不适用。为什么呢?因为算式只考虑了邻接关系,没有考虑顶点的空间分布。
从另一方面,这种不变形又可以用来改进局部顶点分布
余切形式
【Meyer03】
在一个局部平均区域
A
i
=
A
(
v
i
)
A_i=A(v_i)
Ai=A(vi)对梯度的散度的积分;使用散度定理,对向量函数
F
\bold{F}
F:
∫
A
i
d
i
v
F
(
u
)
d
A
=
∫
∂
A
i
F
(
u
)
⋅
n
(
u
)
d
s
\int_{A_i}div \bold{F}(\bold{u})dA=\int_{\partial A_i}\bold{F}(\bold{u})\cdot\bold{n}(\bold{u})ds
∫AidivF(u)dA=∫∂AiF(u)⋅n(u)ds
这个方程把平均区域
A
i
A_i
Ai的积分和边缘
∂
A
i
\partial A_{i}
∂Ai的积分关联起来
应用于Laplacian,有
∫
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(\bold{u})dA = \int_{A_{i}} div \nabla f(\bold{u})dA = \int_{\partial A_{i}} \nabla f(\bold{u})\cdot \bold{n}(\bold{u})ds
∫AiΔf(u)dA=∫Aidiv∇f(u)dA=∫∂Ai∇f(u)⋅n(u)ds
Δ
f
(
u
)
\Delta f(\bold{u})
Δf(u)是是散度,
d
i
v
div
div是偏导,平均区域的梯度的散度可以用梯度与法向量的点乘对边缘的积分来替代
我们一个一个三角形看过去,比如对一个三角形
T
T
T的区域,
∂
A
i
∩
T
\partial A_{i} \cap T
∂Ai∩T,求一下梯度的散度的积分;又由于同一个三角形内,梯度处处相等,所以有:
∫
∂
A
i
∩
T
∇
f
(
u
)
⋅
n
(
u
)
d
s
=
∇
f
(
u
)
∫
∂
A
i
∩
T
n
(
u
)
d
s
\int_{\partial A_{i}\cap T} \nabla f(\bold{u})\cdot \bold{n}(\bold{u})ds =\nabla f(\bold{u})\int_{\partial{A_i}\cap T}\bold{n}(\bold{u})ds
∫∂Ai∩T∇f(u)⋅n(u)ds=∇f(u)∫∂Ai∩Tn(u)ds
又,这个边缘是由两个边的中点加上顶点组成的,所以有:
上
式
=
∇
f
(
u
)
⋅
(
a
−
b
)
⊥
=
1
2
∇
f
(
u
)
⋅
(
x
j
−
x
k
)
⊥
上式=\nabla f(\bold{u}) \cdot (\bold{a}-\bold{b})^{\bot}=\frac{1}{2}\nabla f(\bold{u})\cdot (\bold{x}_j-\bold{x}_k)^{\bot}
上式=∇f(u)⋅(a−b)⊥=21∇f(u)⋅(xj−xk)⊥
把前面梯度公式带进来,有
上
式
=
(
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
上式=(f_j-f_i)\frac{(\bold{x}_i-\bold{x}_k)^{\bot}\cdot(\bold{x}_j-\bold{x}_k)^{\bot}}{4A_{T}}+(f_k-f_i)\frac{(\bold{x}_j-\bold{x}_i)^{\bot}\cdot(\bold{x}_j-\bold{x}_k)^{\bot}}{4A_{T}}
上式=(fj−fi)4AT(xi−xk)⊥⋅(xj−xk)⊥+(fk−fi)4AT(xj−xi)⊥⋅(xj−xk)⊥
正好让
γ
j
,
γ
k
\gamma_j,\gamma_{k}
γj,γk表示另外两个顶点
v
j
,
v
k
v_j,v_k
vj,vk的夹角,根据正弦定理和余弦定理,上面的式子可以进一步简化为:
上
式
=
1
2
(
cot
γ
k
(
f
j
−
f
i
)
+
cot
γ
j
(
f
k
−
f
i
)
)
上式=\frac{1}{2}(\cot \gamma_k(f_j-f_i)+\cot \gamma_j(f_k-f_i))
上式=21(cotγk(fj−fi)+cotγj(fk−fi))
最后对整个平均区域积分,得到
∫
A
i
Δ
f
(
u
)
d
A
=
1
2
∑
v
j
∈
N
1
(
v
i
)
(
cot
α
i
,
j
+
cot
β
i
,
j
)
(
f
j
−
f
i
)
\int_{A_i} \Delta f(\bold{u})dA = \frac{1}{2}\sum_{v_j \in \mathcal{N}_1(v_i)}(\cot \alpha_{i,j}+\cot \beta_{i,j})(f_j-f_i)
∫AiΔf(u)dA=21vj∈N1(vi)∑(cotαi,j+cotβi,j)(fj−fi)
则Laplace-Beltrami算子的余切形式为:
Δ
f
(
v
i
)
:
=
1
2
A
i
∑
v
j
∈
N
1
(
v
i
)
(
cot
α
i
,
j
+
cot
β
i
,
j
)
(
f
j
−
f
i
)
\Delta f(v_i) := \frac{1}{2A_i}\sum_{v_j \in \mathcal{N}_1(v_i)}(\cot \alpha_{i,j}+\cot \beta_{i,j})(f_j-f_i)
Δf(vi):=2Ai1vj∈N1(vi)∑(cotαi,j+cotβi,j)(fj−fi)

- 余切形式也有不足
- 如果 α i , j + β i , j > π \alpha_{i,j}+\beta_{i,j} > \pi αi,j+βi,j>π时,余切权重变成负值,可能引起三角形翻转;
- 余切形式不是intrinsic的
- 类似的,也可以定义一个散度算子(Tong2003)
考虑一个向量域
w
:
S
→
R
3
\bold{w}: \mathcal{S}\rightarrow \mathbb{R}^3
w:S→R3,每个三角形定义一个常向量
w
T
\bold{w}_T
wT,离散散度就是每个顶点
v
i
v_i
vi计算一个标量值
d
i
v
w
(
v
i
)
div \bold{w}(v_i)
divw(vi),
d
i
v
w
(
v
i
)
=
1
A
i
∑
T
∈
N
1
(
v
i
)
∇
B
i
∣
T
⋅
w
T
A
T
div \bold{w}(v_i) = \frac{1}{A_i}\sum_{T\in \mathcal{N}_1(v_i)}\nabla B_{i}|_{T}\cdot \bold{w}_T A_T
divw(vi)=Ai1T∈N1(vi)∑∇Bi∣T⋅wTAT
这里
∇
B
i
∣
T
\nabla B_i|_T
∇Bi∣T是顶点
v
i
v_i
vi在三角形
T
T
T中的基函数的梯度向量(常向量)
离散曲率
Laplace-Beltrami算子提供了平均曲法向的离散逼近,于是定义离散平均曲率的绝对值为:
H
(
v
i
)
=
1
2
∣
∣
Δ
x
i
∣
∣
H(v_i)=\frac{1}{2}||\Delta \bold{x}_i||
H(vi)=21∣∣Δxi∣∣
高斯曲率的离散算子:
K
(
v
i
)
=
1
A
i
(
2
π
−
∑
v
j
∈
N
1
(
v
i
)
θ
j
)
K(v_i)=\frac{1}{A_i}(2\pi - \sum_{v_j\in \mathcal{N}_1(v_i)}\theta_j)
K(vi)=Ai1(2π−vj∈N1(vi)∑θj)
由此,可以得到主曲率:
κ
1
,
2
(
v
i
)
=
H
(
v
i
)
±
H
(
v
i
)
2
−
K
(
v
i
)
\kappa_{1,2}(v_i)=H(v_i)\pm\sqrt{H(v_i)^2-K(v_i)}
κ1,2(vi)=H(vi)±H(vi)2−K(vi)
离散曲率张量
怎么定义离散曲率张量?
对每个边,沿着边指定最小曲率为零;根据二面角指定最大曲率。对一个局部区域,计算和它相较的所有边的和,然后平均
C
(
v
)
=
1
A
(
v
)
∑
e
∈
A
(
v
)
β
(
e
)
∣
∣
e
∩
A
(
v
)
∣
∣
e
ˉ
e
ˉ
T
\bold{C}(v)=\frac{1}{A(v)}\sum_{\bold{e}\in A(v)}\beta(\bold{e})||\bold{e}\cap A(v)||\bar{\bold{e}}\bar{\bold{e}}^T
C(v)=A(v)1e∈A(v)∑β(e)∣∣e∩A(v)∣∣eˉeˉT
β
(
e
)
\beta(\bold{e})
β(e)是有向二面角;
e
\bold{e}
e是边;
e
ˉ
=
e
/
∣
∣
e
∣
∣
\bar{\bold{e}}=\bold{e}/||\bold{e}||
eˉ=e/∣∣e∣∣
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)