#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D ' U N   M A I L L A G E   D E F O R M E  :                                                          #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.MAIL.11.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20150526084800).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____MaillageTri              FAUX
$Z                                      # Parametre introduit le 20150608130856...                                                    #

$Z                  setParam            _____MaillageTriAlea          FAUX
$Z                                      # Parametre introduit le 20150608130856...                                                    #

$Z                  setParam            _____MaillageTriMont          VRAI
$Z                                      # Parametre introduit le 20150608130856...                                                    #

$Z                  setParam            _____MaillageTriDesc          VRAI
$Z                                      # Parametre introduit le 20150608130856...                                                    #

$Z                  setParam            _____MaillageGraine           1947
$Z                                      # Parametre introduit le 20150608130856...                                                    #

$Z                  setParam            _____ParamValeurs             "$K_VIDE"
$Z                                      # Parametre introduit le 20171109141609...                                                    #

$Z                  setParam            _____Z2D                      0
$Z                                      # Parametre introduit le 20150618102052...                                                    #

$Z                  SETParam            _____Optimise                 $NEXIST
$Z                                      # Parametre introduit le 20150617125917...                                                    #

$Z                  setParam            _____OIterations              1000
$Z                                      # Parametre introduit le 20150617133413...                                                    #

$Z                  SETParam            _____OConnexions              $NEXIST
$Z                                      # Parametre introduit le 20150619110956...                                                    #

$Z                  setParam            _____OSommerDistances         FAUX
$Z                                      # Parametre introduit le 20150619110956...                                                    #

$Z                  setParam            _____Pppp                `GetParam $xrv/optimise.23$X probabilite_perturber_point`
$Z                                      # Parametre introduit le 20150705093201...                                                    #

$Z                  setParam            _____Pprbs               `GetParam $xrv/optimise.23$X probabilite_refuser_bonne_solution`
$Z                                      # Parametre introduit le 20150705093201...                                                    #

$Z                  setParam            _____Ppams               `GetParam $xrv/optimise.23$X probabilite_accepter_mauvaise_solution`
$Z                                      # Parametre introduit le 20150705093201...                                                    #

$Z                  SETParam            _____Spherique                $NEXIST
$Z                                      # Parametre introduit le 20150601133419...                                                    #

$Z                  setParam            _____SpheriqueEtendue         FAUX
$Z                                      # Parametre introduit le 20150602154955...                                                    #

$Z                  setParam            _____NExtension               `GetParam $xrv/particule.10$X extension_spheriques`
$Z                                      # Parametre introduit le 20150602154955...                                                    #
$Z                                      #                                                                                             #
$Z                                      # Les extensions disponibles sont :                                                           #
$Z                                      #                                                                                             #
$Z                                      #                   1 = ellipsoide      ('v $xrv/particule.10$K EXTENSION_ellipsoid)          #
$Z                                      #                   2 = hyperboloide    ('v $xrv/particule.10$K EXTENSION_hyperboloid)        #
$Z                                      #                   3 = cylindre        ('v $xrv/particule.10$K EXTENSION_cylindre)           #
$Z                                      #                   4 = tore            ('v $xrv/particule.10$K EXTENSION_tore)               #
$Z                                      #                   5 = Mobius2D        ('v $xrv/particule.10$K EXTENSION_Mobius2D)           #
$Z                                      #                   6 = project2D       ('v $xrv/particule.10$K EXTENSION_project2D)          #
$Z                                      #                                                                                             #
$Z                                      # (voir a ce propos 'v $xrv/particule.10$K nom_des_EXTENSIONS_DES_COORDONNEES_SPHERIQUES').   #

$Z                  setParam            _____SpheriqueP01             `GetParam $xrv/particule.10$X parametre_01`
$Z                                      # Parametre introduit le 20150602154955...                                                    #

$Z                  setParam            _____SpheriqueP02             `GetParam $xrv/particule.10$X parametre_02`
$Z                                      # Parametre introduit le 20150602154955...                                                    #

$Z                  setParam            _____SpheriqueP03             `GetParam $xrv/particule.10$X parametre_03`
$Z                                      # Parametre introduit le 20150602154955...                                                    #

$Z                  setParam            _____SpheriqueP04             `GetParam $xrv/particule.10$X parametre_04`
$Z                                      # Parametre introduit le 20150602154955...                                                    #

$Z                  setParam            _____SpheriqueP05             `GetParam $xrv/particule.10$X parametre_05`
$Z                                      # Parametre introduit le 20150602154955...                                                    #

$Z                  setParam            _____ONormaliseX              0
$Z                                      # Parametre introduit le 20150603090805...                                                    #

$Z                  setParam            _____ENormaliseX              $pi
$Z                                      # Parametre introduit le 20150602134902...                                                    #
$Z                                      #                                                                                             #
$Z                                      # La coordonnee 'X' va donc etre associee a 'THETA' dans [0,pi].                              #

$Z                  setParam            _____ONormaliseY              0
$Z                                      # Parametre introduit le 20150603090805...                                                    #

