Fractals

Fractals are typically self-similar patterns, whereby self-similar means they are ‘the same from near as from far’. Fractals may be exactly the same at every scale, or they may be nearly the same at different scales. The definition of fractal goes beyond self-similarity per se to exclude trivial self-similarity and include the idea of a detailed pattern repeating itself. As mathematical equations, fractals are usually nowhere differentiable, which means that they cannot be measured in traditional ways. (Source)

 

Often associated with fractals are L-Systems. Developed in 1968 by Aristid Lindenmayer, an L-system or Lindenmayer system is a parallel rewriting system, namely a variant of a formal grammar, most famously used to model the growth processes of plant development. An L-system consists of an alphabet of symbols that can be used to make strings, a collection of production rules which expand each symbol into some larger string of symbols, an initial ‘axiom’ string from which to begin construction, and a mechanism for translating the generated strings into geometric structures. (Source)

 

The derivation strings of developing L-systems can be interpreted as a linear sequence of instructions 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 (Source).

 

The Axiom and Production Rules are defined as follows:

  • F = Move forward a step of length d
  • f = Move forward a step of length d without drawing a line
  • + = Turn left by angle b
  • – = Turn left by angle b
  • \ = roll left
  • / = roll right
  • ^ = pitch up
  • & = pitch down
  • | = turn around

 

To create fractals within Grasshopper we can use either the HoopSnake or Rabbit plug-ins:

 

Logo_HoopsnakeHoopSnake is a component that enables feedback loops within Grasshopper. It was originally developed by Yannis Chatzikonstantinou but is now open source. What it does in principle is to create a copy of the data it receives at its input upon user request and store it locally. This duplicate is made available through a standard Grasshopper parameter output. The input of the component includes some custom programming to escape Grasshopper’s recursive loop avoidance check.

 

The loop can be stopped at any point either by the user or automatically by setting a termination condition to false. This way, an operation mode quite similar to a ‘while’ loop can be modelled in Grasshopper, without any coding. This is beneficial primarily to the clarity of a definition, since it enables the exposure of an iterative solution’s logic outside a scripting component. HoopSnake has 4 inputs:HoopSnake

  • S : Starting value.
  • D* : Feedback value. This can be connected anywhere (including forward components).
  • B* : Control value. Can be also connected anywhere and will look for Boolean values.
  • T*: This is not used in this example, but it functions as a trigger input. If it’s value changes, the parent component will ‘take over’ the loop. Useful to create chains of HoopSnakes of recursive iteration

 

To run HoopSnake, right click on the HoopSnake component and select ‘Loop’. To reset, right click on the HoopSnake component and select ‘reset all’.

 

Logo_Rabbit

Rabbit is developed by Morphocode and is a plug-in that simulates biological and physical processes. Rabbit provides an easy way to explore natural phenomena such as pattern formation, self-organisation, emergence, and non-linearity.  Rabbit can also create 2D/3D Cellular automata and L-Systems. To generate an L-systems in Rabbit, there are two main components: L-System and Turtle.
Rabbit_LSystem

The L-System component is based on a specified ‘Axiom’ and a set of production rules, where:

  • A = Axiom – The first Word in the L-system. It is also called the ‘seed’ or ‘initiator’.
  • PR = Production Rules – Used by the L-System to generate the Words in the L-system language.
  • N = Number of generations.
  • W = The last word derived by the L-system.
  • L = List of words generated by the L-system – This list contains all words, starting by the axiom, ending with the last generated word.
  • LS = The L-system object, based on the specified Axiom and Production Rules.

Rabbit_Turtle

 

To visualise the L-System we need to use the Turtle component, where:

  • S = Source String
  • L = Length of the turtle’s step
  • dL = Step scale length
  • A = Default angle of the turtle used for rotation
  • dA = Default angle scale
  • O = Initial position and orientation of the turtle
  • TS = Tube settings

 

Koch Curve

Rabbit_KochCurve_1600x550

Rabbit_KochCurve_1600x500

 

Quadratic Koch Curve

Rabbit_QuadraticKochCurve_1600x800

Rabbit_QuadraticKochCurve_1600x500

 

Koch snowflake

Rabbit_KochSnowflake_1600x750

Rabbit_KochSnowflake_1600x500

 

Dragon curve

Rabbit_DragonCurve_1600x750

Rabbit_DragonCurve_1600x500

 

Sierpinski triangle

Rabbit_SierpinskiTriangle_1600x750Rabbit_SierpinskiTriangle_1600x500

 

 

Branching 3D

With Rabbit:

Rabbit_3D_Branching_1600x700

Rabbit_3D_Branching_1600x300

 

With HoopSnake:

HoopSnake_3D_Branching_1600x750

HoopSnake_3D_Branching_1600x350

 

To find out more about L-Systems refer here and here.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: