#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D ' U N   P U Z Z L E  :                                                                              #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.PUZZ.11.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20180618093247).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  SETParam            _____VraiesCouleurs           $NEXIST
$Z                                      # Argument introduit le 20180621145712...                                                     #

$Z                  setParam            _____PaveX                    32

$Z                  setParam            _____PaveY                    64

$Z                  SETParam            _____FullRandom               $EXIST
$Z                                      # Argument introduit le 20180623073616...                                                     #

$Z                  setParam            _____GraineX                  1947

$Z                  setParam            _____GraineY                  1789

$Z                  SETParam            _____Grille                   $NEXIST

$Z                  SETParam            _____Niveau                   $NOIR

$Z                  setParam            _____ParamsGrille             "$K_VIDE"
$Z                                      # Argument introduit le 20180622132053...                                                     #

$Z                  _____include(_____xiirv/.PUZZ.11.2._____U)
$Z                                      # Introduit le 20180624081358 a cause de 'v $xiirv/.PUZZ.11.1.$U 20180623120530'...           #

$Z                  if                  ($_____VraiesCouleurs == $EXIST) then
$Z                                      set                 GeNeRe="execRVB"
$Z                                      set                 PoStFiXe="%s"
$Z                                      # Cas des vraies couleurs (introduit le 20180621145712).                                      #
$Z                  else
$Z                                      set                 GeNeRe="eval"
$Z                                      set                 PoStFiXe="$K_VIDE"
$Z                                      # Cas des fausses couleurs (introduit le 20180621145712).                                     #
$Z                  endif

$Z                  FileTmpB            FCoOrDoNnEeS

$Z                  set                 PaRaMeTrEs1="$K_VIDE"
$Z                  set                 PaRaMeTrEs1="$PaRaMeTrEs1"" premiere=1"
$Z                  set                 PaRaMeTrEs1="$PaRaMeTrEs1"" derniere=$tailleI"

$Z                  $xci/valeurs_imag$X                                                                                                 \
$Z                                      $PaRaMeTrEs1                                                                                    \
$Z                                      denormalisees=VRAI                                                                              \
$Z                                      PX=1 PY=0                                                                                       \
$Z                                                                    >  $FCoOrDoNnEeS.1$COORD_X

$Z                  $xci/valeurs_imag$X                                                                                                 \
$Z                                      $PaRaMeTrEs1                                                                                    \
$Z                                      denormalisees=VRAI                                                                              \
$Z                                      PX=0 PY=1                                                                                       \
$Z                                                                    >  $FCoOrDoNnEeS.1$COORD_Y
$Z                                      # Generation "sequentielle" des coordonnees 'X' et 'Y'.                                       #

$Z                  $xci/valeurs_imag$X                                                                                                 \
$Z                                      $PaRaMeTrEs1                                                                                    \
$Z                                      normalisees=VRAI                                                                                \
$Z                                      PX=1 PY=0                                                                                       \
$Z                                                                    >  $FCoOrDoNnEeS.4$COORD_X

$Z                  $xci/valeurs_imag$X                                                                                                 \
$Z                                      $PaRaMeTrEs1                                                                                    \
$Z                                      normalisees=VRAI                                                                                \
$Z                                      PX=0 PY=1                                                                                       \
$Z                                                                    >  $FCoOrDoNnEeS.4$COORD_Y
$Z                                      # Introduit le 20180618161323 afin d'avoir des ccoordonnees 'X' et 'Y' normalisees            #
$Z                                      # dans [0,1[ (et non pas dans [0,1]...                                                        #

$Z                  unset               PaRaMeTrEs1

$Z                  set                 PaRaMeTrEs1="$K_VIDE"
$Z                  set                 PaRaMeTrEs1="$PaRaMeTrEs1"" ne=$tailleI"

$Z                  $xrv/DivisionEuclidienne.11$X                                                                                       \
$Z                                      $PaRaMeTrEs1                                                                                    \
$Z                                      fichier1=$FCoOrDoNnEeS.1$COORD_X                                                                \
$Z                                      fichier2=$_____PaveX                                                                            \
$Z                                      pQ=1 pR=0                                                                                       \
$Z                                                                    >  $FCoOrDoNnEeS.Q.1$COORD_X

$Z                  $xrv/DivisionEuclidienne.11$X                                                                                       \
$Z                                      $PaRaMeTrEs1                                                                                    \
$Z                                      fichier1=$FCoOrDoNnEeS.1$COORD_X                                                                \
$Z                                      fichier2=$_____PaveX                                                                            \
$Z                                      pQ=0 pR=1                                                                                       \
$Z                                                                    >  $FCoOrDoNnEeS.R.1$COORD_X

$Z                  $xrv/DivisionEuclidienne.11$X                                                                                       \
$Z                                      $PaRaMeTrEs1                                                                                    \
$Z                                      fichier1=$FCoOrDoNnEeS.1$COORD_Y                                                                \
$Z                                      fichier2=$_____PaveY                                                                            \
$Z                                      pQ=1 pR=0                                                                                       \
$Z                                                                    >  $FCoOrDoNnEeS.Q.1$COORD_Y

$Z                  $xrv/DivisionEuclidienne.11$X                                                                                       \
$Z                                      $PaRaMeTrEs1                                                                                    \
$Z                                      fichier1=$FCoOrDoNnEeS.1$COORD_Y                                                                \
$Z                                      fichier2=$_____PaveY                                                                            \
$Z                                      pQ=0 pR=1                                                                                       \
$Z                                                                    >  $FCoOrDoNnEeS.R.1$COORD_Y
$Z                                      # Decomposition des coordonnees 'X' et 'Y' en des coordonnees de blocs ("Q" pour "Quotient")  #
$Z                                      # et des coordonnees a l'interieur de chaque bloc ("R" pour "Reste").                         #

$Z                  unset               PaRaMeTrEs1

$Z                  set                 MiNiMuM_QX=`$CA $FCoOrDoNnEeS.Q.1$COORD_X | $xrv/extrema.01$X ne=0 fichier== minimum_seul=VRAI`
$Z                  set                 MaXiMuM_QX=`$CA $FCoOrDoNnEeS.Q.1$COORD_X | $xrv/extrema.01$X ne=0 fichier== maximum_seul=VRAI`

$Z                  set                 MiNiMuM_QY=`$CA $FCoOrDoNnEeS.Q.1$COORD_Y | $xrv/extrema.01$X ne=0 fichier== minimum_seul=VRAI`
$Z                  set                 MaXiMuM_QY=`$CA $FCoOrDoNnEeS.Q.1$COORD_Y | $xrv/extrema.01$X ne=0 fichier== maximum_seul=VRAI`

$Z                  set                 PaRaMeTrEs1="$K_VIDE"
$Z                  set                 PaRaMeTrEs1="$PaRaMeTrEs1"" sans_collisions=VRAI"
$Z                  set                 PaRaMeTrEs1="$PaRaMeTrEs1"" message_borne_superieure_entiere=FAUX"
$Z                  set                 PaRaMeTrEs1="$PaRaMeTrEs1"" entier=VRAI"
$Z                  set                 PaRaMeTrEs1="$PaRaMeTrEs1"" signe='$K_VIDE'"
$Z                                      # On notera qu'ainsi il ne peut y avoir deux valeurs aleatoires identiques, mais que par      #
$Z                                      # contre il peut y en avoir deux (ou plus...) qui soient consecutives et qui vont donc        #
$Z                                      # faire apparaitre dans '$_____ImageR' des blocs qui sont consecutifs (soit horizontalement,  #
$Z                                      # soir verticalement) dans '$__ImageA'...                                                     #

$Z                  if                  ($_____FullRandom == $EXIST) then
$Z                                      # Cas ou l'ensemble des coordonnees 'X' et 'Y' sont permutees aleatoirement (test introduit   #
$Z                                      # le 20180623073822) :                                                                        #

$Z                                      set                 DiMeNsIoN_QXY=`calcul ($MaXiMuM_QY-$MiNiMuM_QY)+1`
$Z                                      $xrv/AXPB.11$X                                                                                  \
$Z                                                          ne=$tailleI                                                                 \
$Z                                                          fichierA=$DiMeNsIoN_QXY                                                     \
$Z                                                          fichier=$FCoOrDoNnEeS.Q.1$COORD_X                                           \
$Z                                                          fichierB=$FCoOrDoNnEeS.Q.1$COORD_Y                                          \
$Z                                                                                        >  $FCoOrDoNnEeS.Q.1$COORD_X$COORD_Y
$Z                                      # Rappelons que l'indexation bidimensionnelle des images :                                    #
$Z                                      #                                                                                             #
$Z                                      #                   image[Y][X]                                                               #
$Z                                      #                                                                                             #
$Z                                      # est du type monodimensionnel :                                                              #
$Z                                      #                                                                                             #
$Z                                      #                   image[(X*dimY)+Y]                                                         #
$Z                                      #                                                                                             #

