#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D ' U N   E N T R E L A C S   A   P A R T I R   D ' U N E   I M A G E                                 #
#         O U   D ' U N E   S U R F A C E   ( A R B I T R A I R E S )  :                                                              #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.ENTR.61.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois COLONNA (LACTAMME, 20051202094013).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____Graine                   1234567

$Z                  setParam            _____Increment                123

$Z                  setParam            _____MinZ                     0.0

$Z                  setParam            _____MaxZ                     1.0

$Z                  setParam            _____NVoisins                 3

$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                  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                  1

$Z                  setParam            _____Derivee                  1.0

$Z                  setParam            _____ParticulePara1           "$K_VIDE"
$Z                                      # Parametre introduit le 20051230134713...                                                    #

$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_Z
$Z
$Z                  Graines   Graine_R
$Z                  Graines   Graine_V
$Z                  Graines   Graine_B
$Z
$Z                  Graines   Graine_r

$Z                  if        (($?_____SurfaceA == $EXIST) && ($?_____ImageA == $EXIST)) then
$Z                                      # Test introduit le 20051217102608...                                                         #
$Z                            EROR      "L'entrelacs ne peut etre defini simultanement par une Surface et par une Image \c"
$Z                            echo      "(l'Image l'emporte sur la surface...)."
$Z                  else
$Z                  endif

$Z                  SETParam            _____EntrelacsSurface         $NEXIST
$Z                                      # Definition passee de 'set' a 'SET' le 20150611134340 a cause du fait que cette variable     #
$Z                                      # figure plus loin dans un 'if(...)' qui lui-meme a l'interieur d'un autre 'if(...)' dans     #
$Z                                      # lequel la variable '$_____SurfaceA' est testee...                                           #

$Z                  set       N_Au_CaRrE=VRAI
$Z                                      # Variable introduite le 20051226162037 pour simplifier l'acceleration temporaires du         #
$Z                                      # processus lors de tests de mise au point des parametres...                                  #

$Z                  if        ($?_____SurfaceA == $EXIST) then
$Z                                      # Test introduit le 20051215093125...                                                         #

$Z                            set       SurfaceEffective=$_____SurfaceA

$Z                            if        (! -e $SurfaceEffective) then
$Z                                      set       SurfaceEffective=$xrs/$SurfaceEffective

$Z                                      if        (! -e $SurfaceEffective) then
$Z                                                set       SurfaceEffective=$SurfaceEffective$X
$Z                                      # Possibilite introduite le 20051217182507 ; elle permet d'omettre '$xrs' et '$X'...          #
$Z                                      else
$Z                                      endif
$Z                            else
$Z                            endif

$Z                  setParam            _____Pu                       0.5

$Z                  setParam            _____Pv                       0.5

$Z                  setParam            _____SurfaceParam1            "$K_VIDE"
$Z                                      # Parametre introduit le 20051215103312 et "detriple" le 20051223165420 afin de pouvoir       #
$Z                                      # controler de facon separee '$xTV/SURFACE.1' et '$xTV/SURFACE.2'. Ainsi, donc ce parametre   #
$Z                                      # controle '$xTV/SURFACE.1'...                                                                #

$Z                  setParam            _____SurfaceParam2            "$K_VIDE"
$Z                                      # Parametre introduit le 20051223165420 pour controler '$xTV/SURFACE.2'.                      #

$Z                  setParam            _____SurfaceParam12           "$K_VIDE"
$Z                                      # Parametre introduit le 20051223165420 pour controler '$xTV/SURFACE.1' et '$xTV/SURFACE.2'.  #

$Z                            if        ($_____EntrelacsSurface == $EXIST) then
$Z                                      # Possibilite introduite le 20051220104453 pour placer l'entrelacs par rapport a la surface   #
$Z                                      # generatrice...                                                                              #

$Z                  setParam            _____RVB0                     0.2
$Z                                      # Introduit le 20051220220553...                                                              #

$Z                  setParam            _____RayonSurface             0.030

$Z                                      $DELETE             $xTV/MAILLAGE

$Z                                      $SurfaceEffective                                                                               \
$Z                                                          np=1                                                                        \
$Z                                                          pu=$_____Pu pv=$_____Pv                                                     \
$Z                                                          eu=40       ev=40                                                           \
$Z                                                          dpu=80      dpv=80                                                          \
$Z                                                          lister_les_points=VRAI lister_les_points_apres=VRAI                         \
$Z                                                          TZliste=0.5                                                                 \
$Z                                                          carree=VRAI petit_carre=FAUX                                                \
$Z                                                          RVB=FAUX RVB0=$_____RVB0                                                    \
$Z                                                          Lz=1000                                                                     \
$Z                                                          ZOOM=$_____Zoom                                                             \
$Z                                                          rayon_de_visualisation=$_____RayonSurface                                   \
$Z                                                          N_AU_CARRE=$N_Au_CaRrE                                                      \
$Z                                                          edc=VRAI                                                                    \
$Z                                                          $_____SurfaceParam1                                                         \
$Z                                                          $_____SurfaceParam12                                                        \
$Z                                                          R=$xTV/SURFACE.1 chiffres=0                                                 \
$Z                                                          CAL1=FAUX                                                                   \
$Z                                                                                                                      $formatI  |     \
$Z                                      $GRE                -v '^ *$'                                                                   \
$Z                                                                                                            > $xTV/MAILLAGE
$Z                                      # Le 20051223165420, {{eu,ev},{dpu,dpv}} ont vu leurs valeurs doubler et passer de            #
$Z                                      # {{20,20},{40,40}} a {{40,40},{80,80}}. On notera au passage que c'est ce rapport 40/80=1/2  #
$Z                                      # qui fait que sur une image telle 'v $xiirv/ENTR.E1.0' il n'y a qu'un point sur deux pour    #
$Z                                      # la coordonnee 'u' et qu'un point sur deux pour la coordonnee 'v' (c'est-a-dire au total     #
$Z                                      # un point -ou noeud- sur quatre) du maillage {u,v} qui soit utilise comme point d'ancrage    #
$Z                                      # de l'entrelacs...                                                                           #
$Z                                      #                                                                                             #
$Z                                      # Le "CAL1=FAUX" a ete introduit le 20051226114314 afin de permettre d'introduire comme       #
$Z                                      # '$SurfaceEffective' autre chose que des "vraies" surfaces (par exemple '$xrk/lorenz.11$X'   #
$Z                                      # qui ne reconnait pas les arguments relatifs aux coordonnees de parametrage {u,v}...).       #

$Z                                      set       ZoomSurface="ZOOM=$_____Zoom"
$Z                                      # Les deux occurences de '$SurfaceEffective' doivent avoir le meme zoom...                    #
$Z                                      set       ZoomParticule="$K_VIDE"
$Z                                      set       ZoomParticule="ZOOM=1"
$Z                                      set       ZoomParticule="$ZoomParticule sAX="`calcul $dimX/$dimY`
$Z                                      set       ZoomParticule="$ZoomParticule sAY="`calcul $dimX/$dimY`
$Z                                      set       ZoomParticule="$ZoomParticule sAZ=""1"
$Z                                      # Par contre, dans le cas '$_____EntrelacsSurface == $EXIST', '$xrv/particule.10$X' ne        #
$Z                                      # peut avoir qu'un zoom "neutre", sous peine d'avoir finalement deux rapports de zoom         #
$Z                                      # en general differents : un pour '$xTV/Z_BUFFER' (egal a '$_____Zoom') et un autre pour      #
$Z                                      # l'entrelacs dans '$xrv/particule.10$X' egal au produit du zoom propre a ce dernier          #
$Z                                      # programme et du zoom de generation de '$xTV/SURFACE.2' (egal a '$_____Zoom'). Le rapport    #
$Z                                      # de zoom dit "neutre" est evidemment egal a 1 ; il est aussi necessaire d'utiliser des       #
$Z                                      # "super-echelles" relatives a 'OX' et a 'OY' egales a dimX/dimY ; cela vient de l'usage de   #
$Z                                      # "carree=VRAI petit_carre=FAUX" pour generer '$xTV/COORDONNEES' qui divise les coordonnees   #
$Z                                      # 'Y' par ce meme rapport (ce qui fait d'un cercle, une ellipse allongee horizontalement),    #
$Z                                      # mais comme les coordonnees sont mises dans [0,1], cela fait comme si les deux coordonnees   #
$Z                                      # 'X' et 'Y' avaient ete divisees par ce rapport.                                             #

$Z                                      $DELETE             $xTV/MAILLAGE$COORD_X
$Z                                      $DELETE             $xTV/MAILLAGE$COORD_Y
$Z                                      $DELETE             $xTV/MAILLAGE$COORD_Z

$Z                                      $CA                 $xTV/MAILLAGE                                                         |     \
$Z                                      $SE                 -e "s/^.* X=//"                                                             \
$Z                                                          -e 's/^\([^ ][^ ]*\) .*$/\1/'                                         |     \
$Z                                      $xrv/neutre$X       ne=0                                                                        \
$Z                                                          fichier==                                                                   \
$Z                                                          exemplaires=2                                                               \
$Z                                                                                                            > $xTV/MAILLAGE$COORD_X
$Z                                      # Le $xrv/neutre$X' precedent (ainsi que les six autres qui suivent) sont destinees a faire   #
$Z                                      # uniquement "exemplaires=2" car, en effet, il est necessaire de doubler chaque valeur        #
$Z                                      # puisque le '$xrv/particule.10$X' final fait un "isoles=FAUX". Ainsi donc les points ici     #
$Z                                      # recuperes, ayant ete doubles, donneront chacun naissanace a une chaine de longueur nulle... #
$Z                                      $CA                 $xTV/MAILLAGE                                                         |     \
$Z                                      $SE                 -e "s/^.* Y=//"                                                             \
$Z                                                          -e 's/^\([^ ][^ ]*\) .*$/\1/'                                         |     \
$Z                                      $xrv/neutre$X       ne=0                                                                        \
$Z                                                          fichier==                                                                   \
$Z                                                          exemplaires=2                                                               \
$Z                                                                                                            > $xTV/MAILLAGE$COORD_Y
$Z                                      $CA                 $xTV/MAILLAGE                                                         |     \
$Z                                      $SE                 -e "s/^.* Z=//"                                                             \
$Z                                                          -e 's/^\([^ ][^ ]*\) .*$/\1/'                                         |     \
$Z                                      $xrv/neutre$X       ne=0                                                                        \
$Z                                                          fichier==                                                                   \
$Z                                                          exemplaires=2                                                               \
$Z                                                                                                            > $xTV/MAILLAGE$COORD_Z

$Z                                      $DELETE             $xTV/MAILLAGE$ROUGE
$Z                                      $DELETE             $xTV/MAILLAGE$VERTE
$Z                                      $DELETE             $xTV/MAILLAGE$BLEUE

$Z                                      $CA                 $xTV/MAILLAGE                                                         |     \
$Z                                      $SE                 -e "s/^.* ROUGE=//"                                                         \
$Z                                                          -e 's/^\([^ ][^ ]*\) .*$/\1/'                                         |     \
$Z                                      $xrv/neutre$X       ne=0                                                                        \
$Z                                                          fichier==                                                                   \
$Z                                                          exemplaires=2                                                               \
$Z                                                                                                            > $xTV/MAILLAGE$ROUGE
$Z                                      $CA                 $xTV/MAILLAGE                                                         |     \
$Z                                      $SE                 -e "s/^.* VERTE=//"                                                         \
$Z                                                          -e 's/^\([^ ][^ ]*\) .*$/\1/'                                         |     \
$Z                                      $xrv/neutre$X       ne=0                                                                        \
$Z                                                          fichier==                                                                   \
$Z                                                          exemplaires=2                                                               \
$Z                                                                                                            > $xTV/MAILLAGE$VERTE
$Z                                      $CA                 $xTV/MAILLAGE                                                         |     \
$Z                                      $SE                 -e "s/^.* BLEUE=//"                                                         \
$Z                                                          -e 's/^\([^ ][^ ]*\) .*$/\1/'                                         |     \
$Z                                      $xrv/neutre$X       ne=0                                                                        \
$Z                                                          fichier==                                                                   \
$Z                                                          exemplaires=2                                                               \
$Z                                                                                                            > $xTV/MAILLAGE$BLEUE

$Z                                      $DELETE             $xTV/MAILLAGE$RAYON

$Z                                      $CA                 $xTV/MAILLAGE                                                         |     \
$Z                                      $SE                 -e "s/^.* RAYON=//"                                                         \
$Z                                                          -e 's/^\([^ ][^ ]*\) .*$/\1/'                                         |     \
$Z                                      $xrv/neutre$X       ne=0                                                                        \
$Z                                                          fichier==                                                                   \
$Z                                                          exemplaires=2                                                               \
$Z                                                                                                            > $xTV/MAILLAGE$RAYON
$Z                            else
$Z                                      set       ZoomSurface="$K_VIDE"
$Z                                      # Dans ce cas, pour assurer la compatibilite anterieure au 20051220142511, il faut            #
$Z                                      # conserver le rapport de zoom par defaut...                                                  #
$Z                            endif

$Z                            $DELETE             $xTV/COORDONNEES

$Z                            $SurfaceEffective                                                                                         \
$Z                                                np=1                                                                                  \
$Z                                                pu=$_____Pu pv=$_____Pv                                                               \
$Z                                                lister_les_points=VRAI lister_les_points_apres=VRAI                                   \
$Z                                                TZliste=0.5                                                                           \
$Z                                                carree=VRAI petit_carre=FAUX                                                          \
$Z                                                $ZoomSurface                                                                          \
$Z                                                N_AU_CARRE=$N_Au_CaRrE                                                                \
$Z                                                $_____SurfaceParam2                                                                   \
$Z                                                $_____SurfaceParam12                                                                  \
$Z                                                R=$xTV/SURFACE.2 chiffres=0                                                           \
$Z                                                CAL1=FAUX                                                                             \
$Z                                                                                                            $formatI            |     \
$Z                            $GRE                -v '^ *$'                                                                             \
$Z                                                                                                  > $xTV/COORDONNEES
$Z                                      # Recuperation des coordonnees dans [0,1] (on notera le traitement specifique de la           #
$Z                                      # coordonnee 'Z' : 'v $xrv/champs_5.11$I TZliste') des points du maillage courant {u,v}       #
$Z                                      # de la surface...                                                                            #
$Z                                      #                                                                                             #
$Z                                      # Le passage au format 'Std' fut introduit le 20051215130551 afin de garantir, par exemple,   #
$Z                                      # qu'une sphere reste une sphere. L'utilisation directe de '$format_Std' fut quant a elle     #
$Z                                      # introduite le 20051216090516. Le 20051216105730, cela fut remplace par action sur les       #
$Z                                      # "super-echelles"...                                                                         #
$Z                                      #                                                                                             #
$Z                                      # L'option "N_AU_CARRE=" a ete introduite le 20051226162037...                                #

$Z                            $DELETE             $xTV/COORD.1$COORD_X
$Z                            $DELETE             $xTV/COORD.1$COORD_Y
$Z                            $DELETE             $xTV/COORD.1$COORD_Z

$Z                            $CA                 $xTV/COORDONNEES                                                                |     \
$Z                            $SE                 -e "s/^.* X=//"                                                                       \
$Z                                                -e 's/^\([^ ][^ ]*\) .*$/\1/'                                                         \
$Z                                                                                                  > $xTV/COORD.1$COORD_X
$Z                            $CA                 $xTV/COORDONNEES                                                                |     \
$Z                            $SE                 -e "s/^.* Y=//"                                                                       \
$Z                                                -e 's/^\([^ ][^ ]*\) .*$/\1/'                                                         \
$Z                                                                                                  > $xTV/COORD.1$COORD_Y
$Z                            $CA                 $xTV/COORDONNEES                                                                |     \
$Z                            $SE                 -e "s/^.* Z=//"                                                                       \
$Z                                                -e 's/^\([^ ][^ ]*\) .*$/\1/'                                                         \
$Z                                                                                                  > $xTV/COORD.1$COORD_Z
$Z                  else
$Z                  endif

$Z                  setParam            ZoomParticule                 "ZOOM=$_____Zoom"
$Z                                      # Afin d'assurer la compatibilite anterieure au 20051220142511...                             #

$Z                  if        ($?_____ImageA == $EXIST) then
$Z                                      # Test introduit le 20051215091957...                                                         #
$Z                            alias     GenList   'set       Ex=\!:1 ; set Ey=\!:2 ; set FiR=\!:3                                 ;    \\
$Z                                                 $DELETE   $FiR                                                                 ;    \\
$Z                                                 $xci/liste_points$X A=$_____ImageA                                                  \\
$Z                                                                     Cnormaliser=FAUX                                                \\
$Z                                                                     eX=$Ex eY=$Ey eZ=FAUX eNIVEAU=FAUX epoints=FAUX en_tete=FAUX    \\
$Z                                                                                                                      >& $FiR   ;    \\
$Z                                                 unset     Ex Ey FiR'
$Z                                      # Le 20051204121509 le mode "Cnormaliser=FAUX" a ete introduit afin de conserver les          #
$Z                                      # coordonnees entieres et ainsi garantir la periodicite stricte, ce qui n'est plus vrai       #
$Z                                      # si les coordonnees sont normalisees (probleme d'arrondi...). Cela permet alors de           #
$Z                                      # garantir le bon fonctionnement de '$xrv/distance.02$X' ci-apres et donc de produire         #
$Z                                      # lorsque '$_____ImageA' est un reseau regulier ('v $xiirv/ENTR.71') une image '$_____ImageR' #
$Z                                      # reguliere et symetrique. En effet, sinon, des points qui sont theoriquement a meme distance #
$Z                                      # se retrouvent a des distances tres legerement differentes (l'epsilon d'arrondi introduit    #
$Z                                      # dans les operations de normalisation dans le cas "Cnormaliser=VRAI")...                     #

$Z                            GenList   VRAI FAUX $xTV/COORD.1$COORD_X
$Z                            GenList   FAUX VRAI $xTV/COORD.1$COORD_Y
$Z                  else
$Z                  endif

$Z                  alias     GenAlea   'set  No=\!:1 ; set Gr=\!:2 ; set FiG=\!:3 ; set In=\!:4 ; set Su=\!:5 ; set FiR=\!:6     ;    \\
$Z                                       $DELETE   $FiR                                                                           ;    \\
$Z                                       $xrv/val_alea.01$X  ne=$No graine=$Gr                                                         \\
$Z                                                 LISTE_BORNES_INFERIEURES=$In LISTE_BORNES_SUPERIEURES=$Su                           \\
$Z                                                 LISTE_INCREMENTS_DE_LA_GRAINE=$FiG                                                  \\
$Z                                                                                                                      > $FiR    ;    \\
$Z                                       unset     No Gr In Su FiR'
$Z                  alias     GenAleaC  'set  No=\!:1 ; set Gr=\!:2 ; set FiG=\!:3 ; set In=\!:4 ; set Su=\!:5 ; set FiR=\!:6     ;    \\
$Z                                       $DELETE   $FiR                                                                           ;    \\
$Z                             set       InD=`calcul -($Su-$In)/$_____FBrownien` ; set SuD=`calcul +($Su-$In)/$_____FBrownien`    ;    \\
$Z                                       $xrv/val_alea.01$X  ne=$No 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                                                 LISTE_INCREMENTS_DE_LA_GRAINE=$FiG                                                  \\
$Z                                                                                                                      > $FiR    ;    \\
$Z                                       unset     No Gr In Su InD SuD FiR'

$Z                  set       NPointsX=`$CA $xTV/COORD.1$COORD_X | $WCl`
$Z                  set       NPointsY=`$CA $xTV/COORD.1$COORD_Y | $WCl`
$Z                  set       NPointsXY=`$xcg/MIN2.01$X x=$NPointsX y=$NPointsY entier=VRAI signe="$K_VIDE"`
$Z                                      # Le 'signe="$K_VIDE"' a ete introduit le 20051206120145 a cause du '@ _____NVoisins' qui     #
$Z                                      # va suivre...                                                                                #

$Z                  set       MinZ=`$xci/coordonnees$X denormaliser=VRAI abscisse=FAUX ordonnee=FAUX profondeur=VRAI Zf=$_____MinZ`
$Z                  set       MaxZ=`$xci/coordonnees$X denormaliser=VRAI abscisse=FAUX ordonnee=FAUX profondeur=VRAI Zf=$_____MaxZ`
$Z                                      # Introduit le 20051204121509 afin que la coordonnee 'Z' soit denormalisee comme le sont      #
$Z                                      # les coordonnees {X,Y}...                                                                    #

