Objets fractals

Voir le sujet précédent Voir le sujet suivant Aller en bas

Objets fractals

Message  P.Fradin le Ven 13 Juin - 0:20

Cet exemple illustre l'utilisation de la matrice de transformation pour dessiner un arbre fractal:



L'arbre est dessiné par la macro arbre( niveau) , que voici:

Code:

[$n:=%1,
FillColor:=MixColor(darkgreen,1,brown,n),
Drectangle(0, 0.125, i*1.05),
if n>0 then
  SaveAttr(),
  ComposeMatrix( matrix(z*0.75*exp(i*anglea)+i) ),
  arbre(n-1),
  RestoreAttr(),
  SaveAttr(),
  ComposeMatrix( matrix((z-0.125)*0.75*exp(-i*angleb)+i+0.125)),
  arbre(n-1),
  RestoreAttr()
fi]

NB: cette macro utilise MixColor présent uniquement dans la version 1.94.

Voici le fichier arbreFractale.teg


Dernière édition par P.Fradin le Jeu 26 Juin - 16:02, édité 1 fois

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Objets fractals

Message  P.Fradin le Sam 14 Juin - 1:01

Voici un deuxième exemple d'objet fractal: une fougère.



La fougère est dessinée par la macro fougère( niveau) , que voici:

Code:

[SaveAttr(), $h:=i, Color:=red, Width:=12,
 for $k from 1 to %1 do
  if Width>1 then Inc(Width,-1) fi,
  Ligne([0,h],0),
  if k<%1 then
      SaveAttr(),
      ComposeMatrix( matrix(z*0.75*exp(-i*angleb)+h)),
      branche(7), {branche droite}
      RestoreAttr(),
      SaveAttr(),
      ComposeMatrix( matrix(z*0.75*exp(i*anglea)+h) ),
      branche(7), {branche gauche}
      RestoreAttr(),
      ComposeMatrix( matrix(z*0.85*exp(-i*anglec)+h))
  fi
 od,
 RestoreAttr()]             

et la macro branche( niveau )

Code:

[$n:=%1, $h:=i*0.5,
Color:=MixColor(green,1,red,n),
Ligne([0,h],0),
if n>0 then
  SaveAttr(),
  ComposeMatrix( matrix(z*0.35*exp(i*anglea)+h) ),
  branche(n-1), {branche gauche}
  RestoreAttr(),
  SaveAttr(),
  ComposeMatrix( matrix(z*0.35*exp(-i*angleb)+h)),
  branche(n-1), {branche droite}
  RestoreAttr(),
  SaveAttr(),
  ComposeMatrix( matrix(z*0.85*exp(-i*anglec)+h)),
  branche(n-1), {branche centrale}
  RestoreAttr()
fi]       

NB: cette macro utilise MixColor présent uniquement dans la version 1.94.

Voici le fichier fougere.teg

NB: dans le fichier la fougère est dessinée avec 20 niveaux et 7 niveaux pour les branches, le temps de calcul est assez long, compter une à deux minutes. L'export a été fait en pdf (non compilé).

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum