/*************************************************************************************************************************************/
/* */
/* 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;
}
)