$Z                  if        ($?_____ImageA == $EXIST) then
$Z                                      # Test introduit le 20051215091957...                                                         #
$Z                            if        ($?_____FBrownien == $EXIST) then
$Z                                      GenAleaC  $NPointsXY $Graine_Z 0 $MinZ $MaxZ $xTV/COORD.1$COORD_Z
$Z                            else
$Z                                      GenAlea   $NPointsXY $Graine_Z 0 $MinZ $MaxZ $xTV/COORD.1$COORD_Z
$Z                            endif
$Z                  else
$Z                  endif

$Z                  $DELETE   $xTV/VOISINS

$Z                  if        ($?_____SelectionV == $EXIST) then
$Z                                      # Test introduit le 20051206115045...                                                         #
$Z                            $xrv/maj_un.01$X    ne=$NPointsXY                                                                         \
$Z                                                fichier=$NEXIST                                                                       \
$Z                                                index=$_____SelectionV                                                                \
$Z                                                valeur=$EXIST                                                                         \
$Z                                                                                                  > $xTV/VOISINS
$Z                                      # Cas ou l'on ne va selectionner que les premiers voisins de rang '$_____SelectionV'...       #
$Z                            @         _____NVoisins = $NPointsXY - 1
$Z                  else
$Z                            $xrv/neutre$X       ne=$NPointsXY                                                                         \
$Z                                                fichier=$EXIST                                                                        \
$Z                                                                                                  > $xTV/VOISINS
$Z                                      # Cas ou tous les premiers voisins sont selectionnables...                                    #
$Z                  endif

$Z                  $DELETE   $xTV/DISTANCES

$Z                  $xrv/distance.02$X  ne=$NPointsXY                                                                                   \
$Z                                      LISTE_X=$xTV/COORD.1$COORD_X                                                                    \
$Z                                      LISTE_Y=$xTV/COORD.1$COORD_Y                                                                    \
$Z                                      LISTE_Z=$xTV/COORD.1$COORD_Z                                                                    \
$Z                                      LISTE_VOISIN=$xTV/VOISINS                                                                       \
$Z                                      premiers_voisins=VRAI N=$_____NVoisins                                                          \
$Z                                      editer_coordonnees_si_tri=VRAI bon_ordre_des_points_si_tri=FAUX                           |     \
$Z                  $SOR                                                                                                                \
$Z                                                                                        > $xTV/DISTANCES
$Z                                      # Cette operation cree des couples de points {I,J} tels qu'ils soient proches l'un de         #
$Z                                      # l'autre.                                                                                    #
$Z                                      #                                                                                             #
$Z                                      # Le '$SOR -u' a ete introduit le 20051203103544 afin de reduire le nombre de points a        #
$Z                                      # traiter. On notera que ce '$SOR' (qu'il ait ou pas l'option "-u"...) change l'ordre         #
$Z                                      # des points et donc les couleurs et les rayons qu'ils leur sont attribuees par tirage        #
$Z                                      # aleatoire ci-apres. Cela fut note le 20051203111009 et fut la cause du recalcul de          #
$Z                                      # l'image 'v $xiirv/ENTR.61' sur '$LACT15' (le calcul precedent ayant ete fait sur            #
$Z                                      # '$LACT16' sans ce '$SOR'...).                                                               #
$Z                                      #                                                                                             #
$Z                                      # On notera le 20051203105339, que les possibilites suivantes :                               #
$Z                                      #                                                                                             #
$Z                                      #                   bon_ordre_des_points_si_tri=VRAI                                          #
$Z                                      #                   $SOR                -u                                                    #
$Z                                      #                                                                                             #
$Z                                      # ont ete testees. Les consequences sont en fait la disparition de l'un des deux couples      #
$Z                                      # {I,J} et {J,I} (losrqu'ils sont presents tous les deux evidemment...). Or visuellement,     #
$Z                                      # cela fait deux liens distincts a cause de l'option "cubique=VRAI" lors de l'appel final     #
$Z                                      # a '$xrv/particule.10$X'. Il ne faut donc pas eliminer l'un des deux elements d'un couple    #
$Z                                      # qui apparait en double ; en resume, les deux couples {I,J} et {J,I} (losrqu'ils sont        #
$Z                                      # presents...) doivent donc etre conserves...                                                 #

$Z                  $DELETE   $xTV/DISTANCES_I
$Z                  $DELETE   $xTV/DISTANCES_J

$Z                  $CA                 $xTV/DISTANCES                                                                            |     \
$Z                  $SE                 -e "s/^.*pointI={//"                                                                            \
$Z                                      -e 's/^\([^ ][^ ]*\)} .*$/\1/'                                                                  \
$Z                                                                                        > $xTV/DISTANCES_I
$Z                                      # Recuperation de la liste des points 'I'.                                                    #
$Z                  $CA                 $xTV/DISTANCES                                                                            |     \
$Z                  $SE                 -e "s/^.*pointJ={//"                                                                            \
$Z                                      -e 's/^\([^ ][^ ]*\)} .*$/\1/'                                                                  \
$Z                                                                                        > $xTV/DISTANCES_J
$Z                                      # Recuperation de la liste des points 'J'.                                                    #

$Z                  $DELETE   $xTV/DISTANCES_I$COORD_X
$Z                  $DELETE   $xTV/DISTANCES_I$COORD_Y
$Z                  $DELETE   $xTV/DISTANCES_I$COORD_Z

$Z                  if        ($?_____ImageA == $EXIST) then
$Z                            set       NoRmAlIsE=$xrv/cNORMALISE$X
$Z                            set       NoRmAlIsE_pX="pX=1 pY=0 pZ=0"
$Z                            set       NoRmAlIsE_pY="pX=0 pY=1 pZ=0"
$Z                            set       NoRmAlIsE_pZ="pX=0 pY=0 pZ=1"
$Z                  else
$Z                            set       NoRmAlIsE=$xrv/neutre$X
$Z                            set       NoRmAlIsE_pX="$K_VIDE"
$Z                            set       NoRmAlIsE_pY="$K_VIDE"
$Z                            set       NoRmAlIsE_pZ="$K_VIDE"
$Z                  endif

$Z                  $CA                 $xTV/DISTANCES_I                                                                          |     \
$Z                  $R                  "," "$K_BLANC"                                                                            |     \
$Z                  $AW                 ' { print $1 } '                                                                          |     \
$Z                  $NoRmAlIsE          ne=0                                                                                            \
$Z                                      fichier==                                                                                       \
$Z                                      $NoRmAlIsE_pX                                                                                   \
$Z                                                                                        > $xTV/DISTANCES_I$COORD_X
$Z                  $CA                 $xTV/DISTANCES_I                                                                          |     \
$Z                  $R                  "," "$K_BLANC"                                                                            |     \
$Z                  $AW                 ' { print $2 } '                                                                          |     \
$Z                  $NoRmAlIsE          ne=0                                                                                            \
$Z                                      fichier==                                                                                       \
$Z                                      $NoRmAlIsE_pY                                                                                   \
$Z                                                                                        > $xTV/DISTANCES_I$COORD_Y
$Z                  $CA                 $xTV/DISTANCES_I                                                                          |     \
$Z                  $R                  "," "$K_BLANC"                                                                            |     \
$Z                  $AW                 ' { print $3 } '                                                                          |     \
$Z                  $NoRmAlIsE          ne=0                                                                                            \
$Z                                      fichier==                                                                                       \
$Z                                      $NoRmAlIsE_pZ                                                                                   \
$Z                                                                                        > $xTV/DISTANCES_I$COORD_Z

$Z                  $DELETE   $xTV/DISTANCES_J$COORD_X
$Z                  $DELETE   $xTV/DISTANCES_J$COORD_Y
$Z                  $DELETE   $xTV/DISTANCES_J$COORD_Z

$Z                  $CA                 $xTV/DISTANCES_J                                                                          |     \
$Z                  $R                  "," "$K_BLANC"                                                                            |     \
$Z                  $AW                 ' { print $1 } '                                                                          |     \
$Z                  $NoRmAlIsE          ne=0                                                                                            \
$Z                                      fichier==                                                                                       \
$Z                                      $NoRmAlIsE_pX                                                                                   \
$Z                                                                                        > $xTV/DISTANCES_J$COORD_X
$Z                  $CA                 $xTV/DISTANCES_J                                                                          |     \
$Z                  $R                  "," "$K_BLANC"                                                                            |     \
$Z                  $AW                 ' { print $2 } '                                                                          |     \
$Z                  $NoRmAlIsE          ne=0                                                                                            \
$Z                                      fichier==                                                                                       \
$Z                                      $NoRmAlIsE_pY                                                                                   \
$Z                                                                                        > $xTV/DISTANCES_J$COORD_Y
$Z                  $CA                 $xTV/DISTANCES_J                                                                          |     \
$Z                  $R                  "," "$K_BLANC"                                                                            |     \
$Z                  $AW                 ' { print $3 } '                                                                          |     \
$Z                  $NoRmAlIsE          ne=0                                                                                            \
$Z                                      fichier==                                                                                       \
$Z                                      $NoRmAlIsE_pZ                                                                                   \
$Z                                                                                        > $xTV/DISTANCES_J$COORD_Z

$Z                  $DELETE   $xTV/COORDONNEES$COORD_X
$Z                  $DELETE   $xTV/COORDONNEES$COORD_Y
$Z                  $DELETE   $xTV/COORDONNEES$COORD_Z

$Z                  $PAST               $xTV/DISTANCES_I$COORD_X $xTV/DISTANCES_J$COORD_X                                         |     \
$Z                  $R                  "$K_TAB" "$K_BLANC"                                                                       |     \
$Z                  $R                  "$K_BLANC" "$K_NL"                                                                              \
$Z                                                                                        > $xTV/COORDONNEES$COORD_X
$Z                  $PAST               $xTV/DISTANCES_I$COORD_Y $xTV/DISTANCES_J$COORD_Y                                         |     \
$Z                  $R                  "$K_TAB" "$K_BLANC"                                                                       |     \
$Z                  $R                  "$K_BLANC" "$K_NL"                                                                              \
$Z                                                                                        > $xTV/COORDONNEES$COORD_Y
$Z                  $PAST               $xTV/DISTANCES_I$COORD_Z $xTV/DISTANCES_J$COORD_Z                                         |     \
$Z                  $R                  "$K_TAB" "$K_BLANC"                                                                       |     \
$Z                  $R                  "$K_BLANC" "$K_NL"                                                                              \
$Z                                                                                        > $xTV/COORDONNEES$COORD_Z
$Z                                      # Generation des coordonnees des points (en couple...).                                       #
$Z                                      #                                                                                             #
$Z                                      # On notera la double transformation '$K_TAB' --> '$K_BLANC' --> '$K_NL' introduite le        #
$Z                                      # 20051205091859 afin de ne pas faire d'hypotheses implicites sur le separateur insere        #
$Z                                      # par '$R'...                                                                                 #

$Z                  set       NPointsX=`$CA $xTV/COORDONNEES$COORD_X | $WCl`
$Z                  set       NPointsY=`$CA $xTV/COORDONNEES$COORD_Y | $WCl`
$Z                  set       NPointsZ=`$CA $xTV/COORDONNEES$COORD_Z | $WCl`
#20220615104124____:$Z                  set       NPointsXYZ=`$xcg/MAX3.01$X x=$NPointsX y=$NPointsY z=$NPointsZ entier=VRAI`         #
$Z                  set       NPointsXYZ=`$xcg/MIN3.01$X x=$NPointsX y=$NPointsY z=$NPointsZ entier=VRAI`

$Z                  $DELETE   $xTV/INCREMENT

$Z                  $xrv/LIN3.11$X      ne=$NPointsXYZ                                                                                  \
$Z                                      alpha=1e8 fichier1=$xTV/COORDONNEES$COORD_X                                                     \
$Z                                      beta=1e4  fichier2=$xTV/COORDONNEES$COORD_Y                                                     \
$Z                                      gamma=1e0 fichier3=$xTV/COORDONNEES$COORD_Z                                                     \
$Z                                      formater=VRAI entiers=VRAI                                                                      \
$Z                                                                                        > $xTV/INCREMENT
$Z                                      # Ceci est destine a generer une liste '$xTV/INCREMENT' de valeurs entieres telle qu'avec     #
$Z                                      # une forte probabilite, deux points {X1,Y1,Z1} et {X2,Y2,Z2} differents donneront dans       #
$Z                                      # cette liste des valeurs entieres differentes. Inversement, un meme point {X,Y,Z}, s'il      #
$Z                                      # figure plusieurs fois dans les fichiers '$xTV/COORDONNEES*', aura toujours la meme "clef"   #
$Z                                      # entiere dans '$xTV/INCREMENT' ce qui permettra alors dans 'GenAlea' et 'GenAleaC' de        #
$Z                                      # generer les memes valeurs aleatoires pour ce point, meme donc si ce dernier apparait        #
$Z                                      # plusieurs fois...                                                                           #
$Z                                      #                                                                                             #
$Z                                      # Le 20051221102243, je note que c'est ce dispositif qui fait que, par exemple, les deux      #
$Z                                      # images 'v $xiirv/ENTR.C2' et 'v $xiirv/ENTR.C2.0' n'ont pas les memes couleurs en ce qui    #
$Z                                      # concerne l'entrelacs car, en effet, ces deux images ne sont pas calculees avec les memes    #
$Z                                      # echelles ; cela fait que les coordonnees des points identiques different d'une image a      #
$Z                                      # l'autre. Cela est vrai aussi pour 'v $xiirv/ENTR.D1' et 'v $xiirv/ENTR.D1.0' ou encore      #
$Z                                      # pour 'v $xiirv/ENTR.E1' et 'v $xiirv/ENTR.E1.0'. Pour que les couleurs (et les rayons       #
$Z                                      # lorsqu'ils sont aleatoires...), il suffit de faire que '$_____Zoom' soit egal au rapport    #
$Z                                      # de zoom par defaut de '$SurfaceEffective' qui peut etre connu grace a :                     #
$Z                                      #                                                                                             #
$Z                                      #                   GetParam  $SurfaceEffective   ZOOM                                        #
$Z                                      #                                                                                             #

$Z                  GenAlea   $NPointsXYZ $Graine_R $xTV/INCREMENT $_____NiveauR_D $_____NiveauR_A $xTV/COULEURS$ROUGE
$Z                  GenAlea   $NPointsXYZ $Graine_V $xTV/INCREMENT $_____NiveauV_D $_____NiveauV_A $xTV/COULEURS$VERTE
$Z                  GenAlea   $NPointsXYZ $Graine_B $xTV/INCREMENT $_____NiveauB_D $_____NiveauB_A $xTV/COULEURS$BLEUE
$Z                                      # Generation des couleurs des points...                                                       #

$Z                  GenAlea   $NPointsXYZ $Graine_r $xTV/INCREMENT $_____RayonInf $_____RayonSup $xTV/RAYONS
$Z                                      # Generation des rayons des points...                                                         #

$Z                  if        ($?_____SurfaceA == $EXIST) then
$Z                            if        ($_____EntrelacsSurface == $EXIST) then
$Z                                      $CA                 $xTV/MAILLAGE$COORD_X                                                       \
$Z                                                                                                  >>! $xTV/COORDONNEES$COORD_X
$Z                                      $CA                 $xTV/MAILLAGE$COORD_Y                                                       \
$Z                                                                                                  >>! $xTV/COORDONNEES$COORD_Y
$Z                                      $CA                 $xTV/MAILLAGE$COORD_Z                                                       \
$Z                                                                                                  >>! $xTV/COORDONNEES$COORD_Z

$Z                                      $CA                 $xTV/MAILLAGE$ROUGE                                                         \
$Z                                                                                                  >>! $xTV/COULEURS$ROUGE
$Z                                      $CA                 $xTV/MAILLAGE$VERTE                                                         \
$Z                                                                                                  >>! $xTV/COULEURS$VERTE
$Z                                      $CA                 $xTV/MAILLAGE$BLEUE                                                         \
$Z                                                                                                  >>! $xTV/COULEURS$BLEUE

