Aimfract/Images fractales
    [home] Home         [no previous]         [no previous]         [no previous]    

Images fractales d'Aimfract

Menu Image

Les images que vous allez voir et dessiner sont des fractales.
A chaque image est associé un nom et des paramètres qui servent pour les algorithmes de calcul.
Et voici quelques idées en cas de problèmes.


Charger

Vous la choisissez dans la fenêtre de chargement.
L'image qui sera chargée sera aussitôt affichée et ses paramètres seront mis dans les tableaux des paramètres.


Lancer

S'affiche une page blanche où va apparaître peu à peu une image au fur et à mesure de son calcul d'après ses paramètres.
En appuyant sur une touche, cela s'arrête (sauf pendant le contournage) et vous pouvez la sauver pour la terminer plus tard.
Les lignes calculées sont choisies au hasard ce qui permet d'avoir assez vite une bonne idée de l'image.


Terminer

On finit le calcul et le dessin de l'image à l'écran. Cela sert également à charger l'image de l'écran vers la mémoire pour sauver ce qui se trouve à l'écran.


Repère

Menu du repérage
  • Valeur de X
  • Valeur de Y
  • Grille
  • Pas de la grille
  • Afficher

Vous pouvez afficher des droites permettant de vous repérer sur le dessin, par exemple, pour voir où est le point (0,0), vous choisissez dans le menu qui va s'afficher 0 pour X et 0 pour Y, en cliquant sur Afficher vous voyez apparaître 2 droites, leur point de croisement est (0,0).

La droite x = la valeur choisie sera affichée (couleur 12) si votre nombre X est supérieur à Gauche et est inférieur à Gauche+Largeur.
La droite y = la valeur choisie sera affichée (couleur 12) si votre nombre Y est supérieur à Bas et est inférieur à Bas+Hauteur.

Grille sur mandel Si Grille est à oui, alors des droites s'afficheront (couleur 5) ayant le Pas de la grille en écart aussi bien vertical qu'horizontal.

Par défaut, les droites ne sont pas sauvegardés avec l'image. Si vous les voulez, après les avoir affichées, vous faite Terminer puis vous sauvez l'image.


Paramètres annexes

Paramètres annexes Ils servent si votre algorithme est dans un fichier de formules.

Vous pouvez donner un nom pour chaque variable utilisée (10 en tout) et commenter votre image grâce aux trois avant-dernières lignes. Chaque nom a une longueur de 19 caractères maximum et chaque commentaire de 29 caractères.

La dernière ligne sert à valider.


Info lettre

Paramètres pour les lettres

Vous pouvez écrire un texte sur votre dessin, chaque lettre est constituée de rectangles et d'arcs de cercle (elles sont décrites dans le fichier LETTRES.DES). Chaque composant est vu comme un volume (cylindre ou portion de sphère) reflétant l'image et c'est ce reflet qui donnera la lettre.

On ne peut écrire qu'une ligne sur une image ; pour en avoir plusieurs, il faudra plusieurs morceaux d'image qui, se superposant, composeront le texte voulu.
Ex : voir le scénario LETTRE.SNR.


Ajoût Lettre

Mis à oui, il permettra d'écrire sur l'image.


Multiplie l'épaisseur

Ce paramètre multiplie l'épaisseur des traits et des arcs de cercle formant les lettres. On considère sa valeur absolue.


Largeur

C'est le pourcentage de la largeur de l'écran que prendra votre texte. Du nombre de lettres et de la largeur choisie dépendra la hauteur, étant donné qu'une lettre s'inscrit dans un carré.
Ex : la largeur est de 100, il y a quatre lettres, donc la hauteur de la phrase est le quart de celle de l'image (si les dimensions de l'image respecte bien le rapport 3/4).


Position en Y

Ce paramètre sert à positionner le milieu du texte en hauteur.
Ex : s'il est à 50 votre phrase sera au milieu de l'écran pour la hauteur. 0 correspond au bas de l'écran et l'on verra la moitié haute.


Centré

Ce paramètre sert à positionner votre texte dans la largeur.
Valeurs : 0 pour centrer, 1 pour positionner à gauche, 2 pour positionner à droite.


Sauve une partie

S'il est mis à oui, alors ne sera calculée et sauvée que le rectangle de l'image encadrant votre texte. Cela permet un gain de temps intéressant et surtout la possibilité de recouvrir en partie une autre image.

