Vertices, edges, faces
A mesh is three lists. Vertices are positions; edges join pairs of them; faces fill the loops. Everything else — normals, curvature, smoothing — is computed from these. And they obey a strange bit of bookkeeping: for any disk-like mesh, V − E + F = 1, no matter how you drag it around.
Drag the vertices; the ledger never changes.
Drift toward your neighbours
Take a noisy mesh, pin its boundary, and give every interior vertex one rule: step toward the centroid of your neighbours. Each pass trades a little position for a lot of smoothness, and the crumpled surface irons itself flat. This is Laplacian smoothing — the same averaging that blurs an image, applied to geometry.
Crumple it, then relax it back — or drag while it heals.
The shrinking problem
Run that same averaging on a closed outline with nothing pinned and there's a catch: every step pulls the curve inward, and it deflates toward a point. The fix, due to Taubin, is a two-beat rhythm — shrink a little, inflate a little more — tuned so noise dies but the shape and its area survive. Smoothing becomes a filter, not a diet.
Watch naive averaging deflate the blob; switch to Taubin.
Untangling a mesh
Relaxation does something stronger than smoothing: it untangles. Scramble every interior vertex of a mesh so its edges cross hundreds of times, keep only the boundary fixed on a convex ring, and let the averaging run. A classic theorem of Tutte guarantees where it lands: a clean, planar embedding with zero crossings — always the same one.
Scramble it, watch it resolve, and try dragging it off course.
The healing mesh
A full workbench. Crumple the mesh and watch triangle quality collapse — each face is graded from slender (cool) to well-shaped (warm) — then let relaxation heal it and grade climb back. Pull any vertex and the mesh accommodates, redistributing the distortion; pin the whole boundary or just the corners and see how much freedom the surface has to settle. Every mesh cleanup tool is doing some version of this.