CH NEO-ZÜRICH EDITION
WEATHER · CLEAR 24°C
BLEND OF THE DAY · 07/ROGUE
EST. 2027
THE AEC CYBER MORNING NEWS

PAZ Kaffi

DESIGN · DEMOLITION · CAFFEINE · DISPATCH
EDITION 0618 · 18 June 2026
BROADCAST 04:42 CET
2,400 BROADSHEETS PRINTED
READ TIME · 47 MIN
Voronoi & Delaunay: One Point Set, Two Trades
SYSTEMS
FRAME · 06:45
14-06-2026

Voronoi & Delaunay: One Point Set, Two Trades

How Voronoi cells and their Delaunay dual turn one seed field into both a panelisation and a framing logic — with a runnable d3-delaunay browser hack.

Scatter a handful of seed points on a plane and ask a single question of every other location: which seed is nearest? The answer carves the plane into cells, one per seed, each holding all the territory closer to its seed than to any rival. That is a Voronoi diagram, and it is the most useful partition in computational design because it answers the only question fabrication ever really asks — which piece owns which patch of surface.

The structure was sketched by Descartes in 1644, formalised in the plane by Dirichlet in 1850 (German-speaking maths still says Dirichlet-Zerlegung), and generalised to n dimensions by Georgy Voronoi in 1908. The move that matters to a designer came in 1934, when Voronoi’s student Boris Delaunay proved the dual: connect two seeds whenever their cells share an edge and you get a triangulation that maximises the minimum interior angle — it refuses slivers. As our own Kaffipedia Voronoi panel puts it, the cell is the panel, the triangulation is the mesh: one geometry, two trades.

←TODAY: A browser sketch with d3-delaunay turns a click into a buildable panel set before you open Rhino. →3012: The seed field outlives the file format — reconstruct the form from its principle, not its plugin. Fulcrum: The diagram is the same whether it clads the Water Cube or routes a cholera map; learn the partition once and it pays out across every trade that decides nearest-to-where.

Why the duality is the whole lesson. Most readers conflate the two diagrams; the engineering is in keeping them apart. Voronoi vertices are the circumcentres of the Delaunay triangles, so one structure is computed from the other for free — no second algorithm. That is why a single point cloud gives you both a panelisation logic (the Voronoi cells: cladding, acoustic diffusers, PV tiles) and a framing logic (the Delaunay mesh: a well-conditioned shell that won’t buckle on a slender member). Switch readings without moving a seed.

The canonical built proof is the Beijing National Aquatics Center — the Water Cube, PTW Architects with Arup and CSCEC, 2008 — whose ETFE envelope sits on the Weaire–Phelan foam, a three-dimensional cousin of the Voronoi tessellation discovered at Trinity College Dublin in 1993. Roughly 4,000 cushions, two cell types: a mathematical conjecture turned straight into structure. For PAZ readers the nearer lineage is ETH’s form-finding tradition — the Block Research Group’s funicular shells answer the same question Voronoi does, just with force paths instead of nearest-neighbour distance.

Atelier: On a real façade the random scatter looks cheap; the fix is Lloyd’s relaxation — iterate each seed toward its cell’s centroid until the cells equalise into a centroidal Voronoi tessellation. Weight that centroid by a scalar field (solar exposure, a stress map) and panels shrink exactly where the load or the sun is highest, with no manual zoning. That weighted CVT is the same maths underneath variable-density 3D-print infill.

Hack: This Hack teaches you to read the duality on one point set in the browser. The medium is JavaScript; the domain is Geometry. Drop d3-delaunay v6 into a sketch, build the triangulation once, and ask it for both readings — the Voronoi cells and the Delaunay triangles fall out of the same object.

import {Delaunay} from "d3-delaunay";
const pts = Array.from({length: 200}, () => [Math.random()*30, Math.random()*20]);
const d   = Delaunay.from(pts);          // Delaunay triangulation
const vor = d.voronoi([0, 0, 30, 20]);    // Voronoi cells, clipped to plot
const panels = [...pts.keys()].map(i => vor.cellPolygon(i)); // each cell = one panel
console.log(panels.length, "panels", d.triangles.length/3, "struts");

One Delaunay.from call; two trades out. Run it, jitter the seeds, watch a strut appear every time a panel edge does — that is the dual, live.

Move: Before your next free-form surface, prototype the seed field in the browser, name the scalar you weight it by, and write that objective down. If a tool generates the cells for you, make it tell you which energy it minimised — a form you cannot re-derive is one you cannot defend in a structural review.

FILED FROM
CO-SIGNERS
PAZ Academy
CONFIDENCE
HIGH
REPRINTS
© PAZ - PARAMETRIC ACADEMY ZURICH · ALL RIGHTS RESERVED
⚑ REPORT AN ERROR · SUBMIT A CORRECTION
◂ BACK TO FRONT PAGE · PAZ KAFFI

© 2026 PAZ Academy.