Going off at a tangent

Generating tangents and perpendiculars

Organisation and arrangements


Extrapolating the geometry into structure


Development Axonometric – Three systems meeting – Walls, beams and roof


Python System Breakdown


Development model – reviewing wall to roof connections


Analysing different input curves and the generations



Classifying the spaces created



Implementing forced perspective into the structure


Development model – Full circle – roof begins to inform the plan


Radial structure – rationalising geometry and simplifying connections


Radial structure – integrating the flexible circulation system



Roof curvature – Two curves vs one – how this affects the section through spaces


Analysing the gradient of the roof – walkable vs non-walkable 


Full integrated python and grasshopper system



Curves not angles.

Drawing from the research and testing throughout project_01 and _02, I began to compile and implement the system I created in order to give architectural form to the space filling curve that is the dragon curve. The path and control points of the test M1 from project one inform the grid along which both the walls and roof structure are set, thereby enforcing a direct correlation between section and plan. Altering parameters such as thickness, scale and spacing of the walls and roof, with respect to desired lighting, movement, material etc. can easily be navigated as the structure and form are resolved thanks to the connection in plan and section


Manipulating the roofscape

After producing the axonometric development drawing , I used this as a snapshot to analyse how the code was generating spaces and controlling circulation. But most importantly to reflect on how the walls, beams and roof were working together through manipulation of the code. I started to alter the logic of the code to create a controlled circulation route through the spaces. By randomly deciding whether to shift a wall and creating an opening, or leave the wall untouched.

Final presentation.indd

Final presentation.indd

I then also explored how different input curves could create different spaces and variations by using the same script.

Final presentation.indd

Below is an example of one of the many unique generations that can be produced on the exact same curve. If used on different input curves I could create even more unique variations.

Final presentation.indd

I started to look at the roof form in more detail by considering how it could vary in different ways to affect the environment and experience of the space below. I would then use this to dictate what spaces could be used for. I considered how the spacing and arrangements could be altered to let through different amounts of light, or no light if you want to project video installations. They could even be used as acoustic buffers in tall spaces. Whilst I was exploring the variations of roof form and the transparency of the walls to shut off and expose views, I still wanted the roof form to appear as one cohesive system.

Final presentation.indd

Final presentation.indd



I was inspired by the ”calculated randomness” of plans like Fujimoto’s Children’s Center for Psychiatric Rehabilitation, where the programmed elements seems to be randomly shuffled.


With set parameters – conditions for form, construction, utility, site and so on – in combination with automatic randomizing many different propositions of such plans could be generated through programming, and maybe result in finding unexpected configurations.

I created a program that could shuffle objects like walls, rooms, pillars by placing them randomly on a predetermined area and assign each a randomized angle (A_001). This generated plans that was totally random, and though I could change the values of angle and plane, the arrangement of the elements was uncontrollable.


From that I tried to add controlling parameters by using predetermined objects like curves to add a level of intention, though still keeping the randomness of angles (A_002 – A_003).


By constraining the random shuffling within smaller areas the outcome could be further controlled.  By using a combination of these two methods (within area and along curve), and experimenting with different types of elements, I could generate outcomes that were generally controlled and still quite unpredictable each time (A_004 – A_007).


I chose the site from the map of future developments of Årsta and Årstafältet. I am intrigued by the crossroads on the field, since I think they can be used as parameters in the system, as one of the constants that can control the randomness.


Going off at a tangent

During my precedent study of spatial configurations, I was particularly interested in how circulation defined the form and organisation of a building and how the building could be treated as a continuous space.

180915_Configuration Examples - SF.ai

I became particularly interested in the second precedent study and how the continuous space of a building can be subdivided into a sequence of spaces. The subdivision creates different relationships between one another, but also a different relationship between each interior to the exterior of the building. I began by exploring how tangents could be generated along a curve in varying ways to define spaces in between them which either enclose or open.

Task 02_9 diagrams

I then started to evolve these 2D configurations into 3D, by randomly extruding different thicknesses of walls to different heights. To create circulation openings between spaces, or recesses within the walls.

Task 02_9 diagrams

Lastly I created an example of how I could integrate this configuration into the site. I plan to explore how the code could be used to map walls onto topography lines, key geometry or paths within the site to create a series of spaces which are linked to the outside.



Some lines, and some circles…

When looking at configurations of precedents, I found two aspects particularly interesting. One was the direct, linear spaces that appear as occupied pathways, and the other is the overlapping of simple geometries to create a dynamic form.

180915_Configuration Examples

I feel like the first one is a missed opportunity for some interest or excitement in locations where these paths meet. I began by working with a simple box boundary, dividing the boundary into points and connecting them. These then cross over each other, and I have added circles at the intersections.


By randomising these circles, cleaning up the overlap and forming paths out of the lines, I have created a configuration, which can then be applied to any boundary curve. In 3D, it starts to form something like this:


And finally, an example on site:

180921_site file

Gothic-inspired Vaults


Sketches A3 

Sketches 2 A3

Selected Patterns A3

Spherical A3 (ornament)


GH Scripts A3

Script Diagram

Vault variations:

Vault Patterns1

Vault Patterns2

Vault Variations1

Vault Variations2

Architectural Renderings:

Top View

Visual 1



Simple Section


Process Renderings:

Process Renderings A4


Patterns Booklet A4




6 vault9 vault10 vault

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