L-System Tree
Aristid Lindenmayer's L-systems (1968) grow structure by rewriting a string of symbols against a handful of production rules, then handing the result to a "turtle" that reads each symbol as a drawing command. Biology in, geometry out: the same machinery that models filamentous algae also draws a plausible tree.
This one is a dicot with opposite, decussate branching — the signature of a maple (Acer): each node throws a pair of branches on opposite sides, and every successive node is rolled 90° from the last, so the pairs cross at right angles climbing the stem. A perfectly balanced fractal doesn't read as alive, so the proportions follow the tree-modeling literature — Honda's branching model, Prusinkiewicz & Lindenmayer's Algorithmic Beauty of Plants, and Weber & Penn's tree generator — bent toward nature: the paired branches grow unequally (a near-vertical dominant limb and a wider, shorter subordinate, randomized); each child internode contracts to a fraction of its parent — the contraction ratio, the single biggest lever between a full crown and a straggly one; the trunk is a short clear bole that branches low, the decurrent habit of a maple or oak rather than a long bare pole; every limb curves back toward vertical (tropism); thickness follows the pipe model — da Vinci's rule, where a limb's cross-section ≈ the sum of everything it feeds, flaring at the base and tapering to fine twigs; and some buds never open.
axiom: A
A → ! F / [ +A ] [ -A ]
That's the seed of the idea — F draws a segment, / rolls 90° (the decussate twist), [ ] save and restore the turtle, + and − yaw the opposite pair, ! tapers — and everything above is the naturalistic elaboration layered on top.
The same engine grows a small arboretum: pick a species from the menu and the next tree you plant takes its form. The five broadleaves are the most common trees in Boulder, Colorado's urban forest — green ash (the dominant species, and the reason the city watches for emerald ash borer), honeylocust, maple, American elm, and plains cottonwood — each given its own phyllotaxis (opposite/decussate vs. alternate spiral), branch angle, contraction ratio, and crown habit. Two conifers — Colorado blue spruce (the state tree) and ponderosa pine (the foothills native) — switch to a second grammar entirely: an excurrent form with a single straight leader shedding whorls of drooping branches in a conical envelope, instead of the broadleaves' decurrent forking. Each tree keeps its own species, so a grove can mix them.
Left-drag on the ground to plant a seed, then drag upward to grow it — a longer pull yields a taller, more-branched tree, the way a sapling matures. Plant as many as you like; click a tree to select it — the species menu and sliders then retune just that tree — and press Delete to remove it. Middle-drag orbits the camera, shift+middle pans, and the wheel zooms. The branch-angle, twist, tropism (how hard limbs reach for the light — spreading and oak-like near 0%, columnar near 100%), and randomness sliders shape the next tree you plant — or the one you've selected; set the twist to 137.5° (the golden angle) for a spiral; max depth caps how complex a fully grown tree gets, wind stirs the grove from still to a stiff breeze — gusts ripple through and limbs spring back on their own inertia, the thin twigs moving far more than the thick limbs, and no two trees catch quite the same wind — and ↻ re-rolls every tree's variation. Plain HTML5 canvas + JS with a hand-rolled 3D turtle and camera — line art, no leaves, light or dark to match the page. Source on GitHub.
Take it into SketchUp. The same generator is ported to a small SketchUp extension that plants these species as real-scale line geometry — lightweight edges for sketch modeling, each grown to its natural height (a plains cottonwood stands ~30′). Download the extension (.rbz), then in SketchUp open Window → Extension Manager → Install Extension and choose the file; plant your trees from the Extensions → L-System Trees menu. Source.
References
- Lindenmayer, A. (1968). Mathematical models for cellular interaction in development. Journal of Theoretical Biology — the original L-systems.
- Honda, H. (1971). Description of the form of trees by the parameters of the tree-like body. Journal of Theoretical Biology — branching angles and parent-to-child length ratios.
- Prusinkiewicz, P. & Lindenmayer, A. (1990). The Algorithmic Beauty of Plants, ch. 2 "Modeling of trees" — L-system tree models and the contraction-ratio "straggliness" knob.
- Weber, J. & Penn, J. (1995). Creation and Rendering of Realistic Trees, SIGGRAPH '95 — clear-trunk fraction, internode taper, branch counts.
- da Vinci's rule (the pipe model for branch thickness) — Minamino & Tateno (2014), Tree Branching: Leonardo da Vinci's Rule versus Biomechanical Models, PLoS ONE.
- Species list — the most common trees in the City of Boulder, Colorado urban tree inventory (Open Data).