Personal tools

HaskLS

From HaskellWiki

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).

website: http://www.elis.ugent.be/~kehoste/Haskell/HaskLS

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 http://www.elis.ugent.be/~kehoste/Haskell/HaskLS/darcs/haskls.

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

* 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)

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

boegel