1. Task: creating a tool for testing variations
The starting point of this exercise was a question: how can we test different rotation behaviors in a system of repeating elements without manually adjusting each one?
Instead of designing a single fixed configuration, the goal was to create an algorithm that allows testing multiple movement logics in a modular system. Each module can rotate around its own axis, while only the control rules change.
This type of thinking appears in kinetic architecture and adaptive facades, where elements respond to light, view, or user needs. For example in “Warsaw Unit” we can see modular, tilted glass paneles that create dynamic visual effects through reflections. This shows how repeating panels can produce a sense of movement even without mechanical motion.

2. Creating the panel matrix
The first step was building a neutral panel matrix.
A simple surface was divided into a regular grid of smaller modules. This matrix was not yet architecture, but a testing field.
It helped define: how many elements exist, how they are arranged, and the scale of the system. Thanks to this, the behavior of the system could be studied independently from a final design.

3. Defining rotation axes
Each panel needs its own rotation axis. The axes were generated based on panel geometry so that every module could rotate independently. This is a key moment, because from here, panels are no longer static surfaces but movable elements. Additionaly, instead of rotating panels one by one, I used a single “Rotate Axis” component for all elements.

4. Generating angle lists
The most important part of the work was creating different ways to generate rotation angles. The geometry does not change, only the control data changes. Each variant produces a different list of numbers assigned to panels. This allows exploring many spatial effects without rebuilding the model.
To avoid multiple separate scripts, all variants were connected to one selection system. “Stream Filter” works as a switch between variants and “Value List” lets the user quickly choose a configuration.

5. Rotation variants
A. Uniform rotation

All panels receive the same angle value. It works as a reference state for comparison.
Logic: one value repeated for all panels.

B. Alternating rotation

Angles are assigned in an alternating pattern. One panel rotates in one direction, the next in the opposite.
Logic: repeating sequence of two values.

C. Gradient rotation

Angles gradually increase across the matrix. The effect looks like a wave or progressive opening.
Logic: ordered sequence from small to large values.

D. Random rotation

Each panel receives a different random value within a range. The system becomes less predictable and more organic.
Logic: random numbers within limits.

E. Attractor-based rotation

The angle depends on distance from a chosen point. Panels closer to the attractor react differently than those further away.
Logic: distance is remapped into angle values.

6. Applying the script to the pavilion
After testing on the panel matrix, the same logic was applied to a real pavilion with rotating canvases. Each canvas acts like a module from the matrix and has its own axis and can rotate independently.
7. Real-life implementation
The pavilion was built from recycled materials for the “UpCycle Expo” conference. The rotating canvases allowed physical testing of configurations. The pavilion became a changing, interactive structure. This showed that a parametric model can move from digital testing to real construction.

8. Grasshopper file
Tutorial made by Małgorzata Kania