Coding for fun 2013 : LSystems

Bonjour,

imageVoici comme promis, les sources de la solution des LSystems que j’ai présenté. Le code est celui d’une application Win8 en C++/CX, la partie générateur étant en C++ native (Unicode string).

 

L’idée de Lindenmayer est de repartir d’une grammaire universelle de Chowsky pour travailler avec une chaine initiale sur laquelle on va appliquer une série de substitution selon un ensemble de règles finie.

 

 

 

 

Avec une chaine initiale A[BA][CA]… et les règles de substitutionimage

–A-> AA

–B-> A[BA]

–C-> C[CA]

On obtient : AA[A[BA]]AA[C[CA]] à la première itération…

 

–La chaine résultante n’est in fine que des ordres de dessin !

•A :Trait devant

•B et C :Tourne droite/Gauche

•[et]Embranchement (gestion de stack [ et ] )

Ne reste plus qu’a insérer un peu de désordre (aléas !) au moment du rendu pour simuler vent, froid et tous autres évènements biologiques ou climatiques. Dans cet essai je travaille sur les angles des ramifications et la logeur de ceux ci.

 

A noter:

imageLe LSystem, génère facilement des fractales connue, et il est “amusant” de trouver dans une chaine de 6 caractères et 4 règles très simples la fractale de Koch ! Le pattern sous jacent est bien auto similaire comme il facile de le constaté en regardant un arbres et les ramifications de ses branches.

Les LSystem ne sont qu’une représentation et non la modélisation de croissance des végétaux ;On ne peut pas parler ici de code génétique même si la comparaison saute à l’esprit (rappelez vous AGCT-ACGT…) 

 

imageCe que l’on peut s’en doute dire, c’est que quelque part dans le code génétique d’une plante, un pattern comparable à un LSystem est codé. En quelque “lettres” on trouvera le codage de la forme de la plante du stade plantule au stade adulte. La grande majorité des formes rencontrées dans la nature est e nature fractale : économie de codage, éfficacité maximale !

Qu’elles soient végétales ou animales les symétries et pattern auto similaire sont à la base des forme biologiques. Dans cette dernière figure j’applique juste du random dans le rendu de la fractale de Kock…troublante forme comparée à des pliages de protéines…

 

 

 

 

 

 

 

Enjoy !

Et à l’année prochaine pour un autre sujet artificial Life à Coding for Fun !

 

Eric