#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D ' U N   E N T R E L A C S   A L E A T O I R E  :                                                    #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.ENTR.51.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20051120101230).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____NPoints                  20
$Z                                      # Donne le nombre de points qui vont etre generes ; le nombre d'arcs, lui sera fonction de    #
$Z                                      # $_____NPoints et de {$_____NInferieur,$_____NSuperieur}. On notera qu'evidemment, dans      #
$Z                                      # le processus aleatoire qui va suivre, un meme point peut etre duplique un nombre de fois    #
$Z                                      # choisi aleatoirement dans {$_____NInferieur,$_____NSuperieur}...                            #

$Z                  setParam            _____NInferieur               1
$Z                                      # Definit le nombre inferieur de duplications autorisees.                                     #

$Z                  setParam            _____NSuperieur               8
$Z                                      # Definit le nombre superieur de duplications autorisees.                                     #

$Z                  setParam            _____Graine                   1234567

$Z                  setParam            _____Increment                123

$Z                  setParam            _____MinX                     0.0

$Z                  setParam            _____MaxX                     1.0

$Z                  setParam            _____MinY                     0.0

$Z                  setParam            _____MaxY                     1.0

$Z                  setParam            _____MinZ                     0.0

$Z                  setParam            _____MaxZ                     1.0

$Z                  setParam            _____NiveauR_D                $GRIS_1

$Z                  setParam            _____NiveauV_D                $GRIS_1

$Z                  setParam            _____NiveauB_D                $GRIS_1

$Z                  setParam            _____NiveauR_A                $GRIS_8

$Z                  setParam            _____NiveauV_A                $GRIS_8

$Z                  setParam            _____NiveauB_A                $GRIS_8

$Z                  setParam            _____RayonInf                 0.01

$Z                  setParam            _____RayonSup                 $_____RayonInf

$Z                  setParam            _____Grossissement            1
$Z                                      # Parametre introduit le 20051123102537...                                                    #

$Z                  setParam            _____Zoom                     0.8

$Z                  setParam            _____RotationOX               0.0

$Z                  setParam            _____RotationOY               0.0

$Z                  setParam            _____RotationOZ               0.0

$Z                  setParam            _____Points                   32

$Z                  setParam            _____NombreR                  8

$Z                  setParam            _____Derivee                  1.0

$Z                  alias     Graines   'set       VaRiAbLe="\!*"                                                                 ;    \\
$Z                                       GenRdn                                                                                   ;    \\
$Z                                       eval      "set $VaRiAbLe=$GenRdnValeur"                                                  ;    \\
$Z                                       unset     VaRiAbLe FiLeT'
$Z                                      # Generateur des differentes graines ...                                                      #
$Z
$Z                  set       GenRdnGraine=$_____Graine
$Z                  set       GenRdnIncrement=$_____Increment
$Z                                      # Parametrage du generateur aleatoire...                                                      #
$Z
$Z                  Graines   Graine_S
$Z                  Graines   Graine_P
$Z
$Z                  Graines   Graine_X
$Z                  Graines   Graine_Y
$Z                  Graines   Graine_Z
$Z
$Z                  Graines   Graine_R
$Z                  Graines   Graine_V
$Z                  Graines   Graine_B
$Z
$Z                  Graines   Graine_r

$Z                  $DELETE   $xTV/DUPLICATEUR

$Z                  $xrv/val_alea.01$X  ne=$_____NPoints                                                                                \
$Z                                      graine=$Graine_S                                                                                \
$Z                                      LISTE_BORNES_INFERIEURES=$_____NInferieur                                                       \
$Z                                      LISTE_BORNES_SUPERIEURES=$_____NSuperieur                                                       \
$Z                                      formater=VRAI entiers=VRAI                                                                      \
$Z                                      message_borne_superieure_entiere=FAUX                                                           \
$Z                                      exemplaires=1                                                                                   \
$Z                                                                                                  > $xTV/DUPLICATEUR
$Z                                      # Les valeurs aleatoires generees ci-apres via 'GenAlea' ou 'GenAleaC' seront dupliquees      #
$Z                                      # individuellement un nombre variable de fois defini par '$xTV/DUPLICATEUR'.                  #

$Z                  set       PaRaMeTrEs="somme=VRAI produit=FAUX Men_tete=FAUX"
$Z                  set       NParticules_s2=`$xrv/cumul.01$X ne=$_____NPoints fichier=$xTV/DUPLICATEUR $PaRaMeTrEs signe="$K_VIDE"`

$Z                  set       NSegment=2
$Z                  @         NParticules = $NParticules_s2 * $NSegment

$Z                  $DELETE   $xTV/PERMUTATEUR

$Z                  $xci/valeurs_alea$X premiere=1 derniere=$NParticules_s2                                                             \
$Z                                      graine=$Graine_P                                                                                \
$Z                                      inf=1                                                                                           \
$Z                                      sup=$NParticules_s2                                                                             \
$Z                                      entiers=VRAI sans_collisions=VRAI                                                               \
$Z                                      message_borne_superieure_entiere=FAUX                                                     |&    \
$Z                  $xrv/SOUS.11$X      ne=0                                                                                            \
$Z                                      fichier1="="                                                                                    \
$Z                                      fichier2=-1                                                                                     \
$Z                                                                                                  > $xTV/PERMUTATEUR
$Z                                      # Ensuite, les valeurs aleatoires dupliquees via '$xTV/DUPLICATEUR' seront permutees          #
$Z                                      # aleatoirement via '$xTV/PERMUTATEUR'...                                                     #

$Z                  alias     GenAlea   'set       Gr=\!:1 ; set In=\!:2 ; set Su=\!:3 ; set FiR=\!:4                             ;    \\
$Z                                       $DELETE   $FiR                                                                           ;    \\
$Z                                       $xrv/val_alea.01$X  ne=$_____NPoints graine=$Gr                                               \\
$Z                                                           LISTE_BORNES_INFERIEURES=$In LISTE_BORNES_SUPERIEURES=$Su                 \\
$Z                                                                                                                      > $FiR    ;    \\
$Z                                       unset     Gr In Su FiR'
$Z                  alias     GenAleaC  'set       Gr=\!:1 ; set In=\!:2 ; set Su=\!:3 ; set FiR=\!:4                             ;    \\
$Z                                       $DELETE   $FiR                                                                           ;    \\
$Z                             set       InD=`calcul -($Su-$In)/$_____FBrownien` ; set SuD=`calcul +($Su-$In)/$_____FBrownien`    ;    \\
$Z                                       $xrv/val_alea.01$X  ne=$_____NPoints graine=$Gr brownien=VRAI iterer=VRAI                     \\
$Z                                                 LISTE_BORNES_INFERIEURES_CUMULEES=$In LISTE_BORNES_SUPERIEURES_CUMULEES=$Su         \\
$Z                                                 LISTE_BORNES_INFERIEURES=$InD LISTE_BORNES_SUPERIEURES=$SuD                         \\
$Z                                                                                                                      > $FiR    ;    \\
$Z                                       unset     Gr In Su InD SuD FiR'

$Z                  alias     GenDupl   'set       FiA=\!:1 ; set FiR=\!:2                                                        ;    \\
$Z                                       $DELETE   $FiR                                                                           ;    \\
$Z                                       $xrv/duplique.01$X  ne=$_____NPoints                                                          \\
$Z                                                           exemplaires=$xTV/DUPLICATEUR                                              \\
$Z                                                           fichier=$FiA                                                         |    \\
$Z                                       $xrv/permute.11$X   ne=0                                                                      \\
$Z                                                           fichier==                                                                 \\
$Z                                                           permutation=$xTV/PERMUTATEUR                                         |    \\
$Z                                       $xrv/duplique.01$X  ne=0                                                                      \\
$Z                                                           fichier==                                                                 \\
$Z                                                           exemplaires=$NSegment                                     > $FiR     ;    \\
$Z                                       decaleC   $FiR      1                                                                    ;    \\
$Z                                       unset     FiA FiR'

$Z                  if        ($?_____FBrownien == $EXIST) then
$Z                            GenAleaC  $Graine_X $_____MinX $_____MaxX $xTV/ALEATOIRES$COORD_X
$Z                            GenAleaC  $Graine_Y $_____MinY $_____MaxY $xTV/ALEATOIRES$COORD_Y
$Z                            GenAleaC  $Graine_Z $_____MinZ $_____MaxZ $xTV/ALEATOIRES$COORD_Z
$Z                  else
$Z                            GenAlea   $Graine_X $_____MinX $_____MaxX $xTV/ALEATOIRES$COORD_X
$Z                            GenAlea   $Graine_Y $_____MinY $_____MaxY $xTV/ALEATOIRES$COORD_Y
$Z                            GenAlea   $Graine_Z $_____MinZ $_____MaxZ $xTV/ALEATOIRES$COORD_Z
$Z                  endif