Ex : Pour composer l'image avec le texte suivant :
       BONJOUR
       A TOUS
il faut, après avoir calculé les deux images nécessaires, charger l'image BONJ1 (qui est entière), la recouvrir avec l'image BONJ2 (qui est un morceau), mettre ce paramètre à non, faire Terminer et finalement sauver. Et l'on obtient BONJOUR.


Eloignement

Plus il est grand, plus les volumes composant les lettres considérées sont loin de l'image et en reflète une plus grande partie. S'il est à 0, alors les volumes sont tangents à l'image.


Grossissement

Il multiplie la taille des lettres et leur épaisseur sans les écarter les unes des autres. En négatif, il inverse les lettres (le haut devient le bas et la droite devient la gauche).


Texte

Il se compose de un ou plusieurs mots qui seront écrit sur une même ligne. Le maximum est de 29 caractères.
Les lettres sont décrites dans LETTRES.DES, seules les majuscules sont fournies plus - et a.
Vous pouvez compléter ce fichier (voir lettre.doc).


Validation

Confirme la saisie des paramètres.



Paramètres

Les paramètres d'une image sont les éléments nécessaires à l'ordinateur pour le calcul de l'image.
Tous les paramètres qui sont des nombres à virgule plus le paramètre de profondeur de calcul font changer continûment l'image, c'est à dire que si vous faite varier un peu le paramètre alors l'image changera un peu.

Liste des Paramètres

