Personal tools


From HaskellWiki

Revision as of 12:50, 13 April 2006 by Boegel (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Welcome to the HaskLS page, a Haskell implementation for Lindenmayer Systems (L-systems). The goal is to implement L-systems in Haskell, and provide a way to visualize them using HOpenGL (otherwise, they just produce a bunch of crap).


contact: kenneth [dot] hoste [at] UGent [dot] be

This project is a part of a bigger project, called ["H3D"]. Its goal is to start up a 3D modeller project in Haskell.

1 Current Status

First (context-free and deterministic) L-system implementation. Graphic support: simple visualization with HOpenGL, GUI which allows to set some parameters...

The code is available in a darcs repository located at

It also includes a nice HOpenGL example (RotatingCube.lhs).

There is also a port to "Gtk2Hs's OpenGL widget" rather than using GLUT. (screenshot)

2 Some links for more information

* (general info on L-systems)
* (3D L-system using C and Direct3D)
* (implementation info on 2D and 3D L-systems)
* (3D L-system in C++)
* (3D L-system in Java using OpenGL)
* (OpenGL tutorial)
* (old HOpenGL tutorial, most of it wont work with HOpenGL-2.0)
* (big tutorial for HOpenGL)
* (lot's of L-System examples)

3 HaskLs and splines

hints by bourbaki:

* <bourbaki> boegel the idea is that ... ie think of the first think of the tree the root
* <bourbaki> it starts in one point and that is on the ground on the ground you have a circle as a shape
* <bourbaki> and then in the next position you have lets say an ellipse
* <bourbaki> then you want to have something like
* <bourbaki> spline1( lambda ) = pos_on_spline_1
* <bourbaki> spline2( mu ) = pos_on_spline_2
* <bourbaki> and now the homotopy comes into play
* <bourbaki> hom( spline1, spline2, t1, t2 ) = spline( spline1( t1 ), spline2( t1 ), t2 )
* <bourbaki> boegel i mean that along the < and turn symbols you also have a variable along that tells you the amount
* <bourbaki> that way you can do animations of the thickness of branches of changeing textures like makeing the bark     darker where the tree is older or so
* <bourbaki> there also are growth models with lsystems that make use of the nutrition of the plant propageteing stuff throught the lsystem string and so