L-Systems: Creating 3D Branching Structures

The definitions demonstrate how to create 3D Branching Structures using Rabbit. How to control parameters: angle, thickness, length.
More about Branching Structures: http://algorithmicbotany.org/papers/abop/abop-ch1.pdf

The meanings of the symbols:

F move forward at distance L(Step Length) and draw a line
f move forward at distance L(Step Length) without drawing a line
+ turn left A(Default Angle) degrees
turn right A(Default Angle) degrees
\ roll left A(Default Angle) degrees
/ roll right A(Default Angle) degrees
^ pitch up A(Default Angle) degrees
& pitch down A(Default Angle) degrees
| turn around 180 degrees
J insert point at this position
multiply current length by dL(Length Scale)
! multiply current thickness by dT(Thickness Scale)
[ start a branch(push turtle state)
] end a branch(pop turtle state)
A/B/C/D.. placeholders, used to nest other symbols

Get 3D Branching Structures #1
Get 3D Branching Structures #2

L-Systems: Creating 2D Branching Structures

The definitions show how to create 2D Branching Structures using RABBIT.

More about Branching Structures: http://algorithmicbotany.org/papers/abop/abop-ch1.pdf

The meanings of the symbols:

F move forward at distance L(Step Length) and draw a line
f move forward at distance L(Step Length) without drawing a line
+ turn left A(Default Angle) degrees
turn right A(Default Angle) degrees
roll left A(Default Angle) degrees
/ roll right A(Default Angle) degrees
^ pitch up A(Default Angle) degrees
& pitch down A(Default Angle) degrees
| turn around 180 degrees
J insert point at this position
multiply current length by dL(Length Scale)
! multiply current thickness by dT(Thickness Scale)
[ start a branch(push turtle state)
] end a branch(pop turtle state)
A/B/C/D.. placeholders, used to nest other symbols

Get 2D L-System Gh
Get 2D L-Systems Trees Gh

L-Systems: Space Filling Curves with Rabbit

This definition explains how to create the famous Dragon Curve using RABBIT.

The Heighway dragon (also known as the Harter–Heighway dragon or the Jurassic Park dragon) was first investigated by NASA physicists John Heighway, Bruce Banks, and William Harter. It was described by Martin Gardner in his Scientific American column Mathematical Games in 1967. Many of its properties were first published by Chandler Davis and Donald Knuth. It appeared on the section title pages of the Michael Crichton novel Jurassic Park.

Recursive construction of the curve
It can be written as a Lindenmayer system with
angle 90°
initial string FX
string rewriting rules
X = X+YF+
Y = −FX−Y.

Source: Wikipedia

Get Dragon Curve Gh

Hilber Curve Definition using RABBIT.

A Hilbert curve (also known as a Hilbert space-filling curve) is a continuous fractal space-filling curve first described by the German mathematician David Hilbert in 1891,[1] as a variant of the space-filling curves discovered by Giuseppe Peano in 1890

Get 2D Hilbert Curve Gh
Get 3D Hilbert Curve Gh

Morphocode at Staedelschule: The Workshop

Hello everyone,

As you already know, a few days ago we came back from Frankfurt where we held a three-day design workshop at The Städelschule Architectural class directed by Ben van Berkel and Johan Bettum.

We presented our work to the post-graduate students enrolled in first and second year of studies. We started with an introduction to the concepts of Cellular Automata and L-systems and their applications in generative design. Topics such as biomimetics, self-organization, complexity and pattern formation were also discussed during the workshop series. A special edition of our plug-in Rabbit was presented to the students of SAC.

Liebieghouse: this is where we held the L-Systems workshop

Overview of the room

What is the Städelschule?

The Städelschule is a contemporary fine arts academy, that was established in 1817 thanks to the merchant Johann Friedrich Städel. He left his fortune to the citizens of Frankfurt, allowing the founding of a school for talented young students as well as public access to his collection of art. Over the years two different institutions developed: the Städelmuseum and the Städelschule.

In 1987, the contemporary exhibition space Portikus was established, as part of the Städelschule and also gave a significant contribution to the school’s international reputation.
Currently the whole Staedel site is being renovated as part of Das Neue Staedel project:

Das Neue Staedel

The Städel Museum is being extended in order to assure additional exhibition space for its ever growing collection:

The Architecture Class of the Städelschule

Situated in an early 20th-century town house next to the main building of the Städelschule, SAC provides a near domestic setting for the social and academic life of its members. Thе two-year, post-graduate Master of Arts program in Advanced Architectural Design is led by its dean, Ben van Berkel, and Johan Bettum– professor of architecture and program director of the Städelschule Architecture Class. SAC provides an intense research setting for the creative exploration of current architectural issues.

Left: SAC; Bottom Right: The main entrance; Top Right: The fluffy toy lying in the bushes next to the entrance

Our Workshop

The first-day workshop dedicated to Cellular Automata was held at The Städelschule Aula.

As the extension of The Städel Museum is currently taking place all around we had to move two blocks away for the second part of our workshop, dedicated to L-Systems. It took place into a beautiful hall inside the The Liebieghaus sculpture museum.

The Liebieghaus presently accommodates a sculpture collection of the highest quality and offers an overview of five thousand years of sculpture from Ancient Egypt to Neoclassicism.

Working with the Students

SAC’s First Year Group students are beginning the year with an intense series of tutorials on digital modeling. Earlier this year, the students had their Rhinoscript workshop led by arch+lab. The group is composed of about 20 people from 16 nations.
We introduced them to the concept of L-Systems, showing what Rabbit can do. They did a nice job, producing great results.

SAC

Thanks to

