#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D ' U N   L A B Y R I N T H E  :                                                                      #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.LABY.11.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20161116170309).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____Graine                   7

$Z                  setParam            _____Taille                   6

$Z                  setParam            _____Dilatation               9
$Z                                      # Argument introduit le 20161117080942...                                                     #

$Z                  setParam            _____AttenuationI             0.8
$Z                                      # Argument introduit le 20161117080942...                                                     #

$Z                  setParam            _____AttenuationM             0.5
$Z                                      # Argument introduit le 20161118122331...                                                     #

$Z                  setParam            _____Palette                  $xiP/arc_ciel.B3
$Z                                      # L'interet de la palette '$xiP/arc_ciel.G2' est d'etre a luminance constante et ainsi de     #
$Z                                      # permettre une visualisation "equitable" des differents sous-ensembles...                    #
$Z                                      #                                                                                             #
$Z                                      # La modification du 20161120091525 est due au fait que les deux palettes '$xiP/arc_ciel.G2'  #
$Z                                      # et '$xiP/arc_ciel.B2' sont strictement identiques, mais que pour des raisons expliquees     #
$Z                                      # dans 'v $xigP/arc_ciel.G2$Z 20161120090908', c'est '$xiP/arc_ciel.B2' qu'il convient        #
$Z                                      # d'utiliser...                                                                               #

$Z                  set                 NoMbRe=$#_____Liste

$Z                  FilSTmpB            FLaByRiNtHe

$Z                  alias     GLaBy     'set       GGrAiNe=\!:1                                                                   ;    \\
$Z                                       set       LiStE=(\!:2*)                                                                  ;    \\
$Z                                       (shuffle   $GGrAiNe $LiStE)                                 >>! $FLaByRiNtHe             ;    \\
$Z                                       unset     GGrAiNe LiStE'
$Z                                      # Generation de la definition du labyrinthe...                                                #

$Z                  set                 KoMpTeUr=0
$Z                  set                 GrAiNe=$_____Graine

$Z                  while               ($KoMpTeUr < $NoMbRe)
$Z                                      GLaBy               $GrAiNe $_____Liste

$Z                                      @                   GrAiNe = $GrAiNe + 1
$Z                                      @                   KoMpTeUr = $KoMpTeUr + 1
$Z                  end


#20161125114351____:$Z                  $CA                 $FLaByRiNtHe                                                     |     \  #
#20161125114351____:$Z                  $SE                 -e "s/ //g"                                                            \  #
#20161125114351____:$Z                                      -e 's/$'"/$ReToUr/"                                                    \  #
#20161125114351____:$Z                                                                                        >   $FLaByRiNtHe.1      #

$Z                  $CA                 $FLaByRiNtHe                                                                              |     \
$Z                  $SE                 -e "s/ //g"                                                                                     \
$Z                                      -e "s/^/=/"                                                                                     \
$Z                                      -e 's/$'"/,/"                                                                                   \
$Z                                                                                                  >   $FLaByRiNtHe.1

$Z                  set                 LaByRiNtHe=`$CA $FLaByRiNtHe.1 | $xcp/substitue.01$X c01="\n" s01=""`

$Z                  FilSTmpE            FLaByRiNtHe

$Z                  FilSTmpB            FILaByRiNtHe

$Z                  set                 ArGuMeNtS="$K_VIDE"
$Z                  set                 ArGuMeNtS="$ArGuMeNtS"" A=$NOIR"
$Z                  set                 ArGuMeNtS="$ArGuMeNtS"" message=$LaByRiNtHe"
$Z                  set                 ArGuMeNtS="$ArGuMeNtS"" bibliotheque=04"
$Z                  set                 ArGuMeNtS="$ArGuMeNtS"" taille=$_____Taille"
$Z                  set                 ArGuMeNtS="$ArGuMeNtS"" centrer=VRAI"

$Z                  $xci/message$X                                                                                                      \
$Z                                      $ArGuMeNtS                                                                                      \
$Z                                      marquer_interieur_contours=FAUX                                                                 \
$Z                                      R=$FILaByRiNtHe.1                                                                               \
$Z                                                                                                                      $formatI
$Z                                      # Generation du labyrinthe "narrow".                                                          #

$Z                  $xci/message$X                                                                                                      \
$Z                                      $ArGuMeNtS                                                                                      \
$Z                                      marquer_interieur_contours=VRAI                                                                 \
$Z                                      R=$FILaByRiNtHe.2                                                                               \
$Z                                                                                                                      $formatI
$Z                                      # Generation du labyrinthe "narrow" avec marquage de son interieur.                           #

$Z                  $xci/eor$X          A1=$FILaByRiNtHe.1                                                                              \
$Z                                      A2=$FILaByRiNtHe.2                                                                              \
$Z                                      R=$FILaByRiNtHe.narrow                                                                          \
$Z                                                                                                                      $formatI
$Z                                      # Recuperation des marqueurs de l'interieur du labyrinthe "narrow".                           #

$Z                  $xci/dilate.01$X                                                                                                    \
$Z                                      A=$FILaByRiNtHe.1                                                                               \
$Z                                      points=$_____Dilatation                                                                         \
$Z                                      dilater=VRAI                                                                                    \
$Z                                      R=$_____ImageR                                                                                  \
$Z                                                                                                                      $formatI

$Z                  $xci/contours.22$X  A=$_____ImageR                                                                                  \
$Z                                      optimiser_increment=VRAI                                                                        \
$Z                                      R=$FILaByRiNtHe.1.all                                                                           \
$Z                                                                                                                      $formatI

$Z                  $xci/seuil$X        A=$FILaByRiNtHe.1.all                                                                           \
$Z                                      R=$FILaByRiNtHe.1.all.masque                                                                    \
$Z                                                                                                                      $formatI
$Z                                      # Remplissage de tous les contours.                                                           #

$Z                  $xci/contours.22$X  A=$_____ImageR                                                                                  \
$Z                                      M=$FILaByRiNtHe.narrow                                                                          \
$Z                                      optimiser_increment=VRAI                                                                        \
$Z                                      R=$FILaByRiNtHe.1.narrow                                                                        \
$Z                                                                                                                      $formatI

$Z                  $xci/seuil$X        A=$FILaByRiNtHe.1.narrow                                                                        \
$Z                                      R=$FILaByRiNtHe.1.narrow.masque                                                                 \
$Z                                                                                                                      $formatI
$Z                                      # Remplissage des contours du labyrinthe "narrow".                                            #

$Z                  $xci/eor$X          A1=$FILaByRiNtHe.1.all.masque                                                                   \
$Z                                      A2=$FILaByRiNtHe.1.narrow.masque                                                                \
$Z                                      R=$FILaByRiNtHe.1.wide.masque                                                                   \
$Z                                                                                                                      $formatI
$Z                                      # Localisation du remplissage du labyrinthe "wide".                                           #

$Z                  FilSTmpB  FPaLeTtE

$Z                  $xciP/S_NIVEAU$X                                                                                                    \
$Z                                      paletteA=$_____Palette                                                                          \
$Z                                      niveau=$NOIR                                                                                    \
$Z                                      ROUGE=VRAI nR=$NOIR                                                                             \
$Z                                      VERTE=VRAI nV=$NOIR                                                                             \
$Z                                      BLEUE=VRAI nB=$NOIR                                                                             \
$Z                                      paletteR=$FPaLeTtE
$Z                                      # Il est imperatif que le NOIR reste NOIR car, en effet, il correspond aux interstices        #
$Z                                      # du carrelage (introduit le 20161030095958).                                                 #

$Z                  set                 FaCtEuR_PaRtAgE=0.5
$Z                  set                 TrAnS_PaLeTtE=$GRIS_4
$Z                                      # Ainsi on partage en deux la palette '$_____Palette' : la partie [$GRIS_0,$GRIS_4[ pour      #
$Z                                      # '$FILaByRiNtHe.1.narrow' et [$GRIS_4,$GRIS_8] pour '$FILaByRiNtHe.1.wide'...                #

$Z                  $xciP/S_NIVEAU$X                                                                                                    \
$Z                                      paletteA=$FPaLeTtE                                                                              \
$Z                                      niveau=$TrAnS_PaLeTtE                                                                           \
$Z                                      ROUGE=VRAI nR=$NOIR                                                                             \
$Z                                      VERTE=VRAI nV=$NOIR                                                                             \
$Z                                      BLEUE=VRAI nB=$NOIR                                                                             \
$Z                                      paletteR=$FPaLeTtE

$Z                  $xci/and$X          A1=$FILaByRiNtHe.1.all                                                                          \
$Z                                      A2=$FILaByRiNtHe.1.narrow.masque                                                                \
$Z                                                                                                                      $formatI  |     \
$Z                  $xci/scale$X        a=$FaCtEuR_PaRtAgE                                                                              \
$Z                                      b=$GRIS_0                                                                                       \
$Z                                                                                                                      $formatI  |     \
$Z                  $xci/vraies_C$X                                                                                                     \
$Z                                      p=$FPaLeTtE                                                                                     \
$Z                                      R=$FILaByRiNtHe.1.narrow                                                                        \
$Z                                                                                                                      $formatI

$Z                  $xci/and$X          A1=$FILaByRiNtHe.1.all                                                                          \
$Z                                      A2=$FILaByRiNtHe.1.wide.masque                                                                  \
$Z                                                                                                                      $formatI  |     \
$Z                  $xci/scale$X        a=$FaCtEuR_PaRtAgE                                                                              \
$Z                                      b=$TrAnS_PaLeTtE                                                                                \
$Z                                                                                                                      $formatI  |     \
$Z                  $xci/vraies_C$X                                                                                                     \
$Z                                      p=$FPaLeTtE                                                                                     \
$Z                                      R=$FILaByRiNtHe.1.wide                                                                          \
$Z                                                                                                                      $formatI

$Z        execRVB  "$xci/or_02$X                                                                                                        \
$Z                                      A1=$FILaByRiNtHe.1.narrow%s                                                                     \
$Z                                      A2=$FILaByRiNtHe.1.wide%s                                                                       \
$Z                                                                                                                      $formatI  |     \
$Z                  $xci/scale$X                                                                                                        \
$Z                                      a=$_____AttenuationI                                                                            \
$Z                                                                                                                      $formatI  |     \
$Z                  $xci/cache$X                                                                                                        \
$Z                                      M=$_____ImageR                                                                                  \
$Z                                      R=$_____ImageR.1%s                                                                              \
$Z                                                                                                                      $formatI"
$Z                                      # Generation de l'image Resultat montrant tous les contours remplis.                          #

$Z                  $xci/and$X          A1=$FILaByRiNtHe.1.all                                                                          \
$Z                                      A2=$FILaByRiNtHe.1.narrow.masque                                                                \
$Z                                                                                                                      $formatI  |     \
$Z                  $xci/vraies_C$X                                                                                                     \
$Z                                      p=$FPaLeTtE                                                                                     \
$Z                                      R=$_____ImageR.1.narrow                                                                         \
$Z                                                                                                                      $formatI

$Z                  $xci/scale$X        A=$FILaByRiNtHe.1.narrow.masque                                                                 \
$Z                                      a=$_____AttenuationM                                                                            \
$Z                                      R=$FILaByRiNtHe.1.narrow.masque.1                                                               \
$Z                                                                                                                      $formatI

$Z                  $xci/scale$X        A=$FILaByRiNtHe.1.wide.masque                                                                   \
$Z                                      a=$_____AttenuationM                                                                            \
$Z                                      R=$FILaByRiNtHe.1.wide.masque.1                                                                 \
$Z                                                                                                                      $formatI

$Z        execRVB  "$xci/scale$X                                                                                                        \
$Z                                      A=$FILaByRiNtHe.1.narrow%s                                                                      \
$Z                                      a=$_____AttenuationI                                                                            \
$Z                                                                                                                      $formatI  |     \
$Z                  $xci/cache$X                                                                                                        \
$Z                                      M=$_____ImageR                                                                                  \
$Z                                                                                                                      $formatI  |     \
$Z                  $xci/or_02$X                                                                                                        \
$Z                                      A2=$FILaByRiNtHe.1.wide.masque.1                                                                \
$Z                                      R=$_____ImageR.1.narrow%s                                                                       \
$Z                                                                                                                      $formatI"
$Z                                      # Generation de l'image Resultat montrant le labyrinthe "narrow" rempli.                      #

$Z        execRVB  "$xci/scale$X                                                                                                        \
$Z                                      A=$FILaByRiNtHe.1.wide%s                                                                        \
$Z                                      a=$_____AttenuationI                                                                            \
$Z                                                                                                                      $formatI  |     \
$Z                  $xci/cache$X                                                                                                        \
$Z                                      M=$_____ImageR                                                                                  \
$Z                                                                                                                      $formatI  |     \
$Z                  $xci/or_02$X                                                                                                        \
$Z                                      A2=$FILaByRiNtHe.1.narrow.masque.1                                                              \
$Z                                      R=$_____ImageR.1.wide%s                                                                         \
$Z                                                                                                                      $formatI"
$Z                                      # Generation de l'image Resultat montrant le labyrinthe "wide" rempli.                        #

$Z                  FilSTmpE            FILaByRiNtHe

$Z                  FilSTmpE  FPaLeTtE



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