$Z                  setParam            _____ENormaliseY              $dpi
$Z                                      # Parametre introduit le 20150602134902...                                                    #
$Z                                      #                                                                                             #
$Z                                      # La coordonnee 'Y' va donc etre associee a 'PHI' dans [0,2.pi].                              #

$Z                  setParam            _____ONormaliseZ              0
$Z                                      # Parametre introduit le 20150603090805...                                                    #

$Z                  setParam            _____ENormaliseZ              1
$Z                                      # Parametre introduit le 20150602134902...                                                    #
$Z                                      #                                                                                             #
$Z                                      # La coordonnee 'Z' va donc etre associee a 'RAYON' dans [0,1].                               #

$Z                  SETParam            _____Periodise                $NEXIST
$Z                                      # Parametre introduit le 20150603155343...                                                    #

$Z                  setParam            _____AlphaX                   1.1

$Z                  setParam            _____BetaX                    -0.05

$Z                  setParam            _____AlphaY                   1.1

$Z                  setParam            _____BetaY                    -0.05

$Z                  setParam            _____AlphaZ                   1.1

$Z                  setParam            _____BetaZ                    -0.05
$Z                                      # On notera que {{AlphaX,BetaX},{AlphaY,BetaY},{AlphaZ,BetaZ}} ont des valeurs par defaut     #
$Z                                      # telles que le carre "exterieur" ait un cote superieur a 1 (egal a 1.1) tout en etant        #
$Z                                      # centre via les translations de -0.05. Ainsi, ce carre "exterieur" ne sera pas deforme,      #
$Z                                      # seul la plus grande partie de son interieur le sera...                                      #

$Z                  setParam            _____DistanceMini             0.005

$Z                  setParam            _____Cubique                  FAUX

$Z                  setParam            _____GDerivees                1.0

$Z                  setParam            _____VRayon                   0.008

$Z                  setParam            _____Palette                  $xiP/arc_ciel.C1

$Z                  setParam            _____Grossissement            2.0

$Z                  setParam            _____DepthCueing              `GetParam $xrv/particule.10$X Zminimum`
$Z                                      # Parametre introduit le 20150530112354...                                                    #
$Z                                      #                                                                                             #
$Z                                      # On rappelle que :                                                                           #
$Z                                      #                                                                                             #
$Z                                      #                   _____DepthCueing=1          : pas de depth-cueing,                        #
$Z                                      #                   _____DepthCueing=0          : depth-cueing maximal.                       #
$Z                                      #                                                                                             #

$Z                  setParam            _____Speculaire               `GetParam $xrv/particule.10$X speculaire`

$Z                  setParam            _____Zoom                     0.95

$Z                  setParam            _____RotationX                0

$Z                  setParam            _____RotationY                0

$Z                  setParam            _____RotationZ                0

$Z                  setParam            _____NAuCarre                 FAUX

$Z                  setParam            _____ParticulePara1           "$K_VIDE"

$Z                  FilSTmpB            FiLePoInTs

$Z                  SformatI

$Z                  XYmaxNe             $_____MailleX $_____MailleY

$Z                  set                 AVaLeUrS="$K_VIDE"
$Z                  set                 AVaLeUrS="$AVaLeUrS"" maillage=VRAI"
$Z                  set                 AVaLeUrS="$AVaLeUrS"" maillage_triangulaire=$_____MaillageTri"
$Z                  set                 AVaLeUrS="$AVaLeUrS"" maillage_triangulaire_aleatoire=$_____MaillageTriAlea"
$Z                  set                 AVaLeUrS="$AVaLeUrS"" graine=$_____MaillageGraine"
$Z                  set                 AVaLeUrS="$AVaLeUrS"" maillage_triangulaire_montant=$_____MaillageTriMont"
$Z                  set                 AVaLeUrS="$AVaLeUrS"" maillage_triangulaire_descendant=$_____MaillageTriDesc"
$Z                  set                 AVaLeUrS="$AVaLeUrS"" origine_extremite_meme_ligne=VRAI"
$Z                  set                 AVaLeUrS="$AVaLeUrS"" $_____ParamValeurs"
$Z                                      # La reference a '$_____ParamValeurs' a ete introduite le 20171109141609...                   #

$Z                  if                  ($_____Dimension == 2) then
$Z                                      set                 NPoInTsMaXiMuM=`calcul ($_____MailleX+1)*($_____MailleY+1)*4*2`

$Z                                      # Je rappelle le 20171109110625 que c'est 'v $xci/valeurs_imag$K' qui genere le maillage      #
$Z                                      # rectangulaire ou triangulaire...                                                            #

$Z                                      $xci/valeurs_imag$X                                                                             \
$Z                                                          premiere=1 derniere=$NPoInTsMaXiMuM                                         \
$Z                                                          PX=1 PY=0                                                                   \
$Z                                                          $AVaLeUrS                                                                   \
$Z                                                                                                  $formatI                            \
$Z                                                                              >>! $FiLePoInTs.1$COORD_X

$Z                                      $xci/valeurs_imag$X                                                                             \
$Z                                                          premiere=1 derniere=$NPoInTsMaXiMuM                                         \
$Z                                                          PX=0 PY=1                                                                   \
$Z                                                          $AVaLeUrS                                                                   \
$Z                                                                                                  $formatI                            \
$Z                                                                              >>! $FiLePoInTs.1$COORD_Y
$Z                                      # La possibilite de maillages triangulaires montant et descendant a ete introduite le         #
$Z                                      # 20150530102042. On notera alors que le maillage n'est plus plan car, en effet, les          #
$Z                                      # aretes montantes et descendantes se croisent alors...                                       #

$Z                                      $PAST               $FiLePoInTs.1$COORD_X $FiLePoInTs.1$COORD_Y                           |     \
$Z                                      $R                  "$K_TAB" "$K_BLANC"                                                   |     \
$Z                                      $SOR                -u                                                                          \
$Z                                                                              >>! $FiLePoInTs.2
$Z                                      # Ainsi, on supprime les segments {{XA,YA},{XB,YB}} redondants (on notera que ci-dessus       #
$Z                                      # la manipulation porte en fait sur des listes du type {{XA,XB},{YA,YB}}...).                 #

$Z                                      $CA                 $FiLePoInTs.2                                                         |     \
$Z                                      $AW                 ' { print $1 " " $2 } '                                               |     \
$Z                                      $R                  "$K_BLANC" "$K_NL"                                                          \
$Z                                                                              >>! $FiLePoInTs.2$COORD_X

$Z                                      $CA                 $FiLePoInTs.2                                                         |     \
$Z                                      $AW                 ' { print $3 " " $4 } '                                               |     \
$Z                                      $R                  "$K_BLANC" "$K_NL"                                                          \
$Z                                                                              >>! $FiLePoInTs.2$COORD_Y

$Z                                      $PAST               $FiLePoInTs.2$COORD_X $FiLePoInTs.2$COORD_Y                           |     \
$Z                                      $SE                 -e 's/^.*$'"/$_____Z2D/"                                                    \
$Z                                                                              >>! $FiLePoInTs.2$COORD_Z
$Z                  else
$Z                                      # Je rappelle le 20171109110625 que c'est 'v $xci/valeurs_imag$K' qui genere le maillage      #
$Z                                      # parallelepipedique ou triangulaire...                                                       #

$Z                                      $xci/valeurs_albu$X                                                                             \
$Z                                                          PX=1 PY=0 PZ=0                                                              \
$Z                                                          $AVaLeUrS                                                                   \
$Z                                                                                                  $formatI Zmax=$_____MailleZ         \
$Z                                                                              >>! $FiLePoInTs.1$COORD_X

$Z                                      $xci/valeurs_albu$X                                                                             \
$Z                                                          PX=0 PY=1 PZ=0                                                              \
$Z                                                          $AVaLeUrS                                                                   \
$Z                                                                                                  $formatI Zmax=$_____MailleZ         \
$Z                                                                              >>! $FiLePoInTs.1$COORD_Y

$Z                                      $xci/valeurs_albu$X                                                                             \
$Z                                                          PX=0 PY=0 PZ=1                                                              \
$Z                                                          $AVaLeUrS                                                                   \
$Z                                                                                                  $formatI Zmax=$_____MailleZ         \
$Z                                                                              >>! $FiLePoInTs.1$COORD_Z

$Z                                      $PAST               $FiLePoInTs.1$COORD_X $FiLePoInTs.1$COORD_Y $FiLePoInTs.1$COORD_Z     |     \
$Z                                      $R                  "$K_TAB" "$K_BLANC"                                                   |     \
$Z                                      $SOR                -u                                                                          \
$Z                                                                              >>! $FiLePoInTs.2
$Z                                      # Ainsi, on supprime les segments {{XA,YA,ZA},{XB,YB,ZB}} redondants (on notera que ci-dessus #
$Z                                      # la manipulation porte en fait sur des listes du type {{XA,XB},{YA,YB},{ZA,ZB}}...).         #

$Z                                      $CA                 $FiLePoInTs.2                                                         |     \
$Z                                      $AW                 ' { print $1 " " $2 } '                                               |     \
$Z                                      $R                  "$K_BLANC" "$K_NL"                                                          \
$Z                                                                              >>! $FiLePoInTs.2$COORD_X

$Z                                      $CA                 $FiLePoInTs.2                                                         |     \
$Z                                      $AW                 ' { print $3 " " $4 } '                                               |     \
$Z                                      $R                  "$K_BLANC" "$K_NL"                                                          \
$Z                                                                              >>! $FiLePoInTs.2$COORD_Y

$Z                                      $CA                 $FiLePoInTs.2                                                         |     \
$Z                                      $AW                 ' { print $5 " " $6 } '                                               |     \
$Z                                      $R                  "$K_BLANC" "$K_NL"                                                          \
$Z                                                                              >>! $FiLePoInTs.2$COORD_Z
$Z                  endif

$Z                  RformatI

$Z                  set                 NPoInTsX=`$CA $FiLePoInTs.2$COORD_X | $WCl`
$Z                  set                 NPoInTsY=`$CA $FiLePoInTs.2$COORD_Y | $WCl`
$Z                  set                 NPoInTsZ=`$CA $FiLePoInTs.2$COORD_Z | $WCl`
$Z                  set                 NPoInTs=`$xcg/MIN3.01$X x=$NPoInTsX y=$NPoInTsY z=$NPoInTsZ signe="$K_VIDE"`

$Z                  if                  ($_____Periodise == $EXIST) then
$Z                                      # Possibilite introduite le 20150603155343...                                                 #
$Z                                      $xci/periodise.11$X                                                                             \
$Z                                                          A=$xTV/DEFORMATION.                                                         \
$Z                                                          postfixe=$COORD_X premiere=0                                                \
$Z                                                          standard=FAUX                                                               \
$Z                                                          R=$xTV/DEFORMATION.                                                         \
$Z                                                                                                  $formatI Zmax=$_____MailleZ

$Z                                      $xci/periodise.11$X                                                                             \
$Z                                                          A=$xTV/DEFORMATION.                                                         \
$Z                                                          postfixe=$COORD_Y premiere=0                                                \
$Z                                                          standard=FAUX                                                               \
$Z                                                          R=$xTV/DEFORMATION.                                                         \
$Z                                                                                                  $formatI Zmax=$_____MailleZ

$Z                                      $xci/periodise.11$X                                                                             \
$Z                                                          A=$xTV/DEFORMATION.                                                         \
$Z                                                          postfixe=$COORD_Z premiere=0                                                \
$Z                                                          standard=FAUX                                                               \
$Z                                                          R=$xTV/DEFORMATION.                                                         \
$Z                                                                                                  $formatI Zmax=$_____MailleZ
$Z                                      # Pour les objets "periodiques" (comme un tore, il peut etre utile de periodiser les          #
$Z                                      # champs de deformation : 'v $xiirv/MAI3.72' ou 'v $xiirv/MAI3.72' par exemple)...            #
$Z                  else
$Z                  endif

$Z                  set                 ANoRmAlIsE="ne=0 fichier=="

$Z                  if                  ($_____Spherique == $NEXIST) then
$Z                                      # Possibilite introduite le 20150601133419...                                                 #
$Z                                      set                 NoRmAlIsE_X="$xrv/neutre$X $ANoRmAlIsE"
$Z                                      set                 NoRmAlIsE_Y="$xrv/neutre$X $ANoRmAlIsE"
$Z                                      set                 NoRmAlIsE_Z="$xrv/neutre$X $ANoRmAlIsE"
$Z                  else
$Z                                      if                  ($_____Periodise == $NEXIST) then
$Z                                      # Possibilite introduite le 20150604132634...                                                 #
$Z                                                          set                 PeRiOdIsE_XY="$K_VIDE"
$Z                                      else
$Z                                                          set                 PeRiOdIsE_XY="normaliser=FAUX AXPB=VRAI"
$Z                                      # Un probleme est apparu avec l'image 'v $xiirv/MAI3.72' qui presente un tore dont le         #
$Z                                      # maillage est deforme fractalement. La coordonnee 'Y' est dans '[0,1] avant deformation.     #
$Z                                      # Il s'agit en fait de la future coordonnee 'PHI' qui est a priori dans [0,2.pi], mais doit   #
$Z                                      # pouvoir en sortir lors de la deformation et ce afin de garantir la periodicite et donc le   #
$Z                                      # bon refermement du tore...                                                                  #
$Z                                      endif

$Z                                      set                 NoRmAlIsE_X="$K_VIDE"
$Z                                      set                 NoRmAlIsE_X="$NoRmAlIsE_X"" $xrv/normalise.01$X $ANoRmAlIsE"
$Z                                      set                 NoRmAlIsE_X="$NoRmAlIsE_X"" origine=$_____ONormaliseX"
$Z                                      set                 NoRmAlIsE_X="$NoRmAlIsE_X"" extremite=$_____ENormaliseX"
$Z                                      set                 NoRmAlIsE_X="$NoRmAlIsE_X"" $PeRiOdIsE_XY"
$Z                                      # La coordonnee 'X' va donc etre associee a 'THETA' dans [0,pi].                              #
$Z                                      set                 NoRmAlIsE_Y="$K_VIDE"
$Z                                      set                 NoRmAlIsE_Y="$NoRmAlIsE_Y"" $xrv/normalise.01$X $ANoRmAlIsE"
$Z                                      set                 NoRmAlIsE_Y="$NoRmAlIsE_Y"" origine=$_____ONormaliseY"
$Z                                      set                 NoRmAlIsE_Y="$NoRmAlIsE_Y"" extremite=$_____ENormaliseY"
$Z                                      set                 NoRmAlIsE_Y="$NoRmAlIsE_Y"" $PeRiOdIsE_XY"
$Z                                      # La coordonnee 'Y' va donc etre associee a 'PHI' dans [0,2.pi].                              #
$Z                                      set                 NoRmAlIsE_Z="$K_VIDE"
$Z                                      set                 NoRmAlIsE_Z="$NoRmAlIsE_Z"" $xrv/normalise.01$X $ANoRmAlIsE"
$Z                                      set                 NoRmAlIsE_Z="$NoRmAlIsE_Z"" origine=$_____ONormaliseZ"
$Z                                      set                 NoRmAlIsE_Z="$NoRmAlIsE_Z"" extremite=$_____ENormaliseZ"
$Z                                      set                 NoRmAlIsE_Z="$NoRmAlIsE_Z"" ignorer_uniformite=FAUX vu=$_____ENormaliseZ"
$Z                                      # La coordonnee 'Z' va donc etre associee a 'RAYON' dans [0,1].                               #
$Z                  endif

