A System for Constrained Aggregation

Rule-Based Component Aggregation with Constrained Rotation, Reflective Symmetry and Collision Detection | September-October 2017

This project resulted in the development of a geometrically general but compositionally constrained system for component aggregation in the Rhinoceros 3D / Python environment. Components and connection points are defined as blocks in Rhinoceros, and parameters for aggregation rules, rotation constraints and levels of symmetry are given as Python variables.

Random Populations and Notations

sticks 2A 1.jpg

sticks 2A 2.jpg


Random Populations

boxes 1.jpg

boxes 3.jpg


2,4,8,16 it.jpg
Tree recursion – 2, 4, 8, 16 iterations
symm larger matrix.png
Reflectional symmetry


Iterative Cursor Growth




For anyone interested in L-systems, here are a couple of nice examples by Fatih Erikli and Diana Lange:



An interesting book on the subject, “The Algorithmic Beauty of Plants” by Przemyslaw Prusinkiewicz and Aristid Lindenmayer, is also available online: