Computational design / 2024–2026

Differential growth.
From curve to canopy.

A parametric design system that turns one closed curve into looping patterns on a chosen surface. Adjustable controls shape the folds; comparative studies reveal how the geometry responds.

Rhino · Grasshopper · Kangaroo · Python / Digital design study

My role
Research & computational modelling
System
Geometry, controls & simulation
Controls
Local spacing & folding behaviour
Studies
Growth & density comparisons
Application
COVE pavilion design study

Tools & technologies

Geometry modelling, growth simulation and documentation of the tests.

Programming

Python

Spatial fields, seed preparation & checks

Design & geometry

Rhino · Grasshopper

Parametric modelling & connected data flow

Simulation

Kangaroo

Length, bending, collision & surface goals

Documentation

Illustrator

Vector comparisons & technical diagrams

01 / Project overview

Controlling how
a curve folds.

University of Toronto · ARC3201
2024 research, developed in 2026

The investigation centres on control: how to vary the spacing and tightness of folds while keeping the curve on a chosen surface.

The challenge: produce complex, organic geometry without specifying every loop by hand, while retaining useful control over its spacing and shape.

My contribution: I investigated seed preparation, local density controls, and surface adaptation through comparative geometry studies, and brought those studies together in a documented workflow and pavilion proposal.

The result: a configurable Grasshopper definition, comparative studies showing how inputs affect the geometry, and COVE, a conceptual architectural application.

01 / Define the starting geometryA simple closed seed inside its square boundary

Start with a curve and surface.

The surface sets the domain. A smaller closed curve provides the starting condition.

02 / Generate and adjustThe same square occupied by a continuous folded growth curve

Develop a controlled pattern.

Competing constraints create folds. Local settings influence their spacing and tightness.

03 / Apply the systemModel-derived COVE pavilion geometry and shadow

Carry the pattern into a form.

COVE applies the approach to a rounded canopy, giving the curve a tubular volume.

02 / System architecture

How the pattern
is generated.

The curve is divided into connected segments. Four constraints act together: extend the segments, separate them, resist sharp bends, and keep them on the surface.

A “host” is the surface the curve follows. The solver repeatedly adjusts the connected segments to balance the constraints. The pattern emerges from those adjustments.

A / Prepare

Host + closed seed

Scale the host boundary. Rebuild, pull to the face, then divide into a fixed segment network.

The original closed seed and square boundary
Host mesh OnMesh + field domain

B / Assign local behaviour

One field. Three settings.

Sample initial midpoints · smooth around the chain

Radius rᵢRest length ℓᵢBend strength kᵢ
01 / Expansion

Length(Line)

Set the length each segment tries to reach.

02 / Separation

Collider

Resist overlap in the segment network.

03 / Bending

Angle

Control resistance to tight folding.

04 / Conformity

OnMesh

Keep the curve’s points on the host surface.

BouncySolver

Repeated updates to particle positions + momentum

Internal loop

C / Inspect

Reconstruct the curve

Solver vertices become a closed NURBS. Pause before checking and saving.

The supplied developed growth curve
Check + export 3DM · JSON · CSV
Separate preview branch

The same field function is sampled across the full host mesh. Preview colours show the input field; they do not feed the solver.

View the complete source-derived system diagram
Computational system architectureFull evidence board from the project documentation.

03 / Recorded evolution

One curve.
Seven recorded states.

Compare seven saved curves as the seed folds, spreads across the surface and continues to rearrange.

Select a state to compare the actual exported curve and its measured length. Each drawing uses the same boundary and scale.

State 00: Initial seed. Original exported growth curve within a square boundary.
State 00 / Initial seed

A closed curve establishes the starting condition.

State 01: First folds. Original exported growth curve within a square boundary.
State 01 / First folds

Small deformations appear in four regions of the seed.

State 02: Emergent folding. Original exported growth curve within a square boundary.
State 02 / Emergent folding

Distinct lobes extend toward the corners of the domain.

State 03: Expanding folds. Original exported growth curve within a square boundary.
State 03 / Expanding folds

Larger folds spread through the available square.

State 04: Progressive growth. Original exported growth curve within a square boundary.
State 04 / Progressive growth

Successive folds form a denser spatial pattern.

State 05: Domain occupation. Original exported growth curve within a square boundary.
State 05 / Domain occupation

The curve occupies the square with pronounced local bands.

State 06: Continued relaxation. Original exported growth curve within a square boundary.
State 06 / Continued relaxation

The longer-run export records a rearranged, shorter curve.

Measured from the exports

Folds emerge.
The pattern rearranges.

19.77×curve length / seed length

State 05 reaches 24.39 times the seed length. State 06 is 18.94% shorter, despite representing a longer run.

This measures curve length, not coverage, elapsed time, or convergence.

Download measurements · CSV

These are seven recorded exports, not equal time intervals or a live simulation. Curve lengths were measured using 32-point quadrature of 1,500 cubic Bézier segments per export. Full-precision values are in the CSV.

04 / Local controls

Shape local spacing
and folding.

A density field describes where tighter or looser patterns are intended. Uniform values, gradients, points, and guide curves translate that intent into three local controls.

What the controls change

Spacing between segments, their target length, and their resistance to bending.

Uniform & gradient

Uniform qualitative density field
Input field

Uniform

Uniform / growthA constant field establishes the baseline.
Low intensity qualitative density field
Input field

Low intensity

Low intensity / growthA gradual top-to-bottom transition.
High intensity qualitative density field
Input field

High intensity

High intensity / growthA stronger contrast across the same domain.

Point fields

Centre qualitative density field
Input field

Centre

Centre / growthInfluence concentrated within the square.
Left edge qualitative density field
Input field

Left edge

Left edge / growthInfluence meets the boundary midpoint.
Upper-left corner qualitative density field
Input field

