Discrete Laplacian on a triangle mesh
8 次查看(过去 30 天)
显示 更早的评论
Hi everybody,
I have a triangle mesh with N nodes and T triangles given by the following matrices
n(N,3): which defines the nodes coordinates
t(T,3): which is the connectivity matrix
If I note L as the Discrete Laplacian on my triangle mesh, and I code this
function1= n(:,1).^2;
function2= L*function1;
function2 should be an array of all twos, shouldn't it?
Unfortunately, although I have found some Discrete Laplacian matlab functions in Matlabcentral none of them retrieve a result where function2 should be an array of all twos.
I would appreciate any tip in this matter about how to compute the Discrete Laplacian
Thanks in advance.
Cheers.
0 个评论
采纳的回答
Alec Jacobson
2021-9-30
L discretizes the integrated discrete Laplacian in the sense that:
x' * L * x discretizes Dirichlet energy: ∫ ‖∇x‖² dx. Via Green's idenity this energy is related to the Laplacian as:
∫ ‖∇x‖² dx = -∫ x∆x dx + boundary terms
So, there are at least 3 reasons you won't get all twos:
1) If n,t is a curved surface (as in, all vertices are not on the same plane) then L also encodes the non-Euclidean metric,
2) if n,t has a boundary, then for vertices along the boundary you'll get the integrate Laplacian + boundary terms
3) L computes integrated values, to convert to intergral average, pointwise values you can "unintegrate" (i.e., divide by local area) by multiplying with the inverse of the mass matrix: M \ L * x
0 个评论
更多回答(1 个)
Perry Mason
2021-10-4
1 个评论
Alec Jacobson
2021-10-4
See #1 in the answer above. If your surface is curved, then you don't have a flat metric and won't get just 2s.
Try this in the Euclidean domain via:
[V,F] = create_regular_grid(10,10);
L = cotmatrix(V,F);
M = massmatrix(V,F);
M\(L*f1)
everything is 2.0 except the boundary.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Geometry and Mesh 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!