We would like to thank Dimiter Kokalanov for his help in taking the photos and for the nice time we spent together.

Last but not least, we would like to mention Anton Savov who is pretty much responsible for us holding a workshop at SAC.
Anton is a great person and a talented young architect with an impressive portfolio, including participation at the Biennale in Venezia and solo exhibitions. We are sure that you’ll hear his name more often in the future.

Morphocode Workshop at Städelschule Architectural Class, Frankfurt

Morphocode will teach a three-day design workshop at the Städelschule Architectural Class on 15th, 17th & 18th of November, 2010.

The Städelschule Architectural Class is directed by Ben van Berkel and Johan Bettum and “provides a near domestic setting for the social and academic life of its members.”

The workshop is availble only for the students enrolled in the academic programs of SAC.

This workshop will cover the use of Cellular Automata & L-Systems in the process of generative design, including topics such as Self-organization, Pattern Formation and Complex systems, 1-D, 2-D, 3-D automata, Branching algorithms, branching models, 0L-Systems, bracketed L-Systems, turtle interpretation, fractals, etc…


We are going to present the latest version of our custom plug-in – Rabbit 0.3 to the participants of the workshop.
Rabbit 0.3 will be used to apply the theory in practice. Students will learn how to incorporate these advanced generative techniques in their design workflow using Rabbit.

The latest features of Rabbit 0.3 include 1-D Cellular automata, Excitable media models, L-System thickness control, L-System Step length control, etc..

Intro to L-systems

boxes_1

Intro: L-Systems

An LSystem is a parallel string rewriting system. A string rewriting system consists of an initial string, called the seed, and a set of rules for specifying how the symbols in a string are rewritten as (replaced by) strings. Let’s have a look at a simple LSystem:

seed: A
rules:
Rule #1: A = AB
Rule #2: B = BA

The LSystem starts with the seed ‘A’ and iteratively rewrites that string using the production rules. On each iteration a new string/word is derived.
n is the derivation length = the number of iterations

n=0: A
n=1: AB (A becomes AB according to Rule #1)
n=2: ABBA (A becomes AB according to Rule #1, while B becomes BA according to Rule #2. In result we get ABBA)
n=3: ABBABAAB
n=4: ABBABAABBAABABBA

Each string represents a word. All words form the language of the LSystem.
There are different types of LSystems: deterministic, stochastic, context-free, context-sensitive, parametric, timed-depending on the rules and the way they are applied by the LSystem.
Currently RABBIT supports context-free deterministic L-Systems.

We suggest the following resources:

RABBIT: L-Systems

Intro: Turtle Graphics(Interpretative Part)

Turtle Graphics are often used for L-System interpretation:

The derivation strings of developing L-systems can be interpreted as a linear sequence of instructions (with real-valued parameters in the case of parametric L-systems) to a ‘turtle’, which interprets the instructions as movement and geometry building actions. The historical term turtle interpretation comes from the early days of computer graphics, where a mechanical robot turtle (either real or simulated), capable of simple movement and carrying a pen, would respond to instructions such as ‘move forward’, ‘turn left’, ‘pen up’ and ‘pen down’. Each command modifies the turtle’s current position, orientation and pen position on the drawing surface. The cumulative product of commands creates the drawing.

The following symbols drive the Turtle:

F move forward at distance L(Step Length) and draw a line
f move forward at distance L(Step Length) without drawing a line
+ turn left A(Default Angle) degrees
turn right A(Default Angle) degrees
\ roll left A(Default Angle) degrees
/ roll right A(Default Angle) degrees
^ pitch up A(Default Angle) degrees
& pitch down A(Default Angle) degrees
| turn around 180 degrees
J insert point at this position
multiply current length by dL(Length Scale)
! multiply current thickness by dT(Thickness Scale)
[ start a branch(push turtle state)
] end a branch(pop turtle state)
A/B/C/D.. placeholders, used to nest other symbols

Application of LSystems

Since their original formulation, L-systems have been adapted to modelling a wide range of phenomena including:

  • herbaceous plants
  • neural networks
  • the procedural design of cities
  • generative art
  • generative music

Rabbit + Grasshopper: 3D L-systems, 3D Cellular Automata

RABBIT 0.2: New Cellular Automata features

We are posting a few experiments, created with the work-in-progress RABBIT 0.2. We plan to release it within a week or two… In the meantime, you could download RABBIT 0.1 here

RABBIT 0.2 has a lot of new features:

  • user defined initial configurations
  • automatic/manual control of the CA evolution
  • CA memory – stores all configurations/states of the CA calculated for different time steps(t=0,1,2,3…)

With RABBIT 0.2 you could visualize 2D Cellular automata in 3 dimensions – the third dimension is a function of time.

The geometry inherits the underlying topology of the cellular automata – the evolution ot the cells is encoded in the form

DieHard-LifeCA-3d

RABBIT 0.2: New LSystems features:

  • user defined LSystems
  • fractals: Koch curves, Space-filling curves, …
  • Branching LSystems
  • 2d/3d Turtle interpretation

Some experiments with LSystems:

“Air island” #1

L-system experiment

Axiom: F
Production rule: F=FF/F+F^
Number of generations: 8
Default step of the turtle: 6
Default angle increment of the turtle: 90

“Air island” #2

L-system experiment

Axiom: F
Production rule: F=F/F+F^F
Number of generations: 6
Default step of the turtle: 11
Default angle increment of the turtle: 90

“Air island” #3

L-system experiment

Axiom: F
Production rule: F=F^F-F/
Number of generations: 8
Default step of the turtle: 6
Default angle increment of the turtle:: 90

music: “Ratatat”