Upper-left corner

Upper-left corner / growthInfluence concentrated near the upper-left corner.

Curve fields

Vertical guide qualitative density field
Input field

Vertical guide

Vertical guide / growthA central band through the square.
Diagonal guide qualitative density field
Input field

Diagonal guide

Diagonal guide / growthInfluence spans opposite corners.
Curved guide qualitative density field
Input field

Curved guide

Curved guide / growthThe field follows a freeform path.

How the field is used. Attractors assign local settings rather than pulling the curve. Values are sampled on the starting segments and travel with them during relaxation.

How to read the studies. Each coloured input field is paired with its corresponding growth export. Colour indicates relative influence, not a measured final density.

Read the implemented parameter mapping

Bound the effect of each control.

The smoothed field becomes a positive multiplier. Each output has its own exponent and clamp. Setting blend to zero restores the scalar baseline.

These are implementation-derived relationships, not measurements of the final pattern.

Dᵢ = contrast ^ (blend × fieldᵢ)

rᵢ / r₀ = clamp(Dᵢ ^ −s, 0.3, 3.0)
ℓᵢ / ℓ₀ = clamp(Dᵢ ^ g, 0.65, 1.5)
kⱼ / k₀ = clamp(D̂ⱼ ^ (−2q), 0.12, 6.0)

D̂ⱼ = √(Dᵢ × Dpaired)
s: spacing contrast
g: local packing boost
q: loop-size contrast

A second control / Collision radius

Change the spacing scale.

Compare the spacing and folding in four radius settings.

Radius 1.0Tighter local packing
Radius 1.5More open separation
Radius 2.0Broader folded bands
Radius 3.0Wider exclusion scale

Radius sets a solver constraint; it is not a measured clearance. The Collider goal does not guarantee that the final smooth curve is free of intersections.

05 / Boundary & surface tests

Testing different outlines
and curved surfaces.

Four flat outlines and three surface conditions test how the growth method responds to a change in its boundary or supporting surface.

The planar tests change the outline; the surface tests add curvature and twist. Together they show the range of domains represented in the study.

01 / Square
02 / Triangle
03 / Circle
04 / Freeform
PlanarFlat host
BendingCurved host
TorsionTwisted host
Design decision

Keep the host definition separate from the growth logic. Geometry supplies the domain; the constraint system develops the curve within it.

06 / Implementation

Preparing inputs.
Checking the output.

The implementation repairs the starting curve, keeps segment connectivity fixed and checks the reconstructed output separately from the solver.

  1. 01

    Repair the seed before solving.

    Rebuilding can move the seed away from the surface. Pulling it back before division restores placement before the solver starts.

  2. 02

    Keep connectivity fixed.

    The saved definition begins with 1,500 segments. Local variation comes from goal settings rather than adding vertices, keeping the control logic separate from network resolution.

  3. 03

    Check the output independently.

    Constraints act on the segment network, but the final output is a smooth curve. Paused diagnostics check that output for curvature and mesh deviation without modifying the simulation.

  4. 04

    Preserve the state behind the result.

    The optional export branch saves geometry, settings, metrics, and curve samples, making it possible to retain the context of a result. The matching Grasshopper definition is archived separately.

Inspect the definition and saved controls
Grasshopper definitionGrasshopper definition with its connected components and controls.
Saved controls in the current file and archived study
ControlArchived studyCurrent file
Seed segments / scale1,500 / 0.501,500 / 0.50
Rest length / radius10.000 / 1.12710.000 / 1.000
Density blend / contrast0.00 / 2.000.65 / 2.00
Gradient bias / axis0.00 / Z1.00 / Z
Momentum / iterations per update0.60 / 300.60 / 30

All four embedded scripts match between the two inspected snapshots. These saved controls have not been verified for every image. The file comparison did not include a new Rhino/Kangaroo run.

07 / Architectural application

COVE.
A pavilion application.

For COVE, the growth curve follows a rounded canopy and gains a tubular volume. The digital proposal applies the pattern controls at architectural scale.

A digital design proposal. Model-derived geometry shows the development; conceptual renders explore light, shadow, and human scale.

Supplied COVE model development: rounded host surface, recovered growth centreline, and tubular geometry
01 / Host surface02 / Growth centreline03 / Volumetric form

Context, people, material appearance, and rendered joints are illustrative. These images do not establish structural capacity or construction detail.

Inspect the supplied model-derived geometry
COVE geometry and ground-plane shadowModel-derived study retained from the project presentation.

08 / Findings & reflection

What the studies show.
What remains untested.

The studies compare how local controls and host geometry affect the curve. They support a digital design workflow, but do not yet establish structural or fabrication performance.

The definition connects geometry preparation, local parameters and simulation. The exported curves and measurements make the differences between results available for inspection.

Delivered outcomes

Local controls and comparative geometry.

  • Configurable behaviour: spatial fields translate design intent into bounded spacing, length, and bending controls.
  • Geometric adaptation: four boundaries and three surface conditions document the method across different domains.
  • Comparative evidence: growth states, density studies, and measurements make differences between outputs visible.
  • Architectural application: COVE connects the pattern-generation method to a complete digital form.
What needs further validation

Checks still needed.

  • Clearance: test smooth-curve intersections and minimum non-adjacent distance.
  • Conformity: measure maximum and RMS curve-to-host deviation.
  • Density & stability: compare spatial length distributions and repeat at several resolutions.
  • Fabrication: define material, joints, supports, and manufacturing constraints.

Existing paused diagnostics sample 1,000 intervals. Automated coverage measurement, verified clearance, convergence and fabrication feasibility have not yet been established.

Project evidence

Explore the full record.

The complete document includes mechanics, all study plates, file-state comparisons, and source references.

Discuss this work View résumé