$Z                       set  MiNiMuM_QXY=`$CA $FCoOrDoNnEeS.Q.1$COORD_X$COORD_Y | $xrv/extrema.01$X ne=0 fichier== minimum_seul=VRAI`
$Z                       set  MaXiMuM_QXY=`$CA $FCoOrDoNnEeS.Q.1$COORD_X$COORD_Y | $xrv/extrema.01$X ne=0 fichier== maximum_seul=VRAI`

$Z                                      $xci/valeurs_alea$X                                                                             \
$Z                                                          $PaRaMeTrEs1                                                                \
$Z                                                          premiere=$MiNiMuM_QXY  derniere=$MaXiMuM_QXY                                \
$Z                                                          inferieur=$MiNiMuM_QXY superieur=$MaXiMuM_QXY                               \
$Z                                                          graine=`calcul $_____GraineX+$_____GraineY`                                 \
$Z                                                                                        >  $FCoOrDoNnEeS.Q.2$COORD_X$COORD_Y
$Z                                      # On notera le 20180623120530 que si, ci-dessus, on remplace '$xci/valeurs_alea$X' par        #
$Z                                      # '$xci/valeurs_inte$X' par exemple avec 'v $xiirv/TROR.34', au lieu de retrouver a la        #
$Z                                      # fin du processus cette meme image, on la retouve mais avec trois paves dupliques (et donc   #
$Z                                      # trois paves qui manquent). Il s'agit des paves de numeros {30,58,61} (dans [0,116]).        #
$Z                                      #                                                                                             #
$Z                                      # Cela est due au lambda de '$xci/valeurs_inte$K iINTERPOLATION_LINEAIRE' qui n'a pas         #
$Z                                      # exactement la valeur attendue. Ce defaut disparait si l'on utilise au choix les arguments : #
$Z                                      #                                                                                             #
$Z                                      #                   entier=FAUX         (un peu paradoxal...)                                 #
$Z                                      #                                                                                             #
$Z                                      # ou encore :                                                                                 #
$Z                                      #                                                                                             #
$Z                                      #                   epsilon=0.0001      (par exemple...)                                      #
$Z                                      #                                                                                             #

$Z                                      CheckUNI            $FCoOrDoNnEeS.Q.2$COORD_X$COORD_Y
$Z                                      # Introduit le 20180624082221...                                                              #

$Z                                      $CA                 $FCoOrDoNnEeS.Q.2$COORD_X$COORD_Y                                     |     \
$Z                                      $NL                 --starting-line-number=$MiNiMuM_QXY                                   |     \
$Z                                      $AW                 ' { print "s/^." $1 "$""/" $2 "/" } '                                       \
$Z                                                                                        >  $FCoOrDoNnEeS.Q.2$COORD_X$COORD_Y$sed

$Z                                      $CA                 $FCoOrDoNnEeS.Q.1$COORD_X$COORD_Y                                     |     \
$Z                                      $SE                 -f $FCoOrDoNnEeS.Q.2$COORD_X$COORD_Y$sed                                    \
$Z                                                                                        >  $FCoOrDoNnEeS.Q.3$COORD_X$COORD_Y

$Z                                      set                 PaRaMeTrEs2="$K_VIDE"
$Z                                      set                 PaRaMeTrEs2="$PaRaMeTrEs2"" ne=$tailleI"

$Z                                      $xrv/DivisionEuclidienne.11$X                                                                   \
$Z                                                          $PaRaMeTrEs2                                                                \
$Z                                                          fichier1=$FCoOrDoNnEeS.Q.3$COORD_X$COORD_Y                                  \
$Z                                                          fichier2=$DiMeNsIoN_QXY                                                     \
$Z                                                          pQ=1 pR=0                                                                   \
$Z                                                                                        >  $FCoOrDoNnEeS.Q.3$COORD_X

$Z                                      $xrv/DivisionEuclidienne.11$X                                                                   \
$Z                                                          $PaRaMeTrEs2                                                                \
$Z                                                          fichier1=$FCoOrDoNnEeS.Q.3$COORD_X$COORD_Y                                  \
$Z                                                          fichier2=$DiMeNsIoN_QXY                                                     \
$Z                                                          pQ=0 pR=1                                                                   \
$Z                                                                                        >  $FCoOrDoNnEeS.Q.3$COORD_Y

$Z                                      unset               PaRaMeTrEs2
$Z                  else
$Z                                      # Cas ou seules les valeurs differentes des coordonnees 'X' et 'Y' sont permutees             #
$Z                                      # aleatoirement (test introduitle 20180623073822) :                                           #
$Z                                      $xci/valeurs_alea$X                                                                             \
$Z                                                          $PaRaMeTrEs1                                                                \
$Z                                                          premiere=$MiNiMuM_QX  derniere=$MaXiMuM_QX                                  \
$Z                                                          inferieur=$MiNiMuM_QX superieur=$MaXiMuM_QX                                 \
$Z                                                          graine=$_____GraineX                                                        \
$Z                                                                                        >  $FCoOrDoNnEeS.Q.2$COORD_X

$Z                                      CheckUNI            $FCoOrDoNnEeS.Q.2$COORD_X
$Z                                      # Introduit le 20180624082221...                                                              #

$Z                                      $xci/valeurs_alea$X                                                                             \
$Z                                                          $PaRaMeTrEs1                                                                \
$Z                                                          premiere=$MiNiMuM_QY  derniere=$MaXiMuM_QY                                  \
$Z                                                          inferieur=$MiNiMuM_QY superieur=$MaXiMuM_QY                                 \
$Z                                                          graine=$_____GraineY                                                        \
$Z                                                                                        >  $FCoOrDoNnEeS.Q.2$COORD_Y

$Z                                      CheckUNI            $FCoOrDoNnEeS.Q.2$COORD_Y
$Z                                      # Introduit le 20180624082221...                                                              #

$Z                                      $CA                 $FCoOrDoNnEeS.Q.2$COORD_X                                             |     \
$Z                                      $NL                 --starting-line-number=$MiNiMuM_QX                                    |     \
$Z                                      $AW                 ' { print "s/^." $1 "$""/" $2 "/" } '                                       \
$Z                                                                                        >  $FCoOrDoNnEeS.Q.2$COORD_X$sed

$Z                                      $CA                 $FCoOrDoNnEeS.Q.2$COORD_Y                                             |     \
$Z                                      $NL                 --starting-line-number=$MiNiMuM_QY                                    |     \
$Z                                      $AW                 ' { print "s/^." $1 "$""/" $2 "/" } '                                       \
$Z                                                                                        >  $FCoOrDoNnEeS.Q.2$COORD_Y$sed
$Z                                      # Definition des permutations horizontales ('X') et verticales ('Y') des blocs...             #

$Z                                      $CA                 $FCoOrDoNnEeS.Q.1$COORD_X                                             |     \
$Z                                      $SE                 -f $FCoOrDoNnEeS.Q.2$COORD_X$sed                                            \
$Z                                                                                        >  $FCoOrDoNnEeS.Q.3$COORD_X

$Z                                      $CA                 $FCoOrDoNnEeS.Q.1$COORD_Y                                             |     \
$Z                                      $SE                 -f $FCoOrDoNnEeS.Q.2$COORD_Y$sed                                            \
$Z                                                                                        >  $FCoOrDoNnEeS.Q.3$COORD_Y
$Z                  endif

$Z                  unset               PaRaMeTrEs1

$Z                  set                 PaRaMeTrEs1="$K_VIDE"
$Z                  set                 PaRaMeTrEs1="$PaRaMeTrEs1"" ne=$tailleI"

$Z                  set                 MiNiMuM_X=`$CA $FCoOrDoNnEeS.4$COORD_X | $xrv/extrema.01$X ne=0 fichier== minimum_seul=VRAI`
$Z                  set                 MaxiMuM_X=`$CA $FCoOrDoNnEeS.4$COORD_X | $xrv/extrema.01$X ne=0 fichier== maximum_seul=VRAI`

