The Shoelace Behind a Live Freeform Area Take-Off
How Gauss's shoelace and Green's theorem let a freeform boundary hand you its area every frame — plus a four-line Grasshopper GHPython node you can wire today.
Drag a vertex of a scribbled outline and one number updates faster than your eye can follow: the percentage of the total plan your subregion now covers. That is the whole move of the ACTION sketch AXIS//NOLL ships today — a live, freeform 2D Flächenberechnung that never waits for a menu. None of it is new mathematics. All of it is the packaging, and the packaging is the point.
The engine is Gauss’s area formula — the shoelace — and it has been the shortest honest way to measure a polygon since the late 18th century. Walk the vertices in order, cross-multiply each edge’s coordinates, sum, halve the absolute value. It is O(n): 300 points cost roughly 300 multiplications, which is exactly why the number can chase your cursor at 60 frames a second. Green’s theorem is the reason it holds — the signed area of any closed loop equals the contour integral ½∮(x dy − y dx), so a boundary already carries its area as a property; the code does not compute it so much as read it off. For a NURBS or Bézier edge you discretise into a fine polyline and the same sum converges.
←TODAY: Shoelace runs O(n), so a 300-vertex freeform boundary recomputes its area every frame for free — the take-off chases the cursor.
→3012: Every drawn boundary in the model carries its own live take-off; there is no separate quantity-surveying pass, because area was never a report, only a read.
Fulcrum: The percentage is not a measurement you request — it is a property Green’s theorem lets the line hand you.
On a working desk this is the gap between a take-off you request and a take-off you inhabit. Every competition sketch, every Vorentwurf massing, every gross-floor-area check against a zoning cap is one ratio: subregion over envelope, times a hundred. Compute it in a spreadsheet and it lags your thinking; compute it under the cursor and the geometry argues back while you draw. The visual-scripting habit David Rutten’s Grasshopper made native to the profession after 2007 trained a generation to expect exactly this — that a number should update the instant its inputs move.
Atelier: A team living with generative and AI tools mostly worries about outputs it cannot explain — a form the plugin found and nobody can defend in a review. This sketch is the antidote in miniature: four lines you can rebuild from the principle if every plugin goes dark. Monday move — drop the shoelace into your Grasshopper GHPython component as a custom area node and delete the black-box area block you have been trusting; now your take-off has a derivation, not just a value.
Hack: Read the area straight off the boundary — no plugin, no measured dimension. The shoelace in Python, ready to wire under any moving polyline:
def area(p): # Gauss shoelace = Green's theorem, discretised
n = len(p)
return abs(sum(p[i][0]*p[(i+1)%n][1] - p[(i+1)%n][0]*p[i][1] for i in range(n)))/2
pct = area(subregion)/area(boundary)*100 # live %% take-off, recomputed per frameFeed it your polyline vertices in order, call it once per subregion and once per envelope, and the ratio is your take-off. Reverse the winding and the signed sum flips negative — which is the free bonus: the sign tells you which way the loop runs, so holes subtract themselves if you nest them correctly.
If you want the optimisation layer on top — area as an objective an evolutionary solver minimises or holds — McNeel Europe’s Grasshopper Level 3 course spends its Day 2 on precisely this family of goals and forces: physics-based form finding and single/multi-objective optimisation with evolutionary algorithms. The instructor, Ping-Hsiang Chen, is a former senior architect at Zaha Hadid with over ten years in computational design; the three-day intensive runs 27–29 May 2026, 10 AM–5 PM CEST over Zoom, costs EUR 395 before VAT (50% off for full-time students and university teachers), needs Rhino 8, and is capped at 25 seats, per the Rhino blog announcement. Bring it the shoelace first and you will recognise what the solver is really minimising underneath. Open the sketch, drag a vertex, and read the number as a property of the line — not a report about it.
PAZ Kaffi · multidisciplinary editorial, led by PAZ Academy