/*************************************************************************************************************************************/
/* */
/* 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;
}
)
Copyright © Jean-François Colonna, 2013-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2013-2021.