$Z                  set                 ADeFoRmE="$K_VIDE"
$Z                  set                 ADeFoRmE="$ADeFoRmE"" ne=$NPoInTs"
$Z                  set                 ADeFoRmE="$ADeFoRmE"" alpha_X=$_____AlphaX beta_X=$_____BetaX"
$Z                  set                 ADeFoRmE="$ADeFoRmE"" LISTE_X=$FiLePoInTs.2$COORD_X"
$Z                  set                 ADeFoRmE="$ADeFoRmE"" alpha_Y=$_____AlphaY beta_Y=$_____BetaY"
$Z                  set                 ADeFoRmE="$ADeFoRmE"" LISTE_Y=$FiLePoInTs.2$COORD_Y"
$Z                  set                 ADeFoRmE="$ADeFoRmE"" alpha_Z=$_____AlphaZ beta_Z=$_____BetaZ"
$Z                  set                 ADeFoRmE="$ADeFoRmE"" LISTE_Z=$FiLePoInTs.2$COORD_Z"
$Z                  set                 ADeFoRmE="$ADeFoRmE"" DX=$xTV/DEFORMATION. postfixeDX=$COORD_X prDX=0"
$Z                  set                 ADeFoRmE="$ADeFoRmE"" DY=$xTV/DEFORMATION. postfixeDY=$COORD_Y prDY=0"
$Z                  set                 ADeFoRmE="$ADeFoRmE"" DZ=$xTV/DEFORMATION. postfixeDZ=$COORD_Z prDZ=0"

$Z                  $xrv/deforme.11$X                                                                                                   \
$Z                                      $ADeFoRmE                                                                                       \
$Z                                      PX=1 PY=0 PZ=0                                                                                  \
$Z                                                                              $formatI Zmax=$_____MailleZ                       |     \
$Z                  $NoRmAlIsE_X                                                                                                        \
$Z                                                          >>! $FiLePoInTs.3$COORD_X

$Z                  $xrv/deforme.11$X                                                                                                   \
$Z                                      $ADeFoRmE                                                                                       \
$Z                                      PX=0 PY=1 PZ=0                                                                                  \
$Z                                                                              $formatI Zmax=$_____MailleZ                       |     \
$Z                  $NoRmAlIsE_Y                                                                                                        \
$Z                                                          >>! $FiLePoInTs.3$COORD_Y

$Z                  $xrv/deforme.11$X                                                                                                   \
$Z                                      $ADeFoRmE                                                                                       \
$Z                                      PX=0 PY=0 PZ=1                                                                                  \
$Z                                                                              $formatI Zmax=$_____MailleZ                       |     \
$Z                  $NoRmAlIsE_Z                                                                                                        \
$Z                                                          >>! $FiLePoInTs.3$COORD_Z

$Z                  if                  ($_____Optimise == $EXIST) then
$Z                                      # Possibilite introduite le 20150617125917...                                                 #
$Z                                      $PAST               $FiLePoInTs.3$COORD_X $FiLePoInTs.3$COORD_Y $FiLePoInTs.3$COORD_Z     |     \
$Z                                      $SOR                -u                                                                    |     \
$Z                                      $R                  "$K_TAB" "$K_BLANC"                                                         \
$Z                                                                              > $FiLePoInTs.4
$Z                                      # Construction de la liste des points differents (en effet dans '$FiLePoInTs.3' chaque point  #
$Z                                      # apparait en general plusieurs fois et ce dans des mailles differentes mais adjacentes.      #

$Z                                      set                 NSuBsTiTuTiOnS=`$CA $FiLePoInTs.4 | $WCl`

$Z                                      $CA                 $FiLePoInTs.4                                                         |     \
$Z                                      $AW                 ' { print $1 } '                                                            \
$Z                                                                              > $FiLePoInTs.4$COORD_X
$Z                                      $CA                 $FiLePoInTs.4                                                         |     \
$Z                                      $AW                 ' { print $2 } '                                                            \
$Z                                                                              > $FiLePoInTs.4$COORD_Y
$Z                                      $CA                 $FiLePoInTs.4                                                         |     \
$Z                                      $AW                 ' { print $3 } '                                                            \
$Z                                                                              > $FiLePoInTs.4$COORD_Z