$Z                  set                 MiNiMuM_Y=`$CA $FCoOrDoNnEeS.4$COORD_Y | $xrv/extrema.01$X ne=0 fichier== minimum_seul=VRAI`
$Z                  set                 MaxiMuM_Y=`$CA $FCoOrDoNnEeS.4$COORD_Y | $xrv/extrema.01$X ne=0 fichier== maximum_seul=VRAI`

$Z                  $xrv/AXPB.11$X                                                                                                      \
$Z                                      $PaRaMeTrEs1                                                                                    \
$Z                                      fichierA=$_____PaveX                                                                            \
$Z                                      fichier=$FCoOrDoNnEeS.Q.3$COORD_X                                                               \
$Z                                      fichierB=$FCoOrDoNnEeS.R.1$COORD_X                                                        |     \
$Z                  $xrv/normalise.01$X                                                                                                 \
$Z                                      $PaRaMeTrEs1                                                                                    \
$Z                                      minimum=$MiNiMuM_X maximum=$MaxiMuM_X                                                           \
$Z                                      fichier==                                                                                       \
$Z                                                                    >  $FCoOrDoNnEeS.2$COORD_X

$Z                  $xrv/AXPB.11$X                                                                                                      \
$Z                                      $PaRaMeTrEs1                                                                                    \
$Z                                      fichierA=$_____PaveY                                                                            \
$Z                                      fichier=$FCoOrDoNnEeS.Q.3$COORD_Y                                                               \
$Z                                      fichierB=$FCoOrDoNnEeS.R.1$COORD_Y                                                        |     \
$Z                  $xrv/normalise.01$X                                                                                                 \
$Z                                      $PaRaMeTrEs1                                                                                    \
$Z                                      minimum=$MiNiMuM_Y maximum=$MaxiMuM_Y                                                           \
$Z                                      fichier==                                                                                       \
$Z                                                                    >  $FCoOrDoNnEeS.2$COORD_Y
$Z                                      # Generation des nouvelles coordonnees 'X' et 'Y' apres permutation (aleatoire) des blocs et  #
$Z                                      # normalisees dans [0,1[ (et non pas dans [0,1]). Cette normalisation dans [0,1[ a remplace   #
$Z                                      # celle dans [0,1] le 20180618161323...                                                       #

$Z                  unset               PaRaMeTrEs1

$Z                  $xrv/store_image$X                                                                                                  \
$Z                                      LISTE_X=$FCoOrDoNnEeS.4$COORD_X                                                                 \
$Z                                      Xnormalisees=VRAI                                                                               \
$Z                                      LISTE_Y=$FCoOrDoNnEeS.4$COORD_Y                                                                 \
$Z                                      Ynormalisees=VRAI                                                                               \
$Z                                      LISTE_NIVEAU=$FCoOrDoNnEeS.2$COORD_X                                                            \
$Z                                      Nnormalises=VRAI                                                                                \
$Z                                      standard=FAUX                                                                                   \
$Z                                      R=$FCoOrDoNnEeS.3$COORD_X                                                                       \
$Z                                                                                        $formatI

$Z                  $xrv/store_image$X                                                                                                  \
$Z                                      LISTE_X=$FCoOrDoNnEeS.4$COORD_X                                                                 \
$Z                                      Xnormalisees=VRAI                                                                               \
$Z                                      LISTE_Y=$FCoOrDoNnEeS.4$COORD_Y                                                                 \
$Z                                      Ynormalisees=VRAI                                                                               \
$Z                                      LISTE_NIVEAU=$FCoOrDoNnEeS.2$COORD_Y                                                            \
$Z                                      Nnormalises=VRAI                                                                                \
$Z                                      standard=FAUX                                                                                   \
$Z                                      R=$FCoOrDoNnEeS.3$COORD_Y                                                                       \
$Z                                                                                        $formatI

$Z                  $CA                 $xcs/csh$Y                                                                                      \
$Z                                                                                                                 >  $FCoOrDoNnEeS.1$Y