On considère que l'écran est une portion du plan complexe, chaque point sera vu avec une coordonnée en x (l'axe horizontal) et une en y (l'axe vertical).

Quand vous choisissez un nouveau rectangle avec Gauche, Bas, Largeur, Hauteur et Angle, vous délimitez un rectangle, de plus vous pouvez le déformer (allongé en hauteur ou en largeur) en n'ayant pas Hauteur/Largeur=3/4.
Vous pouvez aussi le choisir avec la Souris.


Fichier de Formules

Grâce à ce fichier, vous allez pouvoir écrire vos formules et voir les dessins résultants. Par défaut (pas de nom), vous avez 20 formules (codées de 0 à 19) dans le logiciel.

Comment l'écrire : Dans un éditeur de texte, vous écrivez votre formule avec un numéro d'algorithme, vous la sauvez au format ASCII avec l'extension frl.
Ensuite vous faites appel à un utilitaire FORMULE.EXE qui rend votre formule assimilable par AIMFRACT.
Dans AIMFRACT, vous écrivez votre nom de fichier à Fichier de Formule, le bon numéro à Algorithme, éventuellement vous changez d'autres paramètres et alors le logiciel dessine votre image.
La méthode d'écriture, ainsi que les conseils, sont expliqués dans FORMULE.DOC.

Dans votre Fichier de Formules, vous pouvez écrire plusieurs formules, chacune devant avoir un numéro d'algorithme différent.
Vous pouvez avoir plusieurs Fichiers de Formules.

Image d'une formule avec des paramètres annexes Les Paramètres Annexes vous fournissent de nouvelles variables.

FORMULE.EXE écrit à partir de votre fichier votre.frl un nouveau fichier votre.cop ou votre.emu, il essaye d'optimiser les calculs à faire et écrit les fonctions en langage machine afin d'optimiser les temps de calcul lors du dessin. Selon que vous avez Coprocesseur à oui ou non, sera considéré le fichier votre.cop ou votre.emu.


Algorithmes

Il y a 20 algorithmes numérotés de 0 à 19, l'algorithme sert à déterminer quel type de calcul est effectué par l'ordinateur.

Ce qui suit n'est pas nécessaire à l'utilisation du programme.

Tous les algorithmes sont faits à partir d'une fonction que l'on calcule de façon itérative, c'est à dire f(0), f(f(0)), f(f(f(0))) ...
On arrête le calcul dès que la norme de f(z) est supérieure à la Norme choisie ou que l'on a itéré le calcul n fois (n étant la Profondeur choisie).
Le nombre de fois (k) que le calcul a été effectué sert à déterminer la couleur.
La couleur 16 représente la convergence et les autres couleurs représentent à quelle étape le calcul s'est arrêté.
Par exemple, s'il a divergé au 31ième coup et que la Profondeur est de 150, il aura la 4ième couleur.
Le paramètre Tornade change la répartition des couleurs.

Convergence : Lors du calcul d'un point, on recommence le calcul si la norme du résultat est inférieure à la Norme choisie, et ceci jusqu'à ce que le nombre de calculs faits soit égal à la Profondeur.
On dit qu'un point converge pour AIMFRACT si le nombre de calculs faits est égal à la profondeur. Sa couleur est la 16ième.

Les fonctions utilisées sont, entre autres,
norme(z) = racine(x²+y²) où z est un nombre complexe : z=x+iy
pow(z1,z2) indique z1 à la puissance z2, z1 et z2 pouvant être des complexes.

Si vous connaissez le langage C, voici le code de l'algo 0 :

  norm2 = norme*norme;
  if (puisr == 2)
  {
   for ( x = consx+(coord?x0:0), y = consy+(coord?y0:0), k = 0;
         k < profondeur && ((sx=x*x)+(sy=y*y)) < norm2; 
         k++)
   {
    y = 2*x*y+y0;
    x = sx-sy+x0;
   }
  }
  else
  {
   double r,teta;
   for ( x = consx+(coord?x0:0), y = consy+(coord?y0:0), k = 0;
         k < profondeur && (r=hypot(x,y)) < norme; 
         k++)
   {
    if (r != 0)
    {
     teta = acos(x/r)*puisr;
     if (y < 0) teta = -teta;
     r = pow(r,puisr);
     x = r*cos(teta);
     y = r*sin(teta);
    }
    y = y0+y;
    x = x0+x;
   }
  }

Mandel Algorithme 0 : Ensemble de Mandelbrot

C'est l'ensemble fractal le plus classique.
Pour cet ensemble la fonction que l'on itère est f(z)=z²+pp est le point du plan auquel on s'intéresse (z et p sont des complexes).
On calcule ainsi

    f(p) = 0
    f(f(p)) = f(p)²+p et ainsi de suite tant que norme(f(p)) < Norme

Ici le calcul a été agrémenté de paramètres supplémentaires de manière à pouvoir obtenir des images dérivées de l'ensemble de Mandelbrot.
Ainsi tous les paramètres sauf Puissance imaginaire auront de l'effet. Dans le cas d'un ordinateur avec coprocesseur cet algorithme a été particulièrement optimisé.
Si l'on veut utiliser le même algorithme que le 0 mais où Puissance imaginaire est utilisé il faut utiliser le 18. Le 18 est bien plus lent (avec ou sans coprocesseur).

Algorithme 1

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + (z.x)²-(z.y)² - 2*i*z.x*z.y
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 2

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + z² + 2*z.x*z.y + p.y
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 3

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = z² + p.x*(2*z.x*z.y+p.y*z.x) + z.x+p.y
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 4

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + pow(z,PuisR+norme(p))
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 5

U(0)   = p +PuisI*(ConstX-p.x) + i*PuisI*(ConstY-p.y)
ConstX = ConstX + PuisI*(p.x-ConstX),
ConstY = ConstY + PuisI*(p.y-ConstY),
f(z)   = pow(z,PuisR) + ConstX + i*ConstY
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Le paramètre Puissance Imaginaire ne sert pas ici en tant que puissance mais est utilisé pour passer de l'ensemble de Julia à celui de Mandelbrot.
Si ce paramètre est égal à 0, on a l'ensemble de Julia, s'il est égal à 0.5, on trouve celui de Mandelbrot.

Algorithme 6

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + pow(z,norme(z)+2)
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 7

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + r*(ConstX*cos(theta*PuisR) + i*ConstY*sin(theta*PuisR))
où r = norme(z) et theta = l'angle de z modulo PI
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 8

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + pow(r,ConstX)*cos(theta*PuisR) + i*pow(r,ConstY)*sin(theta*PuisR)
où r = norme(z) et theta = angle de z modulo PI
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 9

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + i*2*z.x*z.y + (z.x)² - (2*z.x*z.y+p.y)²
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 10

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + (z.x)²-(z.y)² + i*2*z.y*((z.x)²-(z.y)²+p.x)
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 11

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + z.x*z.y + (z.y)² + i*((z.x)²-z.x*z.y)
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 12

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + z.x*z.y + z.x + i*(z.x*z.y+z.y)
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 13

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + z.y - z.x + i*(z.x*z.y-z.y)
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 14

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + ((z.x+z.y)²+1)/((z.x)²+1) + i*((z.x+z.y)²+1)/((z.y)²+1)
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 15

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + (z.x+z.y)²/(³z.x-z.y³+1) + i*(z.x+z.y)²/(³z.x*z.y³+1)
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 16

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = z.y-z.x + i*(z.x*z.y-z.y)
U(n+1) = f(U(n)) + p/(n+1)
Arrêt quand norme(U(n)) >= Norme

Julia Algorithme 17 : Ensemble de Julia

U(0)   = p
f(z)   = pow(z,PuisR) + ConstX + i*ConstY
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Pour obtenir une belle image, il est intéressant de prendre comme constante un des points qui se trouvent sur le bord de l'ensemble de Mandelbrot.

Algorithme 18 : Ensemble de Mandelbrot avec Puissance Imaginaire

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + pow(z,PuisR + i*PuisI)
U(n+1) = f(U(n))
Arrêt quand norme(U(n)) >= Norme

Algorithme 19

U(0)   = p*Coord + ConstX + i*ConstY
f(z)   = p + exp(g(z) * (PuisR + i*PuisI))
avec si real(z) !=0, g(z) = log(norm(z))/2 + i*atan(imag(z)/real(z))
     sinon        , g(z) = log(abso(imag(z))) + i*(imag(z)<0 ? -PI/2 :PI/2)
U(n+1) = f(U(n))
Arrêt quand racine(norme(U(n))) >= Norme

Profondeur

Algorithmes qui l'utilisent : tous
Valeurs possibles : entiers de 1 à 65500 (pas de négatif)
Exemple de valeur : 50

C'est ce qui permet d'avoir un dessin plus (vers 65500) ou moins (vers 1) précis.
Plus la profondeur est grande plus l'ordinateur s'applique (plus il calcule) mais s'appliquer ne sert à rien sur des images assez simples, il se peut que les profondeurs 100 et 300 donnent pratiquement le même dessin.


Puissance Réelle (PuisR)

Algorithmes qui l'utilisent : 0,4,5,7,8,17,18,19
Valeurs possibles : tout réel
Exemple de valeur : 2

Certains algorithmes utilisent des puissances complexes (a + ib), a est la partie réelle, c'est celle utilisée pour les algorithmes n'utilisant que les puissances réelles.


Puissance Imaginaire (PuisI)

Algorithmes qui l'utilisent : 5,18,19
Valeurs possibles : tout réel
Exemple de valeur : 0


Coordonnées (Coord)

Algorithmes qui l'utilisent : tous sauf les algorithmes 5 et 17
Exemple de valeur : non

Mettre Coordonnées à oui revient à ajouter p à f(p) au premier coup (c'est à dire f(p) = p et non f(p) = 0), ce paramètre n'a aucun effet les coups suivants.


Inversion

Algorithmes qui l'utilisent : tous
Exemple de valeur : non

Au lieu de prendre p comme point de départ, on prend 1/p.
C'est plus lent car la procédure de contournage ne peut plus être utilisée ou rarement.
Comme exemple comparer les images : Mandel et Oeil


Contourne

Algorithmes qui l'utilisent : tous
Exemple de valeur : oui

Que fait contourne : Quand contourne est à oui, lors du calcul de l'image, si le programme tombe sur un point de convergence, il va faire le tour de l'ensemble des points convergents qui touchent le point qu'il a trouvé. Une fois le tour fait, il remplit l'intérieur de la couleur de convergence (16).

Inconvénient de contourne : Si dans l'image que l'on calcule, il y a une plage de non convergence qui est incluse dans une plage de convergence alors la plage de non convergence n'apparaîtra pas et sera remplacée par la plage de convergence.
Ceci ne se produit pas pour l'ensemble de Mandelbrot, pour les autres dessins, si l'on n'est pas sûr, on peut commencer par faire un petit test en commençant le calcul sans le contournage (en particulier si Inversion est à oui ou si la Puissance Réelle est négative).

Avantage de contourne : Pour les plages de convergence, on ne calcule que les bords, or les points convergents sont les plus longs à calculer. Avec contourne, quand on augmente la profondeur de calcul le temps de calcul total augmente faiblement.
Ceci est à tempérer par le fait que le bord de l'ensemble de Mandelbrot est de dimension 2 ! (et certainement pour pas mal d'autres images), il en résulte que plus on va voir des détails petits et tarabiscotés de l'image, plus le bord de l'ensemble de convergence se comporte comme une surface et est donc long à calculer.


Tornade

Algorithmes qui l'utilisent : tous
Exemple de valeur : non

Avec cette option à oui, les couleurs sont réparties ainsi :
Les points qui convergent auront toujours la 16ième couleur,
les points qui divergent au (Profondeur-1)nième coup auront la 15ième couleur,
ceux qui divergent au (Profondeur-2)nième coup auront la 14ième couleur,...
ceux qui divergent au (Profondeur-15)nième coup auront la première couleur,
ceux qui divergent au (Profondeur-16)nième coup auront la 15ième couleur, etc

Cela donne un effet de profondeur et peut aider à repérer les plages de points divergeant en même temps, l'idéal serait d'avoir autant de couleurs que d'étapes de calcul possibles.


Constante X (ConstX)

Algorithmes qui l'utilisent : tous
Valeurs possibles : tout réel
Exemple de valeur : 0

X veut dire que l'on ajoute cette constante à la partie réelle.


Constante Y (ConstY)

Algorithmes qui l'utilisent : tous
Valeurs possibles : tout réel
Exemple de valeur : 0

Y veut dire que l'on ajoute cette constante à la partie imaginaire.


Norme

Algorithmes qui l'utilisent : tous
Valeurs possibles : tout réel positif
Exemple de valeur : 2

C'est le point d'arrêt du calcul : quand la norme du point calculé à un moment de l'itération devient plus grande que celle que vous avez choisie ici, le calcul est fini et la couleur est décidée.
Si, à tout moment de l'itération, la norme du point calculée est inférieure à celle donnée ici, le calcul s'arrête quand la Profondeur est atteinte et la couleur de ce point est celle de la convergence.
Dans les versions précédentes (< 3), la norme était dépendante de l'algorithme
ex : algo 10, norme = 3.


choix d'un carré avec la Souris

Cela permet de choisir un détail de l'image. Avec la souris on choisit deux points du rectangle voulu.

Un menu s'affiche : Choix du bord pour la souris

  1. Il faut d'abord appuyer sur la touche b ou g :
    * b pour que les deux points que vous choisirez soient ceux du bas du rectangle. Le premier point choisi sera situé en bas à gauche de la nouvelle image.
    * g pour que les deux points que vous choisirez soient ceux du côté gauche du rectangle. Le premier point choisi sera situé en haut à gauche de la nouvelle image.
  2. Puis on clique sur deux points
  3. apparait alors le rectangle correspondant
  4. Si on n'est pas satisfait du rectangle, on recommence à l'étape 2)
  5. Si on est content, on appuie sur Entrée.
  6. Si on en a marre de ce truc, on fait Esc.
  7. Le tableau des Paramètres se réaffichera alors avec dans le cas 5) les nouvelles valeurs pour Gauche, Largeur, Bas, Hauteur et Angle.