$Z                                      if                  ($_____OConnexions == $NEXIST) then
$Z                                      # Possibilite introduite le 20150619110956...                                                 #
$Z                                                          set                 AOpTiMiSe="connexions=FAUX"

$Z                                                          @                   NCoNnExIoNs = $NPoInTs / 1
$Z                                      else
$Z                                                          set                 AUnSuRn="Men_tete=FAUX paquets=2"
$Z                                                          set                 PaIrS="premier=VRAI dernier=FAUX"
$Z                                                          set                 ImPaIrS="premier=FAUX dernier=VRAI"

$Z                                                          $xrv/un_sur_N.01$X                                                          \
$Z                                                                              ne=0                                                    \
$Z                                                                              fichier=$FiLePoInTs.3$COORD_X                           \
$Z                                                                              $AUnSuRn                                                \
$Z                                                                              $PaIrS                                                  \
$Z                                                                                                  >>! $FiLePoInTs.A$COORD_X
$Z                                                          $xrv/un_sur_N.01$X                                                          \
$Z                                                                              ne=0                                                    \
$Z                                                                              fichier=$FiLePoInTs.3$COORD_Y                           \
$Z                                                                              $AUnSuRn                                                \
$Z                                                                              $PaIrS                                                  \
$Z                                                                                                  >>! $FiLePoInTs.A$COORD_Y
$Z                                                          $xrv/un_sur_N.01$X                                                          \
$Z                                                                              ne=0                                                    \
$Z                                                                              fichier=$FiLePoInTs.3$COORD_Z                           \
$Z                                                                              $AUnSuRn                                                \
$Z                                                                              $PaIrS                                                  \
$Z                                                                                                  >>! $FiLePoInTs.A$COORD_Z
$Z                                      # Recuperation de l'origine 'A' d'un segment.                                                 #

$Z                                                          $xrv/un_sur_N.01$X                                                          \
$Z                                                                              ne=0                                                    \
$Z                                                                              fichier=$FiLePoInTs.3$COORD_X                           \
$Z                                                                              $AUnSuRn                                                \
$Z                                                                              $ImPaIrS                                                \
$Z                                                                                                  >>! $FiLePoInTs.B$COORD_X
$Z                                                          $xrv/un_sur_N.01$X                                                          \
$Z                                                                              ne=0                                                    \
$Z                                                                              fichier=$FiLePoInTs.3$COORD_Y                           \
$Z                                                                              $AUnSuRn                                                \
$Z                                                                              $ImPaIrS                                                \
$Z                                                                                                  >>! $FiLePoInTs.B$COORD_Y
$Z                                                          $xrv/un_sur_N.01$X                                                          \
$Z                                                                              ne=0                                                    \
$Z                                                                              fichier=$FiLePoInTs.3$COORD_Z                           \
$Z                                                                              $AUnSuRn                                                \
$Z                                                                              $ImPaIrS                                                \
$Z                                                                                                  >>! $FiLePoInTs.B$COORD_Z
$Z                                      # Recuperation de l'origine 'B' d'un segment.                                                 #

$Z                                                          set       AOpTiMiSe="$K_VIDE"
$Z                                                          set       AOpTiMiSe="$AOpTiMiSe"" connexions=VRAI"
$Z                                                          set       AOpTiMiSe="$AOpTiMiSe"" CONNEXION_XA=$FiLePoInTs.A$COORD_X"
$Z                                                          set       AOpTiMiSe="$AOpTiMiSe"" CONNEXION_YA=$FiLePoInTs.A$COORD_Y"
$Z                                                          set       AOpTiMiSe="$AOpTiMiSe"" CONNEXION_ZA=$FiLePoInTs.A$COORD_Z"
$Z                                                          set       AOpTiMiSe="$AOpTiMiSe"" CONNEXION_XB=$FiLePoInTs.B$COORD_X"
$Z                                                          set       AOpTiMiSe="$AOpTiMiSe"" CONNEXION_YB=$FiLePoInTs.B$COORD_Y"
$Z                                                          set       AOpTiMiSe="$AOpTiMiSe"" CONNEXION_ZB=$FiLePoInTs.B$COORD_Z"

$Z                                                          @                   NCoNnExIoNs = $NPoInTs / 2
$Z                                      endif

$Z                                      $xrv/optimise.23$X  ne=$NSuBsTiTuTiOnS                                                          \
$Z                                                          nc=$NCoNnExIoNs                                                             \
$Z                                                          LISTE_X=$FiLePoInTs.4$COORD_X                                               \
$Z                                                          LISTE_Y=$FiLePoInTs.4$COORD_Y                                               \
$Z                                                          LISTE_Z=$FiLePoInTs.4$COORD_Z                                               \
$Z                                                          sommer_distances=$_____OSommerDistances                                     \
$Z                                                          probabilite_perturber_point=$_____Pppp                                      \
$Z                                                          probabilite_refuser_bonne_solution=$_____Pprbs                              \
$Z                                                          probabilite_accepter_mauvaise_solution=$_____Ppams                          \
$Z                                                          message_trop_de_perturbations=FAUX                                          \
$Z                                                          $AOpTiMiSe                                                                  \
$Z                                                          iterations=$_____OIterations                                                \
$Z                                                                              > $FiLePoInTs.5
$Z                                      # Tentative heuristique de l'equidistance des points voisins en coordonnees cartesiennes.     #

$Z                                      $CA                 $FiLePoInTs.5                                                         |     \
$Z                                      $AW                 ' { print $1 } '                                                      |     \
$Z                                      $SE                 -e 's/^.*=//'                                                               \
$Z                                                                              > $FiLePoInTs.6$COORD_X
$Z                                      $CA                 $FiLePoInTs.5                                                         |     \
$Z                                      $AW                 ' { print $2 } '                                                      |     \
$Z                                      $SE                 -e 's/^.*=//'                                                               \
$Z                                                                              > $FiLePoInTs.6$COORD_Y
$Z                                      $CA                 $FiLePoInTs.5                                                         |     \
$Z                                      $AW                 ' { print $3 } '                                                      |     \
$Z                                      $SE                 -e 's/^.*=//'                                                               \
$Z                                                                              > $FiLePoInTs.6$COORD_Z

$Z                                      $xrv/substitue.11.x ne=$NPoInTs ns=$NSuBsTiTuTiOnS                                              \
$Z                                                          LISTE_X=$FiLePoInTs.3$COORD_X                                               \
$Z                                                          LISTE_Y=$FiLePoInTs.3$COORD_Y                                               \
$Z                                                          LISTE_Z=$FiLePoInTs.3$COORD_Z                                               \
$Z                                                          RECHERCHER_OX=$FiLePoInTs.4$COORD_X                                         \
$Z                                                          RECHERCHER_OY=$FiLePoInTs.4$COORD_Y                                         \
$Z                                                          RECHERCHER_OZ=$FiLePoInTs.4$COORD_Z                                         \
$Z                                                          SUBSTITUTION_OX=$FiLePoInTs.6$COORD_X                                       \
$Z                                                          SUBSTITUTION_OY=$FiLePoInTs.6$COORD_Y                                       \
$Z                                                          SUBSTITUTION_OZ=$FiLePoInTs.6$COORD_Z                                       \
$Z                                                          pX=1 pY=0 pZ=0                                                              \
$Z                                                                              > $FiLePoInTs.7$COORD_X
$Z                                      # Deplacement selon 'OX' de chacun des points en fonction de l'heuristique precedente...      #

$Z                                      $xrv/substitue.11.x ne=$NPoInTs ns=$NSuBsTiTuTiOnS                                              \
$Z                                                          LISTE_X=$FiLePoInTs.3$COORD_X                                               \
$Z                                                          LISTE_Y=$FiLePoInTs.3$COORD_Y                                               \
$Z                                                          LISTE_Z=$FiLePoInTs.3$COORD_Z                                               \
$Z                                                          RECHERCHER_OX=$FiLePoInTs.4$COORD_X                                         \
$Z                                                          RECHERCHER_OY=$FiLePoInTs.4$COORD_Y                                         \
$Z                                                          RECHERCHER_OZ=$FiLePoInTs.4$COORD_Z                                         \
$Z                                                          SUBSTITUTION_OX=$FiLePoInTs.6$COORD_X                                       \
$Z                                                          SUBSTITUTION_OY=$FiLePoInTs.6$COORD_Y                                       \
$Z                                                          SUBSTITUTION_OZ=$FiLePoInTs.6$COORD_Z                                       \
$Z                                                          pX=0 pY=1 pZ=0                                                              \
$Z                                                                              > $FiLePoInTs.7$COORD_Y
$Z                                      # Deplacement selon 'OY' de chacun des points en fonction de l'heuristique precedente...      #

$Z                                      $xrv/substitue.11.x ne=$NPoInTs ns=$NSuBsTiTuTiOnS                                              \
$Z                                                          LISTE_X=$FiLePoInTs.3$COORD_X                                               \
$Z                                                          LISTE_Y=$FiLePoInTs.3$COORD_Y                                               \
$Z                                                          LISTE_Z=$FiLePoInTs.3$COORD_Z                                               \
$Z                                                          RECHERCHER_OX=$FiLePoInTs.4$COORD_X                                         \
$Z                                                          RECHERCHER_OY=$FiLePoInTs.4$COORD_Y                                         \
$Z                                                          RECHERCHER_OZ=$FiLePoInTs.4$COORD_Z                                         \
$Z                                                          SUBSTITUTION_OX=$FiLePoInTs.6$COORD_X                                       \
$Z                                                          SUBSTITUTION_OY=$FiLePoInTs.6$COORD_Y                                       \
$Z                                                          SUBSTITUTION_OZ=$FiLePoInTs.6$COORD_Z                                       \
$Z                                                          pX=0 pY=0 pZ=1                                                              \
$Z                                                                              > $FiLePoInTs.7$COORD_Z
$Z                                      # Deplacement selon 'OZ' de chacun des points en fonction de l'heuristique precedente...      #

$Z                                      $DELETE             $FiLePoInTs.3$COORD_X
$Z                                      $DELETE             $FiLePoInTs.3$COORD_Y
$Z                                      $DELETE             $FiLePoInTs.3$COORD_Z

$Z                                      $MV                 $FiLePoInTs.7$COORD_X $FiLePoInTs.3$COORD_X
$Z                                      $MV                 $FiLePoInTs.7$COORD_Y $FiLePoInTs.3$COORD_Y
$Z                                      $MV                 $FiLePoInTs.7$COORD_Z $FiLePoInTs.3$COORD_Z
$Z                                      # Et on fait "comme si de rien n'etait"...                                                    #
$Z                  else
$Z                  endif

$Z                  if                  ($_____Spherique == $NEXIST) then
$Z                                      # Possibilite introduite le 20150601133419...                                                 #
$Z                                      set                 APaRtIcUlE="$K_VIDE"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" LISTE_X=$FiLePoInTs.3$COORD_X"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" LISTE_Y=$FiLePoInTs.3$COORD_Y"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" LISTE_Z=$FiLePoInTs.3$COORD_Z"
$Z                                      # Cas d'une representation euclidienne {X,Y,Z}.                                               #
$Z                  else
$Z                                      set                 APaRtIcUlE="$K_VIDE"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" spheriques=VRAI"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" spheriques_etendues=$_____SpheriqueEtendue"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" AXYZ=1 BXYZ=0"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" LISTE_THETA=$FiLePoInTs.3$COORD_X"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" LISTE_PHI=$FiLePoInTs.3$COORD_Y"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" LISTE_RHO=$FiLePoInTs.3$COORD_Z"
$Z                                      # Cas d'une representation spherique {RHO,THETA,PHI}.                                         #
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" extension_spheriques=$_____NExtension"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" parametre_01=$_____SpheriqueP01"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" parametre_02=$_____SpheriqueP02"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" parametre_03=$_____SpheriqueP03"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" parametre_04=$_____SpheriqueP04"
$Z                                      set                 APaRtIcUlE="$APaRtIcUlE"" parametre_05=$_____SpheriqueP05"
$Z                                      # Aux cas ou il y aurait extension des coordonnees spheriques...                              #
$Z                  endif

$Z                  $xci/valeurs_inte$X                                                                                                 \
$Z                                      premiere=1 derniere=$NPoInTs                                                                    \
$Z                                      lineaire=VRAI                                                                                   \
$Z                                      vD=$NOIR_PLANCHER vA=$BLANC                                                                     \
$Z                                      entiers=VRAI                                                                                    \
$Z                                                                              $formatI Zmax=$_____MailleZ                             \
$Z                                                          >>! $FiLePoInTs.3$NIVEAU

$Z                  $xrv/particule.10$X npoints=$NPoInTs                                                                                \
$Z                                      $APaRtIcUlE                                                                                     \
$Z                                      isoles=FAUX chainer=FAUX                                                                        \
$Z                                      ajuster_points=VRAI                                                                             \
$Z                                      equidistance=VRAI                                                                               \
$Z                                      distance_minimale=$_____DistanceMini                                                            \
$Z                                      cubique=$_____Cubique                                                                           \
$Z                                      LISTE_dX=$_____GDerivees                                                                        \
$Z                                      LISTE_dY=$_____GDerivees                                                                        \
$Z                                      LISTE_dZ=$_____GDerivees                                                                        \
$Z                                      projection_parallele=FAUX                                                                       \
$Z                                      Vrayon=$_____VRayon                                                                             \
$Z                                      LISTE_NIVEAU=$FiLePoInTs.3$NIVEAU                                                               \
$Z                                      p=$_____Palette                                                                                 \
$Z                                      grossissement=$_____Grossissement                                                               \
$Z                                      Lz=1000                                                                                         \
$Z                                      speculaire=$_____Speculaire                                                                     \
$Z                                      Zminimum=$_____DepthCueing ZminimumT=$_____DepthCueing                                          \
$Z                                      Zmaximum=1 ZmaximumT=1                                                                          \
$Z                                      ZOOM=$_____Zoom                                                                                 \
$Z                                      ROTATION_OX=$_____RotationX                                                                     \
$Z                                      ROTATION_OY=$_____RotationY                                                                     \
$Z                                      ROTATION_OZ=$_____RotationZ                                                                     \
$Z                                      N_au_carre=$_____NAuCarre                                                                       \
$Z                                      editer_extrema_hors=FAUX                                                                        \
$Z                                      editer_mauvais_encadrement_niveaux_interpoles=FAUX                                              \
$Z                                      $_____ParticulePara1                                                                            \
$Z                                      chiffres=0                                                                                      \
$Z                                      R=$_____ImageR                                                                                  \
$Z                                                                              $formatI

$Z                  FilSTmpE            FiLePoInTs



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