/*************************************************************************************************************************************/ /* */ /* E T U D E D E L A C O M P L E X I T E S T R U C T U R E L L E */ /* D E L ' E N S E M B L E D E M A N D E L B R O T : */ /* */ /* */ /* Author of '$xrC/ObjetComplexe.S____1$vv$c' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 20130727100842). */ /* */ /*************************************************************************************************************************************/ #ifdef COMMENTS # undef COMMENTS #else #endif #define COMMENTS "Ensemble de Mandelbrot (format octet) -fausses couleurs-" #include "images_1octet.01.vv.I" #include "complexes.01.vv.I" #define DEFINE_01 "-DITERATIONS=2" #define DEFINE_02 "-DITERATIONS=3" #define DEFINE_03 "-DITERATIONS=4" #define DEFINE_04 "-DITERATIONS=5" #define DEFINE_05 "-DITERATIONS=6" #define DEFINE_06 "-DITERATIONS=7" #define DEFINE_07 "-DITERATIONS=8" #define DEFINE_08 "-DITERATIONS=9" #define DEFINE_09 "-DITERATIONS=10" #define DEFINE_10 "-DITERATIONS=11" #define DEFINE_11 "-DITERATIONS=12" #define DEFINE_12 "-DITERATIONS=13" #define DEFINE_13 "-DITERATIONS=14" #define DEFINE_14 "-DITERATIONS=15" #define DEFINE_15 "-DITERATIONS=16" #define DEFINE_16 "-DITERATIONS=17" #ifndef ITERATIONS # define ITERATIONS \ (16) #else #endif int iterations=ITERATIONS; #ifndef SEUIL # define SEUIL \ (4.0) #else #endif double seuil=SEUIL; /* Introduit le 20130803135924... */ #define XG \ (-2.00) #define XD \ (0.50) /* Extremites Gauche et Droite sur l'axe des 'X'. */ #define YB \ (-1.25) #define YH \ (1.25) /* Extremites Bas et Haut sur l'axe des 'Y'. */ MAIN( { complexe C; complexe Zn; complexe z1; for (y=Ymin ; y <= Ymax ; y=ADD2(y,1)) { for (x=Xmin ; x <= Xmax ; x=ADD2(x,1)) { int index=1; int iterer=VRAI; /* Variables d'iterations... */ Cinit(C ,ADD2f(MUL2f(DIVIf((double)x,(double)dimX),SOUSf(XD,XG)),XG) ,ADD2f(MUL2f(DIVIf((double)y,(double)dimY),SOUSf(YH,YB)),YB) ); /* Initialisation du point complexe courant 'C' sur le point {x,y}. */ Cinit(Zn,0.0,0.0); /* Initialisation de la suite Zn. */ while (iterer == VRAI) { Cproduit(z1,Zn,Zn); Csomme(Zn,z1,C); Cdeborde(Zn); /* Iteration de la suite Zn. */ if ((index >= iterations) || (Cmodule2(Zn) > seuil)) { STORE_IMAGE_PLAN(x,y,DIVI(MUL2(index,COULEURS),iterations)); iterer=FAUX; } else { index=ADD2(index,1); } } } } SORTIE_DU_FICHIER_IMAGE; EDITER_LES_COMPTEURS_DES_FONCTIONS; } )