/*************************************************************************************************************************************/
/* */
/* 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 R E S E A U A L E A T O I R E D E S E G M E N T S H O R I Z O N T A U X O U V E R T I C A U X : */
/* */
/* */
/* Author of '$xrC/ObjetComplexe.51$vv$c' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 20130504110154). */
/* */
/*************************************************************************************************************************************/
#ifdef COMMENTS
# undef COMMENTS
#else
#endif
#define COMMENTS "Reseau de segments aleatoires horizontaux ou verticaux (format octet) -noir ou blanc-"
#define DEFINE_01 "-DNOMBRE_X=gDIVI(dimX,105) -DNOMBRE_Y=gDIVI(dimY,105)"
#define DEFINE_02 "-DNOMBRE_X=gDIVI(dimX,98) -DNOMBRE_Y=gDIVI(dimY,98)"
#define DEFINE_03 "-DNOMBRE_X=gDIVI(dimX,91) -DNOMBRE_Y=gDIVI(dimY,91)"
#define DEFINE_04 "-DNOMBRE_X=gDIVI(dimX,84) -DNOMBRE_Y=gDIVI(dimY,84)"
#define DEFINE_05 "-DNOMBRE_X=gDIVI(dimX,77) -DNOMBRE_Y=gDIVI(dimY,77)"
#define DEFINE_06 "-DNOMBRE_X=gDIVI(dimX,70) -DNOMBRE_Y=gDIVI(dimY,70)"
#define DEFINE_07 "-DNOMBRE_X=gDIVI(dimX,63) -DNOMBRE_Y=gDIVI(dimY,63)"
#define DEFINE_08 "-DNOMBRE_X=gDIVI(dimX,56) -DNOMBRE_Y=gDIVI(dimY,56)"
#define DEFINE_09 "-DNOMBRE_X=gDIVI(dimX,49) -DNOMBRE_Y=gDIVI(dimY,49)"
#define DEFINE_10 "-DNOMBRE_X=gDIVI(dimX,42) -DNOMBRE_Y=gDIVI(dimY,42)"
#define DEFINE_11 "-DNOMBRE_X=gDIVI(dimX,35) -DNOMBRE_Y=gDIVI(dimY,35)"
#define DEFINE_12 "-DNOMBRE_X=gDIVI(dimX,28) -DNOMBRE_Y=gDIVI(dimY,28)"
#define DEFINE_13 "-DNOMBRE_X=gDIVI(dimX,21) -DNOMBRE_Y=gDIVI(dimY,21)"
#define DEFINE_14 "-DNOMBRE_X=gDIVI(dimX,14) -DNOMBRE_Y=gDIVI(dimY,14)"
#define DEFINE_15 "-DNOMBRE_X=gDIVI(dimX,7) -DNOMBRE_Y=gDIVI(dimY,7)"
#define DEFINE_16 "-DNOMBRE_X=gDIVI(dimX,1) -DNOMBRE_Y=gDIVI(dimY,1)"
/* Les diviseurs des dimensions ont ete obtenus par : */
/* */
/* $xci/valeurs_inte$X \ */
/* p=1 d=16 \ */
/* lineaire=VRAI \ */
/* vD=1 vA=105 \ */
/* entiers=VRAI */
/* */
#include "images_1octet.01.vv.I"
#include "Flogarithme2.01.vv.I"
long int m;
long int seuil;
long int a=0x5DEECE66D;
long int c=0xB;
long int d=48-32;
long int Xi=1;
int FonctionPrivee_aleatoire(masque,dimension)
int masque;
int dimension;
{
Xi = REST(ADD2(MUL2(a,Xi),c),m);
return(REST((int)ETLO(DECD(Xi,d),((long int)masque)),dimension));
}
#ifndef NOMBRE_X
# define NOMBRE_X \
gDIVI(dimX,5)
#else
#endif
#ifndef NOMBRE_Y
# define NOMBRE_Y \
gDIVI(dimY,5)
#else
#endif
int nombre_X=NOMBRE_X;
int nombre_Y=NOMBRE_Y;
MAIN(
{
int masqueX=SOUS(DECG(BIT,(int)ADD2(Flogarithme2(dimX),1)),1);
int masqueY=SOUS(DECG(BIT,(int)ADD2(Flogarithme2(dimY),1)),1);
int iterationX;
int iterationY;
m=MUL2(4096,4096);
m=MUL2(m,m);
seuil=DIVI(m,2);
/* Les valeurs des parametres {m,seuil,a,c} sont ceux de la fonction 'drand48(...)'. */
INITIALISATION_IMAGE(NOIR);
for (iterationX=1 ; iterationX <= nombre_X ; iterationX=ADD2(iterationX,1))
{
int x;
int y=ADD2(FonctionPrivee_aleatoire(masqueY,dimY),Ymin);
int x1=ADD2(FonctionPrivee_aleatoire(masqueX,dimX),Xmin);
int x2=ADD2(FonctionPrivee_aleatoire(masqueX,dimX),Xmin);
if (x1 > x2)
{
int x3=x2;
x2=x1;
x1=x3;
}
else
{
}
for (x=x1 ; x <= x2 ; x=ADD2(x,1))
{
STORE_IMAGE_TORE(x,y,BLANC);
}
}
for (iterationY=1 ; iterationY <= nombre_Y ; iterationY=ADD2(iterationY,1))
{
int x=ADD2(FonctionPrivee_aleatoire(masqueX,dimX),Xmin);
int y;
int y1=ADD2(FonctionPrivee_aleatoire(masqueY,dimY),Ymin);
int y2=ADD2(FonctionPrivee_aleatoire(masqueY,dimY),Ymin);
if (y1 > y2)
{
int y3=y2;
y2=y1;
y1=y3;
}
else
{
}
for (y=y1 ; y <= y2 ; y=ADD2(y,1))
{
STORE_IMAGE_TORE(x,y,BLANC);
}
}
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.