Skip to content

dwayne/elm-l-system-studio

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

L-System Studio

How to view the application

Enter the Devbox shell and use the build, b, and serve, s, aliases.

devbox shell
b
s

Then, open your browser at localhost:8000.

Examples

Example 1

This is the first example used in Paul Bourke's L-System User Notes.

rules =
    [ ( 'F', "F+F-F-FF+F+F-F" ) ]

axiom =
    "F+F+F+F"

chars =
    Generator.generate 3 rules axiom

defaultSettings =
    Settings.default

settings =
    { defaultSettings
        | startPosition = { x = 250, y = 750 }
        , lineLength = 5
        , turningAngle = Angle.fromDegrees 90
    }

Example 2

rules =
    [ ( 'F', "FF+F-F+F+FF" ) ]

axiom =
    "F+F+F+F"

chars =
    Generator.generate 3 rules axiom

defaultSettings =
    Settings.default

settings =
    { defaultSettings
        | startPosition = { x = 500, y = 500 }
        , lineLength = 10
        , turningAngle = Angle.fromDegrees 90
    }

Example 3

rules =
    [ ( 'F', "FF" )
    , ( 'X', "F-[[X]+X]+F[+FX]-X" )
    ]

axiom =
    "X"

chars =
    Generator.generate 6 rules axiom

defaultSettings =
    Settings.default

settings =
    { defaultSettings
        | startPosition = { x = 500, y = 750 }
        , startHeading = Angle.fromDegrees 270
        , lineLength = 3
        , turningAngle = Angle.fromDegrees 22.5
    }

Example 4

rules =
    [ ( 'F', ">F<" )
    , ( 'a', "F[+x]Fb" )
    , ( 'b', "F[-y]Fa" )
    , ( 'x', "a" )
    , ( 'y', "b" )
    ]

axiom =
    "a"

chars =
    Generator.generate 15 rules axiom

defaultSettings =
    Settings.default

settings =
    { defaultSettings
        | startPosition = { x = 500, y = 750 }
        , startHeading = Angle.fromDegrees 270
        , lineLength = 1
        , lineLengthScaleFactor = 1.36
        , turningAngle = Angle.fromDegrees 45
    }

Example 5

rules =
    [ ( 'F', "FF+F++F+F" )
    ]

axiom =
    "F+F+F+F"

chars =
    Generator.generate 4 rules axiom

defaultSettings =
    Settings.default

settings =
    { defaultSettings
        | startPosition = { x = 250, y = 750 }
        , lineLength = 5
        , turningAngle = Angle.fromDegrees 90
    }

Example 6

rules =
    [ ( 'X', "XFYFX+F+YFXFY-F-XFYFX" )
    , ( 'Y', "YFXFY-F-XFYFX+F+YFXFY" )
    ]

axiom =
    "X"

chars =
    Generator.generate 4 rules axiom

defaultSettings =
    Settings.default

settings =
    { defaultSettings
        | startPosition = { x = 500, y = 750 }
        , startHeading = Angle.fromDegrees 270
        , lineLength = 5
        , turningAngle = Angle.fromDegrees 90
    }

Example 7

rules =
    [ ( 'F', "F-F+F+F-F" )
    ]

axiom =
    "F"

chars =
    Generator.generate 5 rules axiom

defaultSettings =
    Settings.default

settings =
    { defaultSettings
        | startPosition = { x = 150, y = 500 }
        , lineLength = 3
        , turningAngle = Angle.fromDegrees 90
    }

Example 8

rules =
    [ ( 'F', "F-F++F-F" )
    ]

axiom =
    "F++F++F"

chars =
    Generator.generate 4 rules axiom

defaultSettings =
    Settings.default

settings =
    { defaultSettings
        | startPosition = { x = 350, y = 650 }
        , lineLength = 6
        , turningAngle = Angle.fromDegrees 60
    }

About

An environment for creating and exploring L-Systems.

Topics

Resources

License

Stars

Watchers

Forks

Contributors