L-system et attracteur de Lorenz
Le samedi 21 juillet 2007 à 09:47 :: Flash-AS3 :: #19 :: rss :: 3094 lectures
Les L-system servent à modéliser les structures vivantes (bactéries, plantes). ça donne des formes organiques d'aspect chaotiques mais fortement structurées. je voulais comprendre ce truc, déja parce que je trouve ça très beau, et aussi pour pouvoir modéliser des plantes en 3d (le fou), lors de mes recherches je suis tombé sur plein de trucs dont les attracteurs étranges et les fractales évidemment. Les attracteurs étranges méritent un thread (fourni) à eux tous seuls mais vu que c'est mon premier et que je suis super content, je colle celui de Lorenz. Donc voila le résultat de ma semaine de recherches et d'erreurs.
décor | rendus | perspectives
L-system
L ça veut dire Lindenmayer :
Aristid Lindenmayer est un biologiste hongrois (décidémen,t ils sont forts ces hogrois) né le 17 novembre 1926 et mort le 10 octobre 1989. Il est principalement connu pour avoir inventé, en 1968, une grammaire formelle, aujourd'hui appelée L-System, qui permet de simuler le développement cellulaire de plantes ou de bactéries. Il travallait au centre de recherche de l'Université d'Utrecht. (merci Wikipedia)
Pour de plus amples informations exemples et autres douceurs vous pouvez vous reporter à :
- la page de wikipedia en français
- l'article en anglais (plus sexy)
- juste après tu vas faire un tour là pour rêver un peu
- et lire cet article de nos estimés collègues de Flash Xpress
- et enfin ici parce que c'est grâce à ça que j'ai pu avancer sans devenir fou
- j'ai commencé ici, ça paraissait sexy mai après 2 jours passés à essayer de porter le script, je me suis dit qu'un petit chez soi vaut mieux qu'un grand chez les autrres. donc j'ai tout repris à 0.
j'ai commencé à me pencher sur les attracteurs aussi, c'est assez fou : un attracteur c'est un générateur de chaaos.
La beauté de l'attracteur étrange c'est qu'on part de valeurs fixes qui deviennent complètement aléatoires au fil du temps.
quand j'aurai compris un peu mieux, je ferai un billet plus consistant la dessus parce que ça peux déboucher sur pas mal de choses notamment graphique smais pas seulement.
Un des premiers attracteurs ( et le plus célèbre du coup ), c'est celui de Lorenz
voila un attracteur de Lorenz en AS3 porté vite fait depuis une source AS1 trouvée sur flashkit (je dis vite fait parce que la source n'est pas de moi, juste le portage):
code source - anim seule
évidemment juste après je suis tombé sur ça : http://je2050.de/lorenz/ qui aurait tendance à fracturer sa grand mère le temps de calcul (le rendu est super kitsch ceci dit... bon quand je ferai mieux je critiquerai). et sa source :
http://www.flashforum.de/forum/showthread.php?t=235417
les L-systems c'est un peut plus tendu à mettre en place car il y a 3 données en jeu:
- le ruleset : ensemble de règles de dessin
- l'axiome : la source
- la tortue : le crayon qui va tracer la formes
Le L-system éclate chaque lettre de l'axiome et vérifie si cette lettre est présente dans le ruleset.
si oui, il remplace la lettre par la phrase correspondante et la réinjecte dans l'axiome.
une fois le traitement fini, on passe l'axiome à la Tortue pour qu'elle le dessine.
la tortue prend l'axiome, l'éclate à son tour et interprète chaque lettre comme une instruction :
- 'F': avance en dessinant
- 'G': avance sans dessiner
- '+': tourne de + angle
- '-': tourne de - angle
- '[': sauve ton état courant
- ']': restaure le dernier état sauvé
pour les cas tendus (pas pour mon truc), on peut rajouter des instructions. Le dallage de Penrose par exemple il me semble qu'il faut customizer les règles de dessin.
après y a plus qu'à rentrer des formules débiles pour obtenir des résultats fascinants.
il est très facile de casser le player aussi. comme chaque boucle remplace l'axiome de départ par une string + ou - longue, on peut se retrouver à calculer des centaines de milliers de patterns en quelques générations (mon record : ordi freezé en 3 générations
). c'est assez fascinant quand même... avec des règles très simples et en itérant 2,3 fois, on atteint un niveeau de complexité incroyable.
ça arrive aussi qu'on mette au point un calcul super savant qu'on itère 20 fois pour rendre une courbe géniallissime de 4*3 m et qu'on se retrouve avec un petit carré ou un triangle, ça dépend.
Et alors le pire à ce moment là c'est de remplacer un + par un - et de se rendre compte qu'on obtient la carte du Pakistan au 10.000ème. Et qu'en changeant l'angle de la tortue, on obtient un fabuleux coucher de soleil romantique.
donc le mieux c'est de jouer avec en fait...
dans la source j'ai laissé la courbe du dragon (cf. en bas pour l'image) avec 12 générations (elle est pas trop violente en calcul).
Si vous voulez changer les lettres du ruleset, il faut veiller à les changer aussi dans l'interpréteur de la tortue.
le code source du lsystem
décor | rendus | perspectives

par exemple un truc débile à moi

le triangle de Sierpinski

la courbe du dragon

la courbe du dragon (14 générations)

un bidule après 7 itérations
décor | rendus | perspectives
les L-system et les attracteurs sont souvent utilisés pour crâner par exemple dans la phrase : "j'ai implémenté un L-system ce week end" ou bien "l'effet papillon, ah oui, tu veux parler de l'attracteur de Lorenz ... ah ah".
On peut donc s'en servir pour ça.
je crois que c'est tout.
copains
Commentaires
1. Le lundi 23 juillet 2007 à 23:09, par Durss
2. Le vendredi 27 juillet 2007 à 09:20, par Tyler
3. Le vendredi 27 juillet 2007 à 11:39, par nicoptere
4. Le lundi 30 juillet 2007 à 20:26, par dada
5. Le mercredi 1 août 2007 à 08:09, par nicoptere
6. Le mercredi 1 août 2007 à 22:44, par dada
7. Le mardi 13 novembre 2007 à 15:02, par hub
8. Le mardi 13 novembre 2007 à 15:14, par nicoptere
9. Le vendredi 16 mai 2008 à 14:16, par widged
Ajouter un commentaire