hr-studioGeometry & Structure · 03
A computational design primer · Meshes & Relaxation

Surfaces that settle into shape.

Nearly every surface a computer touches is a mesh — points joined into triangles, triangles joined into a skin. And the most useful thing you can do to one is disarmingly simple: let every vertex drift toward the average of its neighbours. That's relaxation, and it smooths noise, untangles knots, and heals bad geometry like a surface finding its own equilibrium.

Scroll to begin
i.

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.

Three lists and one invariant
ii.

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.

Each vertex → average of its neighbours
iii.

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.

Naive shrinks · Taubin keeps the shape
iv.

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.

Averaging finds the crossing-free layout
v.

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.

Drag vertices · crumple · watch quality heal
Points, pairs, and loops — that's all a mesh is. Ask each point to sit at the average of its neighbours and the surface smooths, untangles and heals, settling toward equilibrium like a net pulled taut.