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.
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 http://www.elis.ugent.be/~kehoste/Haskell/HaskLS/darc/haskls.
It also includes a nice HOpenGL example (RotatingCube.lhs).
* http://en.wikipedia.org/wiki/L-system (general info on L-systems) * http://www.nbb.cornell.edu/neurobio/land/OldStudentProjects/cs490-94to95/hwchen (3D L-system using C and Direct3D) * http://www.director-online.com/buildArticle.php?id=1119 (implementation info on 2D and 3D L-systems) * http://www.alesdar.org/oldSite/IS/chap4-4.html (3D L-system in C++) * http://www.mario-konrad.ch/index.php?page=20016 (3D L-system in Java using OpenGL) * http://cgm.cs.mcgill.ca/~msuder/courses/557/tutorial/tutorial.html (OpenGL tutorial) * http://www.cin.ufpe.br/~haskell/hopengl (old HOpenGL tutorial, most of it wont work with HOpenGL-2.0) * http://www.tfh-berlin.de/~panitz/hopengl/skript.html (big tutorial for HOpenGL) * http://www.coscorrosa.com/programs/lsysexp/source/latest/src/builtin.h (lot's of L-System examples)
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