$Z                                      $CA                 $xTV/MAILLAGE$RAYON                                                         \
$Z                                                                                                  >>! $xTV/RAYONS

$Z                                      set       NPointsX=`$CA $xTV/COORDONNEES$COORD_X | $WCl`
$Z                                      set       NPointsY=`$CA $xTV/COORDONNEES$COORD_Y | $WCl`
$Z                                      set       NPointsZ=`$CA $xTV/COORDONNEES$COORD_Z | $WCl`
#20220615104124____:$Z                       set       NPointsXYZ=`$xcg/MAX3.01$X x=$NPointsX y=$NPointsY z=$NPointsZ entier=VRAI`    #
$Z                                      set       NPointsXYZ=`$xcg/MIN3.01$X x=$NPointsX y=$NPointsY z=$NPointsZ entier=VRAI`

$Z                                      $DELETE             $xTV/MAILLAGE$COORD_X
$Z                                      $DELETE             $xTV/MAILLAGE$COORD_Y
$Z                                      $DELETE             $xTV/MAILLAGE$COORD_Z

$Z                                      $DELETE             $xTV/MAILLAGE$ROUGE
$Z                                      $DELETE             $xTV/MAILLAGE$VERTE
$Z                                      $DELETE             $xTV/MAILLAGE$BLEUE

$Z                                      $DELETE             $xTV/MAILLAGE$RAYON
$Z                            else
$Z                            endif
$Z                  else
$Z                  endif

$Z                  $xrv/particule.10$X np=1 iterations=$NPointsXYZ                                                                     \
$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                                                                                         \
$Z                                      $ZoomParticule                                                                                  \
$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                                      equidistance=VRAI compatibilite_20051230=FAUX                                                   \
$Z                                      cubique=VRAI LISTE_dX=$_____Derivee LISTE_dY=$_____Derivee LISTE_dZ=$_____Derivee               \
$Z                                      RVB=VRAI                                                                                        \
$Z                                      N_AU_CARRE=$N_Au_CaRrE                                                                          \
$Z                                      $_____ParticulePara1                                                                            \
$Z                                      R=$_____ImageR                                                                                  \
$Z                                      chiffres=0                                                                                      \
$Z                                      CAL1=FAUX                                                                                       \
$Z                                                                                                                      $formatI
$Z                                      # Visualisation de l'entrelacs. Le 20051213153400, l'option "equidistance=VRAI" a ete         #
$Z                                      # introduite...                                                                               #
$Z                                      #                                                                                             #
$Z                                      # L'option "N_AU_CARRE=" a ete introduite le 20051226162037...                                #
$Z                                      #                                                                                             #
$Z                                      # L'extension '$_____ParticulePara1' a ete introduite le 20051230134713 pour l'image          #
$Z                                      # 'v $xiirv/ENTR.D1', de meme que le parametre "compatibilite_20051230=VRAI". Mais le         #
$Z                                      # 20051231094529, celui-ci est devenu "compatibilite_20051230=FAUX", ayant ete introduit      #
$Z                                      # via '$_____ParticulePara1' dans la description de toutes les images qui le demandaient      #
$Z                                      # dans 'v $xiirv/$Fnota compatibilite_20051230'. On notera que cela pourrait etre tout        #
$Z                                      # simplement supprime ci-dessus car il s'agit en effet de la valeur par defaut de ce          #
$Z                                      # parametre ('GetParam $xrv/particule.10$X compatibilite_20051230')...                        #

$Z                  if        ($?_____SurfaceA == $EXIST) then
$Z                                      # Test introduit le 20051215093125...                                                         #
$Z                            $DELETE             $xTV/COORDONNEES
$Z                  else
$Z                  endif

$Z                  $DELETE   $xTV/COORD.1$COORD_X
$Z                  $DELETE   $xTV/COORD.1$COORD_Y
$Z                  $DELETE   $xTV/COORD.1$COORD_Z
$Z                  $DELETE   $xTV/DISTANCES
$Z                  $DELETE   $xTV/DISTANCES_I
$Z                  $DELETE   $xTV/DISTANCES_J
$Z                  $DELETE   $xTV/DISTANCES_I$COORD_X
$Z                  $DELETE   $xTV/DISTANCES_I$COORD_Y
$Z                  $DELETE   $xTV/DISTANCES_I$COORD_Z
$Z                  $DELETE   $xTV/DISTANCES_J$COORD_X
$Z                  $DELETE   $xTV/DISTANCES_J$COORD_Y
$Z                  $DELETE   $xTV/DISTANCES_J$COORD_Z
$Z                  $DELETE   $xTV/COORDONNEES$COORD_X
$Z                  $DELETE   $xTV/COORDONNEES$COORD_Y
$Z                  $DELETE   $xTV/COORDONNEES$COORD_Z
$Z                  $DELETE   $xTV/INCREMENT
$Z                  $DELETE   $xTV/COULEURS$ROUGE
$Z                  $DELETE   $xTV/COULEURS$VERTE
$Z                  $DELETE   $xTV/COULEURS$BLEUE
$Z                  $DELETE   $xTV/RAYONS



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.