/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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.