/*************************************************************************************************************************************/ /* */ /* 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 P A V E S D E P O I N T S P S E U D O - A L E A T O I R E S N O I R O U B L A N C : */ /* */ /* */ /* Author of '$xrC/ObjetComplexe.P____1$vv$c' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 20130722183657). */ /* */ /*************************************************************************************************************************************/ #ifdef COMMENTS # undef COMMENTS #else #endif #define COMMENTS "Paves identiques de points pseudo-aleatoires type 'drand48(...)' (format octet) -noir ou blanc-" #define DEFINE_01 "-DPAVE_X=16 -DPAVE_Y=16" #define DEFINE_02 "-DPAVE_X=32 -DPAVE_Y=32" #define DEFINE_03 "-DPAVE_X=48 -DPAVE_Y=48" #define DEFINE_04 "-DPAVE_X=64 -DPAVE_Y=64" #define DEFINE_05 "-DPAVE_X=80 -DPAVE_Y=80" #define DEFINE_06 "-DPAVE_X=96 -DPAVE_Y=96" #define DEFINE_07 "-DPAVE_X=112 -DPAVE_Y=112" #define DEFINE_08 "-DPAVE_X=128 -DPAVE_Y=128" #define DEFINE_09 "-DPAVE_X=144 -DPAVE_Y=144" #define DEFINE_10 "-DPAVE_X=160 -DPAVE_Y=160" #define DEFINE_11 "-DPAVE_X=176 -DPAVE_Y=176" #define DEFINE_12 "-DPAVE_X=192 -DPAVE_Y=192" #define DEFINE_13 "-DPAVE_X=208 -DPAVE_Y=208" #define DEFINE_14 "-DPAVE_X=224 -DPAVE_Y=224" #define DEFINE_15 "-DPAVE_X=240 -DPAVE_Y=240" #define DEFINE_16 "-DPAVE_X=256 -DPAVE_Y=256" /* Les seuils ont ete obtenus par : */ /* */ /* set PrEmIeRe=1 */ /* set DeRnIeRe=16 */ /* set vD_=16 */ /* set PaS_v___=16 */ /* @ vA_ = ( $DeRnIeRe - $PrEmIeRe ) * $PaS_v___ + $vD_ */ /* */ /* $xci/valeurs_inte$X \ */ /* p=$PrEmIeRe d=$DeRnIeRe \ */ /* lineaire=VRAI \ */ /* vD=$vD_ vA=$vA_ \ */ /* entier=VRAI epsilon=0.1 signe="$K_VIDE" */ /* */ /* On notera qu'il est mieux que le pas '$PaS_v___' soit un multiple de 4 afin que */ /* l'on puisse utiliser 'v $xiirC/.OBJC.21.1.$U .xci.reduction_16.X' sans probleme lors */ /* de la reduction d'un facteur 4... */ #include "images_1octet.01.vv.I" #ifndef PAVE_X # define PAVE_X \ gDIVI(dimX,16) #else #endif #ifndef PAVE_Y # define PAVE_Y \ gDIVI(dimY,16) #else #endif long int pave_X=PAVE_X; long int pave_Y=PAVE_Y; #ifndef SEUIL # define SEUIL \ (0.5) #else #endif double seuil=SEUIL; #define FACTEUR \ (12345) #define MODULO \ (201307222050531) #define FACTEUR_X \ (3) #define FACTEUR_Y \ (7) MAIN( { long int m=0x0000ffffffffffff; long int a=0x5DEECE66D; long int c=0xB; long int Xi; /* Les valeurs des parametres {m,a,c} sont ceux de la fonction 'drand48(...)'. */ for (y=Ymin ; y <= Ymax ; y=ADD2(y,1)) { for (x=Xmin ; x <= Xmax ; x=ADD2(x,1)) { Xi = ETLO(ADD2(MUL2(a ,REST(MUL2(FACTEUR ,MUL2(ADD2(MUL2(FACTEUR_X,REST(x,pave_X)) ,MUL2(FACTEUR_Y,REST(y,pave_Y)) ) ,MUL2(REST(x,pave_X),REST(y,pave_Y)) ) ) ,MODULO ) ) ,c ) ,m ); STORE_IMAGE_PLAN(x,y,COND(IFLT(DIVIf(((double)Xi),((double)m)),seuil),NOIR,BLANC)); } } SORTIE_DU_FICHIER_IMAGE; EDITER_LES_COMPTEURS_DES_FONCTIONS; } )