$Z                  GenDupl   $xTV/ALEATOIRES$COORD_X $xTV/COORDONNEES$COORD_X
$Z                  GenDupl   $xTV/ALEATOIRES$COORD_Y $xTV/COORDONNEES$COORD_Y
$Z                  GenDupl   $xTV/ALEATOIRES$COORD_Z $xTV/COORDONNEES$COORD_Z
$Z                                      # Generation des coordonnees des points...                                                    #

$Z                  GenAlea   $Graine_R $_____NiveauR_D $_____NiveauR_A $xTV/ALEATOIRES$ROUGE
$Z                  GenAlea   $Graine_V $_____NiveauV_D $_____NiveauV_A $xTV/ALEATOIRES$VERTE
$Z                  GenAlea   $Graine_B $_____NiveauB_D $_____NiveauB_A $xTV/ALEATOIRES$BLEUE

$Z                  GenDupl   $xTV/ALEATOIRES$ROUGE $xTV/COULEURS$ROUGE
$Z                  GenDupl   $xTV/ALEATOIRES$VERTE $xTV/COULEURS$VERTE
$Z                  GenDupl   $xTV/ALEATOIRES$BLEUE $xTV/COULEURS$BLEUE
$Z                                      # Generation des couleurs des points...                                                       #

$Z                  GenAlea   $Graine_r $_____RayonInf $_____RayonSup $xTV/ALEATOIRES

$Z                  GenDupl   $xTV/ALEATOIRES $xTV/RAYONS
$Z                                      # Generation des rayons des points...                                                         #

$Z                  $xrv/particule.10$X np=1 iterations=$NParticules                                                                    \
$Z                                      LISTE_X=$xTV/COORDONNEES$COORD_X                                                                \
$Z                                      LISTE_Y=$xTV/COORDONNEES$COORD_Y                                                                \
$Z                                      LISTE_Z=$xTV/COORDONNEES$COORD_Z                                                                \
$Z                                      grossissement=$_____Grossissement                                                               \
$Z                                      LISTE_RAYON=$xTV/RAYONS                                                                         \
$Z                                      LISTE_ROUGE=$xTV/COULEURS$ROUGE                                                                 \
$Z                                      LISTE_VERTE=$xTV/COULEURS$VERTE                                                                 \
$Z                                      LISTE_BLEUE=$xTV/COULEURS$BLEUE                                                                 \
$Z                                      Lz=1000 ZOOM=$_____Zoom                                                                         \
$Z                                      ROTATION_OX=$_____RotationOX                                                                    \
$Z                                      ROTATION_OY=$_____RotationOY                                                                    \
$Z                                      ROTATION_OZ=$_____RotationOZ                                                                    \
$Z                                      isoles=FAUX chainer=FAUX                                                                        \
$Z                                      ajuster_points=VRAI points=$_____Points nombreR=$_____NombreR                                   \
$Z                                      cubique=VRAI LISTE_dX=$_____Derivee LISTE_dY=$_____Derivee LISTE_dZ=$_____Derivee               \
$Z                                      RVB=VRAI                                                                                        \
$Z                                      R=$_____ImageR                                                                                  \
$Z                                      chiffres=0                                                                                      \
$Z                                                                                                                      $formatI
$Z                                      # Visualisation de l'entrelacs...                                                             #

$Z                  $DELETE   $xTV/DUPLICATEUR
$Z                  $DELETE   $xTV/PERMUTATEUR
$Z                  $DELETE   $xTV/ALEATOIRES$COORD_X
$Z                  $DELETE   $xTV/ALEATOIRES$COORD_Y
$Z                  $DELETE   $xTV/ALEATOIRES$COORD_Z
$Z                  $DELETE   $xTV/COORDONNEES$COORD_X
$Z                  $DELETE   $xTV/COORDONNEES$COORD_Y
$Z                  $DELETE   $xTV/COORDONNEES$COORD_Z
$Z                  $DELETE   $xTV/ALEATOIRES$ROUGE
$Z                  $DELETE   $xTV/ALEATOIRES$VERTE
$Z                  $DELETE   $xTV/ALEATOIRES$BLEUE
$Z                  $DELETE   $xTV/COULEURS$ROUGE
$Z                  $DELETE   $xTV/COULEURS$VERTE
$Z                  $DELETE   $xTV/COULEURS$BLEUE
$Z                  $DELETE   $xTV/ALEATOIRES
$Z                  $DELETE   $xTV/RAYONS



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.