Gauche

Il détermine à quel point le côté gauche du cadre est proche ou non de l'axe vertical.
Ex : Mandel est à moins 2 du point (0,0) avec une largeur d'environ 2.5, si vous choisissez Gauche à -100, une largeur de 200, Bas à -50 et une hauteur de 100, vous aurez un tout petit Mandel déformé.


Bas

Il détermine à quel point le bas du cadre est proche ou non de l'axe horizontal.


Largeur

C'est la largeur totale en réel de votre image.


Hauteur

C'est la hauteur totale en réel de votre image.


Angle

C'est l'angle en degré de l'image par rapport à l'horizontale.


Validation

Quand on a modifié les paramètres et que l'on veut garder les modifications, on choisit Valider, sinon on fait Esc.


Problèmes

Les problèmes recensés ici sont ceux pour lesquels il n'y a pas de messages d'erreur, pas de plantage, juste une image toute petite ou toute noire, pas de texte qui s'affiche ...

Vous n'arrivez pas à sauver une image avec la grille affichée ou plusieurs lignes de texte ?

Vos lettres sont obliques, déformées en largeur ou en hauteur ... : la cause en est que l'image, sur laquelle elles sont écrites, est déformée (il n'y a pas la proportion de 3/4 entre la Hauteur et la Largeur).



    [home] Home         [no previous]         [no previous]         [no previous]    

http://www.maretmanu.org/homepage/aimfract/image.html
Date de création : 7 juin 1997    Dernière modification : 14 December 2000