#20180625140507__:$Z   echo "$GeNeRe   $K_QD$xci/acces$X                                                  \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "                              A=$_____ImageA$PoStFiXe                        \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "                              convertir=VRAI                                 \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "                                                            $formatI  |      \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "          $xci/deformi.01$X                                                  \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "                              DX=$FCoOrDoNnEeS.3$COORD_X                     \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "                              DY=$FCoOrDoNnEeS.3$COORD_Y                     \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "                              tridimensionnelle=FAUX                         \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "                              ne_pas_interpoler=VRAI                         \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "                                                            $formatI  |      \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "          $xci/acces$X                                                       \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "                              standard=FAUX zero=FAUX                        \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "                              R=$_____ImageR$PoStFiXe                        \c"   >> $FCoOrDoNnEeS.1$Y  #
#20180625140507__:$Z   echo "                                                            $formatI$K_QD"         >> $FCoOrDoNnEeS.1$Y  #

#20180626161309__:$Z                  echo      "$GeNeRe   $K_QD$xci/acces$X                              \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "                              A=$_____ImageA$PoStFiXe    \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "                              convertir=VRAI             \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "                                        $formatI  |      \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "          $xci/deformi.01$X                              \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "                              DX=$FCoOrDoNnEeS.3$COORD_X \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "                              DY=$FCoOrDoNnEeS.3$COORD_Y \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "                              tridimensionnelle=FAUX     \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "                              ne_pas_interpoler=VRAI     \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "                                        $formatI  |      \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "          $xci/acces$X                                   \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "                              standard=FAUX brutal=VRAI  \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "                              R=$_____ImageR$PoStFiXe    \c"    >> $FCoOrDoNnEeS.1$Y #
#20180626161309__:$Z                  echo      "                                        $formatI$K_QD"          >> $FCoOrDoNnEeS.1$Y #

$Z                  setenv              PaRaMeTrEs1         "$K_VIDE"
$Z                  setenv              PaRaMeTrEs1         "$PaRaMeTrEs1"" A=$_____ImageA$PoStFiXe"
$Z                  setenv              PaRaMeTrEs1         "$PaRaMeTrEs1"" Prme=VRAI"
$Z                  setenv              PaRaMeTrEs1         "$PaRaMeTrEs1"" coordonnees=FAUX"

$Z                  echo      "$GeNeRe   $K_QD$xci/acces$X                                                  \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "                              A=$_____ImageA$PoStFiXe                        \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "                              convertir=VRAI                                 \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "                                                            $formatI  |      \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "          $xci/deformi.01$X                                                  \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "                              DX=$FCoOrDoNnEeS.3$COORD_X                     \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "                              DY=$FCoOrDoNnEeS.3$COORD_Y                     \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "                              tridimensionnelle=FAUX                         \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "                              ne_pas_interpoler=VRAI                         \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "                                                            $formatI  |      \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "          $xci/acces$X                                                       \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "                              standard=FAUX zero=FAUX                        \c"    >> $FCoOrDoNnEeS.1$Y
$Z   echo "$K_QD$K_QS"'rNOIR=`$xci/extrema$X  '"$PaRaMeTrEs1"' min=VRAI max=FAUX $formatI`'"$K_QS$K_QD      \c"    >> $FCoOrDoNnEeS.1$Y
$Z   echo "$K_QD$K_QS"'rBLANC=`$xci/extrema$X '"$PaRaMeTrEs1"' min=FAUX max=VRAI $formatI`'"$K_QS$K_QD      \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "                              R=$_____ImageR$PoStFiXe                        \c"    >> $FCoOrDoNnEeS.1$Y
$Z                  echo      "                                                            $formatI$K_QD"          >> $FCoOrDoNnEeS.1$Y
$Z                                      # Le passage par un '$Y' est rendu necessaire par l'eventuel 'execRVB' et la '$K_QD' qui      #
$Z                                      # doit le suivre...                                                                           #
$Z                                      #                                                                                             #
$Z                                      # On notera le 20180623120530 que si on a remplace '$xci/valeurs_alea$X' par                  #
$Z                                      # '$xci/valeurs_inte$X', en prenant les precautions evoquees plus haut, par exemple avec      #
$Z                                      # 'v $xiirv/TROR.34' on ne la retrouve pas exactement ici (mais presque...) et ce a cause     #
$Z                                      # des approximations faites dans 'v $xci/deformi.01$K'...                                     #
$Z                                      #                                                                                             #
$Z                                      # On notera le 20180625134109 un chose tres importante : dans le mode vraies couleurs         #
$Z                                      # (voir '$_____VraiesCouleurs') les trois composantes de '$_____ImageR' sont renormalisees    #
$Z                                      # ci-dessus independamment les unes des autres, d'ou de possibles "catastrophes" comme cela   #
$Z                                      # s'est vu en essayant avec 'v $xiia/SPIR.71$m.1'. D'ou l'introduction de "brutal=VRAI" qui   #
$Z                                      # permet de maintenir les extrema de '$_____ImageA' dans '$_____ImageR' (le 20180626131715).  #
$Z                                      #                                                                                             #
$Z                                      # Le 20180626161309, j'ai reussi a implementer quelque chose de plus general ou "rNOIR="      #
$Z                                      # et "rBLANC=" sont calcules dynamiquement. En contre-partie, les choses se sont compliquees  #
$Z                                      # au niveau de l'usage des '$K_QD's et des '$K_QS'... En particulier la grande difficulte     #
$Z                                      # fut de forcer l'execution des '$xci/extrema$X' pour initialiser "rNOIR=" et "rBLANC="       #
$Z                                      # a l'interieur de l'execution de '$GeNeRe' (et donc dans un '$SHELL_SH') et non pas avant    #
$Z                                      # lors de la generation de son argument (la grande commande qui suit...).                     #

