CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Geometric ModelingCotangent Laplacian Derivation
Acknowledgements: Olga Diamanti, Julian Panetta
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Cotan Laplacian Motivation
Normal ComputationMean Curvature
RANDOM EQUATIONS FOR SLIDES 3
Y =
2
66664
�f(v1)�f(v2)�f(v3)
· · ·�f(vN )
3
77775
L =
2
6664
w11 w12 · · · w1Nw21 w22 · · · w2N...
... · · ·...
wN1 wN2 · · · wNN
3
7775= {wij}
wij =
8<
:
0 i 6= j, @ edge (i, j)1 i 6= j, 9 edge (i, j)�|N(vi)| i = j
wij =
8>><
>>:
0 i 6= j, @ edge (i, j)cot↵j+cot�j
2A(vi)i 6= j, 9 edge (i, j)
�P
vk2N(vi)wik i = j
F =
2
66664
f(v1)f(v2)f(v3)· · ·
f(vN )
3
77775
(I � �dtL)vn+1 = vn
vn+1 = vn + �dtLvn+1
vn+1 � vn = �dtLvn
vn+1 = (I + �dtL)vn
@v
@t= �L(v)
@f
@t= ���f
n = �[Lv]i2Hi
Hi =1
2
���� [Lv]i
����
Smoothing
• Discrete Laplacian enables many useful operations on triangle meshes:
• Cotangent weights give less mesh-dependent results, ensuring proper convergence under mesh refinement
…
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Where We’re Headed
• “Cotan Laplacian” refers to weight on each edge contribution.
• We’ll consider two different ways to derive this formula:
• “Traditional graphics approach:” Finite Volume-style
• Finite Element Approach (more general)
�cotanM f(v) =1
2A(v)
X
vi2N(v)
(cot(↵i) + cot(�i))
✓f(vi)� f(v)
◆
Discrete Laplace-Beltrami
Second Approach: Cotangent Formula
CGL slideset 10
1
2(cot(↵i) + cot(�i))
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Goal: Mesh Independence• We want discrete Laplacian to
converge to the Laplace Beltrami operator of smooth surface S as mesh M is refined to better approximate S.
• F is a vector of discrete values (per vertex), f(x) is a smooth function.
• Idea: reinterpret F as a function interpolating the smooth “f,” and directly compute its Laplacian. Converge as F —> f
RANDOM EQUATIONS FOR SLIDES 3
Y =
2
66664
�f(v1)�f(v2)�f(v3)
· · ·�f(vN )
3
77775
L =
2
6664
w11 w12 · · · w1Nw21 w22 · · · w2N...
... · · ·...
wN1 wN2 · · · wNN
3
7775= {wij}
wij =
8<
:
�|N(vi)| i = j0 i 6= j, @ edge (i, j)1 i 6= j, 9 edge (i, j)
F =
2
66664
f(v1)f(v2)f(v3)· · ·
f(vN )
3
77775
@f
@t= ���f
�cotanM F �! �Sf
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Piecewise-Linear Interpolation• Since F holds per-vertex values, it naturally corresponds to a
linear function on each triangle
• (Corner values uniquely determine linear function over triangle)
xy
f(x, y)
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
“Hat Function” Basis• Piecewise linear functions are expressed most simply using the
“hat functions” (linear Lagrange polynomials)
• One basis function per vertex,
• Unique linear function (on triangles) having:
• Interpolation of F on mesh M is just:
�i(vj) =
(1 if i = j
0 otherwise
�i(x) vi
fM (x) =X
i
f(vi)�i(x)
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Gradients• Recall, the Laplacian is the divergence of the gradient:
• So we first need to compute our interpolant’s gradient:
• In other words, the gradient is just a linear combination of the basis function gradients weighted by the per-vertex f values.
rfM (x) = r X
i
f(vi)�i(x)
!=X
i
f(vi)r�i(x)
r�i(x)
�f = r · (rf)
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Hat Function Gradients• Basis functions are linear over each triangle, so these gradients are
constant on each triangle
• We can determine gradient with simple geometric arguments:�0(v0) = 1
�0(v1) = 0 �0(v2) = 0
Where does the gradient point? What about its magnitude?
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Gradient Derivation�0(v0) = 1
�0(v1) = 0 �0(v2) = 0e0
e?0
r�0 · e0 = 0 =) r�0 = ↵e0?
h=) r�0 =
1
h
e?0��e?0��
r�0 · h
e?0��e?0��
!= 1
=) r�0 =e?02A
(area is 1/2 * base * height)
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Final Gradient Expression
• Note, this is the gradient evaluated on one triangle T incident vertex i. (Different gradient on others).
• Works on curved triangle meshes too! Just need triangle area and inward-pointing perpendicular edge vectors:
• Full gradient is then the linear combination
rfM (x) =X
i
f(vi)r�i(x)
r�i|T =e?i2AT
e?i = n⇥ ei
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Now the Laplacian!• Now we want to compute
• But the gradient is piecewise constant! What does divergence even mean?
�fM = r ·rfM (x) = r · X
i
f(vi)r�i(x)!
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Too Many Derivatives!• Problem: function is piecewise linear (only C0 continuous) and we’re
trying to take second derivatives
• But we can make sense of things by using the Divergence Theorem over some region “R”:
• (This allows us to avoid explicitly computing divergence; just need dot products with the curve normals on R’s boundary.)
n
nn
n
n
n
R@R
Z
Rr · (r�) dx =
Z
@Rn ·r� ds
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Approach 1: (Traditional in Graphics)• Idea: define Laplacian on a vertex to be the
average over some region surrounding the vertex.
• To get cotan Laplacian, you need to average over the vertices’ Voronoi regions (region for which v is the closest vtx).
• This region seems somewhat arbitrary; approach 2 won’t need this choice.
R(vi)vi
@R(vi)
[LF]i :=1
|R(vi)|
Z
R(vi)r ·rfM (x) dx
=1
|R(vi)|
Z
@R(vi)n ·rfM (x) ds
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Approach 1 Continued• Break into sum over triangles (so gradient is constant):
n1
n2
vi
`1`2
[LF]i =1
|R(vi)|
Z
@R(vi)n ·rfM (x) ds
=1
|R(vi)|X
T3vi
Z
T\@R(vi)
n ·rfM (x) ds
=1
|R(vi)|X
T3vi
rfT ·Z
T\@R(vi)
n ds
=1
|R(vi)|X
T3vi
rfT · (n1`1 + n2`2)
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Voronoi Diagram Properties
• Voronoi diagram edges bisect vi’s incident edges
n1
n2
vi
`1`2
n1
n2
vi
vj
vkn3
vi + vj2
vi + vk2 n1`1 + n2`2 + n3`3 = 0
(Tri edge vectors sum to zero; so do their perpendiculars.)
ei
[LF]i =1
|R(vi)|X
T3vi
rfT · (n1`1 + n2`2)
=) [LF]i =1
|R(vi)|X
T3vi
rfT ·e?i2
=) n1`1 + n2`2 = �n3`3 =✓vk + vi
2� vj + vi
2
◆?
=1
2(vk � vj)? =
e?i2
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Plug in per-Tri Gradient
e?i + e?j + e
?k = 0
edges sum to zero:( )
vi
vj
vk
ei
ej
ek
[LF]i =1
|R(vi)|X
T3vi
rfT ·e?i2
=1
|R(vi)|X
T3vi
(fir�i + fjr�j + fkr�k) ·e?i2
=1
|R(vi)|X
T3vi
"fi
e?i2AT
+ fje?j2AT
+ fke?k2AT
#· e
?i
2
=1
|R(vi)|X
T3vi
"�fi
e?j2AT
+e?k2AT
!+ fj
e?j2AT
+ fke?k2AT
#· e
?i
2
=1
|R(vi)|X
T3vi
"(fj � fi)
e?j2AT
+ (fk � fi)e?k2AT
#· e
?i
2
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Final Steps
e?i · e?k4AT
=keikkekk cos(�)2keikkekk sin(�)
=1
2cot(�)
e?i · e?j4AT
=keikkejk cos(↵)2keikkejk sin(↵)
=1
2cot(↵)
Note:
vi
vj
vk
ei
ej
ek
↵
�
[LF]i =1
|R(vi)|X
T3vi
"(fj � fi)
e?j2AT
+ (fk � fi)e?k2AT
#· e
?i
2
=1
|R(vi)|X
T3vi
(fj � fi)e?j · e?i4AT
+ (fk � fi)e?k · e?i4AT
[LF]i =1
|R(vi)|X
T3vi
(fj � fi) cot(↵) + (fk � fi) cot(�)
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
• We have the cotan weights now, but expressed as a sum over triangles:
• To get the standard formula, we can regroup these terms as a sum over edges:
• |R(vi)| is the area of the ith vertex’s Voronoi region (the averaging area)
Regrouping Terms
[LF]i =1
2|R(vi)|X
T3vi
(fj � fi) cot↵+ (fk � fi) cot�
[LF]i =1
2|R(vi)|X
vj2N(vi)
(cot(↵ij) + cot(�ij))
✓f(vj)� f(vi)
◆
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Approach 2: Finite Element Method• Instead of trying to discretize the Laplacian itself (using averaging
regions), we discretize the whole PDE containing it. For instance:
• Here “b” is a forcing term (e.g. injecting/sinking heat at each point), and we assume M is a closed surface mesh without a boundary.
• If M had boundary curves, we’d need to specify boundary conditions.
��u = b in M
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Weak Form of the Poisson Equation• We can’t expect a piecewise linear function “u” to solve this PDE exactly
(why does its Laplacian mean, anyway?)
• But we can ask it to be a “weak solution:”
• In other words, we ask for zero residual “along” all test functions.
• Linear FEM: choose piecewise linear functions for both and
• Physical interpretation: minimizing a potential energy over the space of piecewise linear functions
�Z
M �u dx =
Z
M b dx 8 “test functions”
u
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Expand Functions in Basis�Z
M �u dx =
Z
M b dx
u(x) :=X
j
uj�j(x) (x) :=X
i
ai�i(x) b(x) :=X
j
bj�j(x)
�Z
M
X
i
ai�i(x)
!�
0
@X
j
uj�j(x)
1
A dx =Z
M
X
i
ai�i(x)
!0
@X
j
bj�j(x)
1
A dx
=) �X
i,j
aiuj
✓Z
M�i��j dx
◆=X
i,j
aibj
✓Z
M�i�j dx
◆
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Integration by Parts for• To avoid second derivatives, apply divergence theorem in the form
of an integration by parts (move derivative onto )
• Note the “product rule”: r · (�ir�j) = �i��j +r�i ·r�j =)�i��j = r · (�ir�j)�r�i ·r�j
�Z
M�i��j dx = �
Z
Mr · (�ir�j)�r�i ·r�j dx
= �Z
@Mn · (�ir�j) ds+
Z
Mr�i ·r�j dx
=
Z
Mr�i ·r�j dx
Apply divergence theorem
There is no boundary!
Z
M�i��j dx
�i
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Laplacian and Mass Matrices• Now our weak PDE looks like:
• Expressed in matrix form:
• Plugging in gradient expressions:
X
i,j
aiuj
✓Z
Mr�ir�j dx
◆=
X
i,j
aibj
✓Z
M�i�j dx
◆
aTLu = aTMb 8a
Lij =
Z
Mr�i ·r�j dx =
X
T3vi,vj
e?T,i2AT
·e?T,j2AT
AT =X
T3vi,vj
e?T,i · e?T,j4AT
Lij Mij
=) Lu = Mb
Weak form must hold for all test functions!
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
Laplacian Matrix Cotangent Weights
Lij =X
T3vi,vj
e?T,i · e?T,j4AT
Lij =
8>>>><
>>>>:
1
2(cot(↵ij) + cot(�ij)) if i 6= j
X
T3vi
e?T,i ·⇣�e?T,j � e?T,k
⌘
4AT= �1
2
X
vk2N(vi)
(cot(↵ik) + cot(�ik)) if i = j
vi
vj↵ij
�ij
CSCI-GA.3033-018 - Geometric Modeling - Daniele Panozzo
FEM vs “Graphics Approach”• Get exactly the same cotan weights (up to division by region area)
• FEM doesn’t require defining an averaging region
• FEM computes Laplacian integrated against test function instead of an averaged (point) quantity:
• FEM uses exact mass matrix to integrate RHS against test functions; graphics approach uses diagonal “Lumped” approximation Mdiag based on region areas (e.g. Voronoi)—still converges, but higher error. (Lumping effectively treats the RHS function “b” as piecewise constant over the averaging region, while FEM+exact mass matrix treats it as piecewise linear).
• FEM generalizes to higher degree; just use more basis functions!
LFEM = MdiagLAvg Mdiag = diag([R(v0), R(v1), · · · ])