From the discrete Hodge star to one matrix
Guide 2 handed us the whole apparatus of discrete exterior calculus: functions live on vertices as 0-cochains, the discrete exterior derivative d is just the signed incidence (coboundary) matrix, and the discrete Hodge star is a diagonal matrix of primal-to-dual size ratios. The smooth Laplace-Beltrami operator is delta d on functions — divergence of gradient, or d* d. So the discrete recipe is forced on us with no new choices: assemble L = d^T (star_1) d, where d is the vertex-to-edge coboundary and star_1 is the diagonal Hodge star on edges. The remarkable fact of this guide is that when you carry out this purely formal assembly on a triangle mesh, the answer is not abstract at all — every entry is a sum of cotangents of mesh angles.
Why cotangents at all? The Hodge star on an edge is the ratio (dual edge length) / (primal edge length). In a triangle mesh the natural dual is the circumcentric dual: the dual edge crossing a primal edge connects the circumcenters of the two adjacent triangles. A short calculation with the law of sines shows that this length ratio for an interior edge equals (cot alpha + cot beta) / 2, where alpha and beta are the two angles OPPOSITE the edge in its two triangles. The cotangents are not a clever guess someone reverse-engineered to make smoothing look nice; they are exactly what the circumcentric Hodge star computes. That is the honest origin, and it is worth fixing in your mind before the formula starts to feel like magic.
The cotangent formula, written out
Here is the operator in full. For a function u sampled at the vertices, the cotangent Laplacian at an interior vertex i is (L u)_i = (1/2) sum over neighbors j of (cot alpha_ij + cot beta_ij) (u_i - u_j), where alpha_ij and beta_ij are the two angles opposite the edge ij. Written as a matrix, L is symmetric, every off-diagonal entry L_ij = -(1/2)(cot alpha_ij + cot beta_ij), and the diagonal L_ii is minus the sum of its row so that constants are killed: L applied to the all-ones vector is zero, exactly mirroring the smooth fact that the Laplacian of a constant function vanishes. Notice this depends only on the angles, never on edge lengths directly — a signature of its conformal character that we will cash in shortly.
Cotangent Laplacian on a triangle mesh
(L u)_i = (1/2) * sum_{j ~ i} (cot alpha_ij + cot beta_ij) * (u_i - u_j)
alpha_ij , beta_ij = the two angles OPPOSITE edge ij
(one in each triangle sharing edge ij)
Matrix entries:
L_ij = -(1/2)(cot alpha_ij + cot beta_ij) (i != j, neighbors)
L_ii = - sum_{j != i} L_ij (rows sum to 0)
Mass / area (lumped, barycentric):
M_ii = (1/3) * (total area of triangles touching vertex i)
'True' Laplace-Beltrami: Delta = M^{-1} L
Weak / variational form: stiffness L , mass M -> generalized problem L x = lambda M xOne subtlety the formula above quietly hides: L alone is the stiffness matrix, the discrete analogue of integral of grad u dot grad v, not yet the Laplace-Beltrami operator. To recover an operator whose eigenvalues match the smooth Laplacian you must divide by a mass matrix M that records the area each vertex 'owns' — the lumped choice M_ii = (1/3) of the area of incident triangles is standard. The true discrete Laplace-Beltrami is then M^{-1} L. This split between stiffness and mass is exactly the finite-element story (linear hat functions on triangles), and it is no coincidence: the cotangent Laplacian IS the piecewise-linear finite-element Laplacian, rediscovered from the Hodge-star side. Keep stiffness and mass distinct, because eigenvalues, heat flow, and Poisson solves all need the M.
Where it works, and where it bites
The cotangent Laplacian inherits a beautiful list of the smooth Laplacian's structural properties, and these are why it dominates the field. It is symmetric, so its eigenvalues are real and its eigenvectors orthogonal. On a closed mesh its only null vector is the constant, matching the smooth kernel. Crucially it is intrinsic in a strong sense: because it sees only angles, it is invariant under any rigid motion of the mesh AND, more subtly, behaves correctly under refinement — refine the triangulation and the operator converges to the smooth Laplace-Beltrami operator of the underlying surface. This is the property that earns it the name 'the right discretization' rather than merely 'a discretization'.
Two more honest caveats before we use it. First, conventions vary: many papers absorb the factor 1/2 into the mass matrix, some use the un-lumped (full Galerkin) mass matrix instead of the lumped diagonal, and the sign is split fifty-fifty across the literature between L (positive semidefinite) and -L (so that it matches the negative smooth Laplacian on R^n). State which you mean. Second, the operator is well defined only on a manifold mesh with consistent orientation; non-manifold edges (shared by three or more triangles) and boundary edges (one triangle only, so only one cotangent) need explicit handling. On a boundary edge you simply keep the single available cotangent — the formula degrades gracefully, which is part of its appeal.
Three things it lets you do
Now the payoff: nearly every classical mesh-processing task is a one-line problem once L and M are in hand. Smoothing / denoising runs the heat equation: take the vertex positions themselves as three scalar functions and evolve them by (I + t M^{-1} L) x_new = x_old, an implicit step that diffuses high-frequency noise while leaving the low-frequency shape intact — this is mean-curvature flow in its simplest discrete form, since L applied to the embedding gives (twice the area times) the mean-curvature normal. Poisson reconstruction and editing solve L x = b: prescribe a target divergence or gradient field b (say, a deformed handle) and let L find the surface that best fits it in the least-squares sense, the workhorse behind detail-preserving deformation and seamless cloning.
The third use is the deepest. The eigenvectors of L — solutions of the generalized problem L phi = lambda M phi — are the discrete analogue of the vibration modes of a drumhead, the Laplacian eigenfunctions of the surface. The smallest nonzero eigenvalue's eigenvector partitions the shape into two natural halves (spectral clustering and segmentation); the first few hundred eigenvectors form a frequency basis in which you can low-pass filter geometry, compress it, or compute the heat-kernel and biharmonic distances used for shape matching. The full eigenvalue spectrum is an isometry-invariant fingerprint of the mesh — this is exactly the discrete version of hearing the shape of a drum. Two meshes that are intrinsically the same surface, however differently embedded, share the same spectrum.
Conformal parameterization, and the honest limits
The angle-only character of L pays off most visibly in parameterization: flattening a curved mesh onto the plane so a texture or coordinate grid can be applied. Because the cotangent Laplacian measures angle distortion, minimizing the discrete Dirichlet energy x^T L x — which is solving L u = 0 on the interior with fixed boundary — produces a map that is as harmonic, hence as angle-preserving, as the discrete setting allows. This is the heart of conformal parameterization: a flattening that keeps small shapes undistorted even where it must stretch areas, recovering the discrete echo of the smooth fact that harmonic maps minimize Dirichlet energy. The cotangent weights are precisely what make 'discrete conformal' a meaningful and stable notion rather than a slogan.
But here the honesty has to be loud, because parameterization is where naive expectations break. You cannot flatten a closed surface like a sphere or a torus to the plane without cutting it — this is topology, not numerics, and no choice of weights repairs it. Even on a disk-topology patch, a discrete map can fold over itself (lose injectivity) precisely on those obtuse triangles where cotangent weights go negative; guaranteeing a fold-free embedding needs extra structure (Tutte's theorem gives it only for convex boundary and nonnegative weights). And 'discrete conformal' is a genuine approximation: there is no discrete map that is exactly angle-preserving and exactly fold-free and exactly matches a prescribed boundary all at once — you trade among these, and different methods (cotangent harmonic, least-squares conformal, circle patterns, conformal-equivalence flows) make different trades. Know which compromise your tool is making.
Step back to the throughline of this rung. Guide 1 discretized curvature and proved a discrete Gauss-Bonnet theorem exactly, with no error term; Guide 2 built discrete exterior calculus so that d, the wedge, and the Hodge star all commute with their smooth counterparts; and this guide cashed both in by assembling delta-d into the cotangent Laplacian — the operator that runs smoothing, editing, the spectral fingerprint, and conformal flattening. The lesson is that 'the right discretization' is the one that preserves structure: symmetry, the constant kernel, convergence under refinement, the conformal/angle character. When a discrete operator keeps the structure, the algorithms that follow inherit the theorems for free. That structural fidelity, more than any single formula, is the real subject of geometry processing.