J’ai des petits problèmes dans ma plantation…

Après la trituration de mon programme générateur de plante, j’ai réussi à obtenir ça :

 plant ContextSensitive_B
{
    ignore + - F;
    begin F B F B F B;
    A < A > A : * -> B;
    A < A > B : * -> B[-F B F B];
    A < B > A : * -> B;
    A < B > B : * -> B;
    B < A > A : * -> A;
    B < A > B : * -> B F B;
    B < B > A : * -> B;
    B < B > B : * -> A;
    + : * -> -;
    - : * -> +;
} 
donne

C’est une représentation d’un L-systems crée par Hogeweg and Hesper. Pour plus d’informations sur ce genre de technique, je vous invite à lire The Algorithmic Beauty of Plants, un livre qu’il est intéressant de le lire.

Le principe de base du L-System est de partir d’une base (ici défini par la ligne begin), et d’appliquer un jeu de règles simples. Par exemple si un symbole A est précédé d’un autre symbole A et suivi d’un symbole B, alors ce symbole sera remplacé par : B[-F B F B] . Si un symbole + est rencontré il sera transformé en symbole -. Les symboles +,- et F ne sont exclus pour les tests de “contexts”. On fait tourner le système 30 fois et on interprète :

  • F : on affiche une ligne blanche
  • + : on tourne la tête d’écriture vers la gauche.
  • - : on tourne la tête d’écriture vers la droite.
  • [ : on commence une branche (qu'on arrête avec ']‘)
  • A, B : on ne fait rien

En changeant certains symboles on peut aussi faire des arbres en 3D, ici seul un rendu en 2 dimensions a été fait, pour débugguer.

Leave a Reply