$Z                  unsetenv            PaRaMeTrEs1

$Z                  source              $FCoOrDoNnEeS.1$Y
$Z                                      # Et enfin, permutation des blocs...                                                          #

$Z                  if                  ($_____Grille == $EXIST) then
$Z                                      $CA                 $xcs/csh$Y                                                                  \
$Z                                                                                                                 >  $FCoOrDoNnEeS.2$Y

$Z                                      echo      "$GeNeRe   $K_QD$xci/grille.01$X                          \c"    >> $FCoOrDoNnEeS.2$Y
$Z                                      echo      "                         A=$_____ImageR$PoStFiXe         \c"    >> $FCoOrDoNnEeS.2$Y
$Z                                      echo      "                         denormalisees=VRAI              \c"    >> $FCoOrDoNnEeS.2$Y
$Z                                      echo      "                         mx=$_____PaveX my=$_____PaveY   \c"    >> $FCoOrDoNnEeS.2$Y
$Z                                      echo      "                         Xig=-1 Xid=0                    \c"    >> $FCoOrDoNnEeS.2$Y
$Z                                      echo      "                         Yib=-1 Yih=0                    \c"    >> $FCoOrDoNnEeS.2$Y
$Z                                      echo      "                         niveau=$_____Niveau             \c"    >> $FCoOrDoNnEeS.2$Y
$Z                                      echo      "                         $_____ParamsGrille              \c"    >> $FCoOrDoNnEeS.2$Y
$Z                                      echo      "                         R=$_____ImageR$PoStFiXe         \c"    >> $FCoOrDoNnEeS.2$Y
$Z                                      echo      "                                   $formatI$K_QD"               >> $FCoOrDoNnEeS.2$Y
$Z                                      # Le passage par un '$Y' est rendu necessaire par l'eventuel 'execRVB' et la '$K_QD' qui      #
$Z                                      # doit le suivre...                                                                           #

$Z                                      source              $FCoOrDoNnEeS.2$Y
$Z                                      # Eventuellement, materialisation des blocs a l'aide d'une grille...                          #
$Z                  else
$Z                  endif

$Z                  $xci/acces$X                                                                                                        \
$Z                                      A=$FCoOrDoNnEeS.3$COORD_X                                                                       \
$Z                                      standard=FAUX                                                                                   \
$Z                                      zero=FAUX                                                                                       \
$Z                                      R=$_____ImageR$COORD_X                                                                          \
$Z                                                                                        $formatI
$Z                  $xci/acces$X                                                                                                        \
$Z                                      A=$FCoOrDoNnEeS.3$COORD_Y                                                                       \
$Z                                      standard=FAUX                                                                                   \
$Z                                      zero=FAUX                                                                                       \
$Z                                      R=$_____ImageR$COORD_Y                                                                          \
$Z                                                                                        $formatI
$Z                                      # Les deux champs de deformation sont memorises a compter du 20180628085020...                #

$Z                  FileTmpE            FCoOrDoNnEeS



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