/*************************************************************************************************************************************/ /* */ /* 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 ' U N E C R O I X F R A C T A L E : */ /* */ /* */ /* Author of '$xrC/ObjetComplexe.41$vv$c' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 20130504094347). */ /* */ /*************************************************************************************************************************************/ #ifdef COMMENTS # undef COMMENTS #else #endif #define COMMENTS "Croix fractale (format octet) -noir ou blanc-" #include "images_1octet.01.vv.I" #include "Flogarithme2.01.vv.I" #define FACTEUR_1 \ (2) #define FACTEUR_2 \ (4) int facteur_1=FACTEUR_1; int facteur_2=FACTEUR_2; FonctionPrivee_croix(Xc,Yc,dX,dY,iterations) int Xc,Yc; int dX,dY; int iterations; { if (iterations > 0) { int xk,yk; xk=SOUS(Xc,dX); yk=Yc; FonctionPrivee_croix(xk,yk,DIVI(dX,facteur_1),DIVI(dY,facteur_1),SOUS(iterations,1)); for (xk=xk ; xk <= ADD2(Xc,dX) ; xk=ADD2(xk,1)) { STORE_IMAGE_TORE(xk,yk,BLANC); } FonctionPrivee_croix(SOUS(xk,1),yk,DIVI(dX,facteur_1),DIVI(dY,facteur_1),SOUS(iterations,1)); /* Le 'SOUS(xk,1)' vient du fait qu'a la sortie du 'for(...)' precedent, la coordonnee 'xk' */ /* vaut son maximum ('ADD2(Xc,dX)') plus un : il faut donc revenir d'un cran en arriere... */ xk=Xc; yk=SOUS(Yc,dY); FonctionPrivee_croix(xk,yk,DIVI(dX,facteur_1),DIVI(dY,facteur_1),SOUS(iterations,1)); for (yk=yk ; yk <= ADD2(Yc,dY) ; yk=ADD2(yk,1)) { STORE_IMAGE_TORE(xk,yk,BLANC); } FonctionPrivee_croix(xk,SOUS(yk,1),DIVI(dX,facteur_1),DIVI(dY,facteur_1),SOUS(iterations,1)); /* Le 'SOUS(yk,1)' vient du fait qu'a la sortie du 'for(...)' precedent, la coordonnee 'yk' */ /* vaut son maximum ('ADD2(Yc,dY)') plus un : il faut donc revenir d'un cran en arriere... */ } else { } return(OK); } MAIN( { int iterations=SOUS((int)Flogarithme2(MIN2(dimX,dimY)),2); int demi_longueur_X=DIVI(dimX,facteur_2); int demi_longueur_Y=DIVI(dimY,facteur_2); INITIALISATION_IMAGE(NOIR); FonctionPrivee_croix(ADD2(Xmin,dimXs2),ADD2(Ymin,dimYs2),demi_longueur_X,demi_longueur_Y,iterations); SORTIE_DU_FICHIER_IMAGE; EDITER_LES_COMPTEURS_DES_FONCTIONS; } )