#######################################################################################################################################
#                                                                                                                                     #
#         C O N S T R U C T I O N   D ' U N E   S P I R A L E   C A R R E E   D E   C H A M P S  :                                    #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.PIAL.E1.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois COLONNA (LACTAMME, 20240602081216).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____FDecimales               $xrp/Decimales_Base10_Pi_____100000

$Z                  setParam            _____NombreDisques            9
$Z                  setParam            _____NChiffres                `calculINS $_____NombreDisques*$_____NombreDisques`
$Z                                      # ATTENTION : je note le 20240530154543 que '$_____NChiffres' ne peut pas etre remplace       #
$Z                                      # par le carre de '$_____NombreDisques' ('v $xiirv/.PIAL.61.3.$U _____NombreDisques') car, en #
$Z                                      # effet, '$_____NChiffres' definit le nombre de points de la spirale que l'on va generer et   #
$Z                                      # certains de ses points peuvent etre en dehors de l'image ('v PIAL.69.pi.2$m'). Quant        #
$Z                                      # a '$_____NombreDisques' il ne sert qu'a definir '$_____FacteurX' et '$_____FacteurY' de     #
$Z                                      # facon a ce que les carres circonscrits aux disques remplissent exactement le carre de       #
$Z                                      # l'image...                                                                                  #

$Z                  setParam            _____SpiraleR                 $GRIS_4
$Z                  setParam            _____SpiraleV                 $GRIS_4
$Z                  setParam            _____SpiraleB                 $GRIS_4
$Z                  setParam            _____SpiraleRAYON             0.004
$Z                  setParam            _____DistanceMini             0.002

$Z                  setParam            _____GaussPara                "c=800"
$Z                  setParam            _____LChamps                  "$K_VIDE"
$Z                  setParam            _____SepChamps                ";"
$Z                                      # L'usage du limiteur ";" (au lieu de ":") est destine a eviter le message d'erreur :         #
$Z                                      #                                                                                             #
$Z                                      #                   Bad : modifier in $ (d).                                                  #
$Z                                      #                                                                                             #

$Z                  setParam            _____Escalier                 $xiP/escalier20

$Z                  setParam            _____Passes                   0

$Z                  setParam            _____NiveauFond               $GRIS_8

$Z                  setParam            _____Echelle                  0.2
$Z                  setParam            _____TranslationY             0.994
$Z                  setParam            _____Perspective              2.4

$Z                  setParam            _____PaletteB                 $xiP/gris.41
$Z                  setParam            _____Palette                  $xiP/arc_ciel.C2

$Z                  set                 _____FacteurX=`calculINS $dimX/$_____NombreDisques`
$Z                  set                 _____FacteurY=`calculINS $dimY/$_____NombreDisques`

$Z                  FilSTmpB            FCoOrDoNnEeS

$Z                  $CA                 $_____FDecimales                                                                          |     \
$Z                  $SE                 -e "s/^  *//"                                                                                   \
$Z                                      -e "s/\.//"                                                                               |     \
$Z                  $GRE                -v '^ *$'                                                                                 |     \
$Z                  $SE                 -e "s/ //g"                                                                                     \
$Z                                      -e "s/\(.\)/\1@/g"                                                                        |     \
$Z                  $R                  "@" "$K_NL"                                                                               |     \
$Z                  $GRE                -v '^ *$'                                                                                 |     \
$Z                  $HEA                -$_____NChiffres                                                                                \
$Z                                                                                        >  $FCoOrDoNnEeS.chiffres

$Z                  set                 CeNtRe_X=`calcul 1/2`
$Z                  set                 CeNtRe_Y=`calcul 1/2`

$Z                  set                 DeMi_CoTe_X=`$xci/valeurs_spir$X premiere=1 derniere=3 PX=1 PY=0 | $SOR -u`
$Z                  set                 DeMi_CoTe_X=`calcul ($_____FacteurX*($DeMi_CoTe_X[2]-$DeMi_CoTe_X[1]))/2`

$Z                  set                 DeMi_CoTe_Y=`$xci/valeurs_spir$X premiere=1 derniere=3 PX=0 PY=1 | $SOR -u`
$Z                  set                 DeMi_CoTe_Y=`calcul ($_____FacteurY*($DeMi_CoTe_Y[2]-$DeMi_CoTe_Y[1]))/2`

$Z                  $xci/valeurs_spir$X premiere=1 derniere=$_____NChiffres                                                             \
$Z                                      PX=1 PY=0                                                                                 |     \
$Z                  $xrv/AXPB.01$X      ne=0                                                                                            \
$Z                                      fichier==                                                                                       \
$Z                                      a=$_____FacteurX                                                                                \
$Z                                      b=-$CeNtRe_X                                                                                    \
$Z                                      XPBA=VRAI                                                                                 |     \
$Z                  $xrv/ADD2.11$X      ne=0                                                                                            \
$Z                                      fichier1==                                                                                      \
$Z                                      fichier2=+$CeNtRe_X                                                                             \
$Z                                                                                        >  $FCoOrDoNnEeS$COORD_X

$Z                  $xci/valeurs_spir$X premiere=1 derniere=$_____NChiffres                                                             \
$Z                                      PX=0 PY=1                                                                                 |     \
$Z                  $xrv/AXPB.01$X      ne=0                                                                                            \
$Z                                      fichier==                                                                                       \
$Z                                      a=$_____FacteurY                                                                                \
$Z                                      b=-$CeNtRe_Y                                                                                    \
$Z                                      XPBA=VRAI                                                                                 |     \
$Z                  $xrv/ADD2.11$X      ne=0                                                                                            \
$Z                                      fichier1==                                                                                      \
$Z                                      fichier2=+$CeNtRe_Y                                                                             \
$Z                                                                                        >  $FCoOrDoNnEeS$COORD_Y
$Z                                      # Definition de la spirale carree...                                                          #

$Z                  set                 Npoints__X=`$CA $FCoOrDoNnEeS$COORD_X | $WCl`
$Z                  set                 Npoints__Y=`$CA $FCoOrDoNnEeS$COORD_Y | $WCl`
$Z                  set                 Npoints_XY=`$xcg/MIN2.01$X x=$Npoints__X y=$Npoints__Y`

$Z                  $xrv/particule.10$X npoints=$Npoints_XY                                                                             \
$Z                                      LISTE_X=$FCoOrDoNnEeS$COORD_X                                                                   \
$Z                                      LISTE_Y=$FCoOrDoNnEeS$COORD_Y                                                                   \
$Z                                      LISTE_Z=0.5                                                                                     \
$Z                                      LISTE_ROUGE=$_____SpiraleR                                                                      \
$Z                                      LISTE_VERTE=$_____SpiraleV                                                                      \
$Z                                      LISTE_BLEUE=$_____SpiraleB                                                                      \
$Z                                      LISTE_RAYON=$_____SpiraleRAYON                                                                  \
$Z                                      isoles=FAUX chainer=VRAI                                                                        \
$Z                                      ajuster_points=VRAI equidistance=VRAI                                                           \
$Z                                      distance_minimale=$_____DistanceMini                                                            \
$Z                                      Lz=1000                                                                                         \
$Z                                      ZOOM=1                                                                                          \
$Z                                      couronne=1                                                                                      \
$Z                                      N_au_carre=VRAI                                                                                 \
$Z                                      editer_extrema_hors=FAUX                                                                        \
$Z                                      editer_mauvais_encadrement_niveaux_interpoles=FAUX                                              \
$Z                                      chiffres=0                                                                                      \
$Z                                      R=$xTV/SPIRALE_CARREE                                                                           \
$Z                                                                              $formatI
$Z                                      # Visualisation la spirale carree...                                                          #

$m4                 _____include(_____xiirv/.PIAL.91.1.2._____U)
$Z                                      # Definition de la liste '$_____LChamps'...                                                   #

$Z                  set                 TrAnSlX=0
$Z                  set                 TrAnSlY=0

$Z                  $CA                 $FCoOrDoNnEeS$COORD_X                                                                     |     \
$Z                  $xrv/ADD2.11$X      ne=0                                                                                            \
$Z                                      fichier1==                                                                                      \
$Z                                      fichier2=+$TrAnSlX                                                                        |     \
$Z                  $xrv/SOUS.11$X      ne=0                                                                                            \
$Z                                      fichier1==                                                                                      \
$Z                                      fichier2=+$CeNtRe_X                                                                             \
$Z                                                                                        >  $FCoOrDoNnEeS.translatees$COORD_X

$Z                  $CA                 $FCoOrDoNnEeS$COORD_Y                                                                     |     \
$Z                  $xrv/ADD2.11$X      ne=0                                                                                            \
$Z                                      fichier1==                                                                                      \
$Z                                      fichier2=+$TrAnSlY                                                                        |     \
$Z                  $xrv/SOUS.11$X      ne=0                                                                                            \
$Z                                      fichier1==                                                                                      \
$Z                                      fichier2=+$CeNtRe_Y                                                                             \
$Z                                                                                        >  $FCoOrDoNnEeS.translatees$COORD_Y

$Z                  $DELETE             $FCoOrDoNnEeS$COORD_X
$Z                  $DELETE             $FCoOrDoNnEeS$COORD_Y

$Z                  $MV                 $FCoOrDoNnEeS.translatees$COORD_X $FCoOrDoNnEeS$COORD_X
$Z                  $MV                 $FCoOrDoNnEeS.translatees$COORD_Y $FCoOrDoNnEeS$COORD_Y

$Z                  $CA                 $FCoOrDoNnEeS$COORD_X                                                                     |     \
$Z                  $xrv/SOUS.11$X      ne=0                                                                                            \
$Z                                      fichier1==                                                                                      \
$Z                                      fichier2=+$DeMi_CoTe_X                                                                          \
$Z                                                                                        >  $FCoOrDoNnEeS.MiNiMuM$COORD_X

$Z                  $CA                 $FCoOrDoNnEeS$COORD_X                                                                     |     \
$Z                  $xrv/ADD2.11$X      ne=0                                                                                            \
$Z                                      fichier1==                                                                                      \
$Z                                      fichier2=+$DeMi_CoTe_X                                                                          \
$Z                                                                                        >  $FCoOrDoNnEeS.MaXiMuM$COORD_X

$Z                  $CA                 $FCoOrDoNnEeS$COORD_Y                                                                     |     \
$Z                  $xrv/SOUS.11$X      ne=0                                                                                            \
$Z                                      fichier1==                                                                                      \
$Z                                      fichier2=+$DeMi_CoTe_Y                                                                          \
$Z                                                                                        >  $FCoOrDoNnEeS.MiNiMuM$COORD_Y

$Z                  $CA                 $FCoOrDoNnEeS$COORD_Y                                                                     |     \
$Z                  $xrv/ADD2.11$X      ne=0                                                                                            \
$Z                                      fichier1==                                                                                      \
$Z                                      fichier2=+$DeMi_CoTe_Y                                                                          \
$Z                                                                                        >  $FCoOrDoNnEeS.MaXiMuM$COORD_Y

$Z                  set                 NPoInTsX=`$CA $FCoOrDoNnEeS$COORD_X | $WCl`
$Z                  set                 NPoInTsY=`$CA $FCoOrDoNnEeS$COORD_Y | $WCl`
$Z                  set                 NPoInTs_=`$xcg/MIN2.01$X x=$NPoInTsX y=$NPoInTsY`

$Z                  $xrv/BARY.11$X      ne=$NPoInTs_                                                                                    \
$Z                                      fichier1=$FCoOrDoNnEeS.MiNiMuM$COORD_X                                                          \
$Z                                      fichier2=$FCoOrDoNnEeS.MaXiMuM$COORD_X                                                    |     \
$Z                  $xrv/MUL2.11$X      ne=0                                                                                            \
$Z                                      fichier1==                                                                                      \
$Z                                      fichier2=-1                                                                                     \
$Z                                                                                        >  $FCoOrDoNnEeS.TrAnSlAtIoN$COORD_X

$Z                  $xrv/BARY.11$X      ne=$NPoInTs_                                                                                    \
$Z                                      fichier1=$FCoOrDoNnEeS.MiNiMuM$COORD_Y                                                          \
$Z                                      fichier2=$FCoOrDoNnEeS.MaXiMuM$COORD_Y                                                    |     \
$Z                  $xrv/MUL2.11$X      ne=0                                                                                            \
$Z                                      fichier1==                                                                                      \
$Z                                      fichier2=-1                                                                                     \
$Z                                                                                        >  $FCoOrDoNnEeS.TrAnSlAtIoN$COORD_Y

$Z                  set                 LCoOrDoNnEeS_X=`$CA $FCoOrDoNnEeS$COORD_X  | $HEA -$_____NChiffres`
$Z                  set                 LCoOrDoNnEeS_Y=`$CA $FCoOrDoNnEeS$COORD_Y  | $HEA -$_____NChiffres`

$Z                  set                 LMiNiMuM_X=`$CA $FCoOrDoNnEeS.MiNiMuM$COORD_X  | $HEA -$_____NChiffres`
$Z                  set                 LMaXiMuM_X=`$CA $FCoOrDoNnEeS.MaXiMuM$COORD_X  | $HEA -$_____NChiffres`

$Z                  set                 LMiNiMuM_Y=`$CA $FCoOrDoNnEeS.MiNiMuM$COORD_Y  | $HEA -$_____NChiffres`
$Z                  set                 LMaXiMuM_Y=`$CA $FCoOrDoNnEeS.MaXiMuM$COORD_Y  | $HEA -$_____NChiffres`

$Z                  set                 LTrAnSlAtIoN_X=`$CA $FCoOrDoNnEeS.TrAnSlAtIoN$COORD_X  | $HEA -$_____NChiffres`
$Z                  set                 LTrAnSlAtIoN_Y=`$CA $FCoOrDoNnEeS.TrAnSlAtIoN$COORD_Y  | $HEA -$_____NChiffres`

$Z                  set                 LChIfFrEs_____=`$CA $FCoOrDoNnEeS.chiffres | $HEA -$_____NChiffres`
$Z                                      # Pour faire des tests :                                                                      #
$Z                                      #                                                                                             #
$Z                                      #                   set                 LChIfFrEs_____=(0 1 2 3 4 5 6 7 8 9)                  #
$Z                                      #                   set                 _____NChiffres=$#LChIfFrEs_____                       #
$Z                                      #                                                                                             #
$Z                                      # peut etre utile...                                                                          #

$Z                  $xci/init$X         valeur=0                                                                                        \
$Z                                      standard=FAUX                                                                                   \
$Z                                      R=$xTV/CHAMP_COMPLET                                                                            \
$Z                                                                              $formatI

$Z                  set                 DeCoMpTeUr=$_____NChiffres
$Z                  set                 index=1

$Z                  while               ($DeCoMpTeUr > 0)
$Z                                      set                 MiNiMuM_X=$LMiNiMuM_X[$index]
$Z                                      set                 MaXiMuM_X=$LMaXiMuM_X[$index]

$Z                                      set                 MiNiMuM_Y=$LMiNiMuM_Y[$index]
$Z                                      set                 MaXiMuM_Y=$LMaXiMuM_Y[$index]

$Z                                      set                 TrAnSlAtIoN_X=$LTrAnSlAtIoN_X[$index]
$Z                                      set                 TrAnSlAtIoN_Y=$LTrAnSlAtIoN_Y[$index]

$Z                                      set                 ArGuMeNtS="$K_VIDE"
$Z                                      set                 ArGuMeNtS="$ArGuMeNtS"" carre_X_CHAMP_3D=FAUX"
$Z                                      set                 ArGuMeNtS="$ArGuMeNtS"" TRANSLATION_OX=$TrAnSlAtIoN_X"
$Z                                      set                 ArGuMeNtS="$ArGuMeNtS"" TRANSLATION_OY=$TrAnSlAtIoN_Y"
$Z                                      set                 ArGuMeNtS="$ArGuMeNtS"" FTransformation_x_Minimal=$MiNiMuM_X"
$Z                                      set                 ArGuMeNtS="$ArGuMeNtS"" FTransformation_x_Maximal=$MaXiMuM_X"
$Z                                      set                 ArGuMeNtS="$ArGuMeNtS"" FTransformation_y_Minimal=$MiNiMuM_Y"
$Z                                      set                 ArGuMeNtS="$ArGuMeNtS"" FTransformation_y_Maximal=$MaXiMuM_Y"

$Z                                      $xci/gauss$X                                                                                    \
$Z                                                          $ArGuMeNtS                                                                  \
$Z                                                          $_____GaussPara                                                             \
$Z                                                          standard=FAUX                                                               \
$Z                                                          R=$xTV/GAUSS                                                                \
$Z                                                          $formatI

$Z                                      @         indexc = $LChIfFrEs_____[$index] + 1
$Z                                      set       ChAmP=`echo "$_____LChamps[$indexc]" | $R "$_____SepChamps" " "`

$Z                                      eval      $ChAmP                                                                                \
$Z                                                          $ArGuMeNtS                                                                  \
$Z                                                          standard=FAUX                                                               \
$Z                                                                                                  $formatI                      |     \
$Z                                      $xci/multi_02.01$X  A2=$xTV/GAUSS                                                               \
$Z                                                          standard=FAUX                                                               \
$Z                                                          message_extrema=FAUX                                                        \
$Z                                                          R=$xTV/CHAMP_ELEMENTAIRE                                                    \
$Z                                                                                                  $formatI

$Z                                      $xci/substitue$X                                                                                \
$Z                                                          A=$xTV/CHAMP_ELEMENTAIRE                                                    \
$Z                                                          standard=FAUX                                                               \
$Z                                                          message_zones_plates=FAUX                                                   \
$Z                                                          substitution=L_SUBSTITUTION_ROUGE                                           \
$Z                                                          p=$_____Escalier.$LChIfFrEs_____[$index]                                    \
$Z                                                                                                  $formatI                      |     \
$Z                                      $xci/maximum$X                                                                                  \
$Z                                                          standard=FAUX                                                               \
$Z                                                          A2=$xTV/CHAMP_COMPLET                                                       \
$Z                                                          R=$xTV/CHAMP_COMPLET                                                        \
$Z                                                                                                  $formatI
$Z                                      # Construction iterative du champ...                                                          #

$Z                                      @                   index = $index + 1
$Z                                      @                   DeCoMpTeUr = $DeCoMpTeUr - 1
$Z                  end

$Z                  FilSTmpE            FCoOrDoNnEeS

$Z                  $xci/lissage$X                                                                                                      \
$Z                                      A=$xTV/CHAMP_COMPLET                                                                            \
$Z                                      standard=FAUX                                                                                   \
$Z                                      passes=$_____Passes                                                                             \
$Z                                      navap=VRAI                                                                                      \
$Z                                      R=$xTV/SURFACE                                                                                  \
$Z                                                                                                  $formatI

$Z                  $xci/acces$X                                                                                                        \
$Z                                      A=$xTV/CHAMP_COMPLET                                                                            \
$Z                                      standard=FAUX zero=FAUX                                                                         \
$Z                                                                                                  $formatI                      |     \
$Z                  $xci/vraies_C$X                                                                                                     \
$Z                                      p=$_____Palette                                                                                 \
$Z                                      R=$xTV/CHAMP_COMPLET                                                                            \
$Z                                                                                                  $formatI

$Z        execRVB   $xci/init$X                                                                                                         \
$Z                                      n=$_____NiveauFond                                                                              \
$Z                                      R=$xTV/FOND%s                                                                                   \
$Z                                                                                                  $formatI

$Z        execRVB   $xci/cache$X        A=$xTV/FOND%s                                                                                   \
$Z                                      M=$xTV/SPIRALE_CARREE%s                                                                         \
$Z                                      anti_aliasing=VRAI                                                                              \
$Z                                      R=$xTV/FOND%s                                                                                   \
$Z                                                                                                  $formatI

$Z                  $xci/cache.21$Z     $xTV/FOND $xTV/CHAMP_COMPLET $xTV/TEXTURE

$Z                  set       PaRaMeTrEs="$K_VIDE"
$Z                  set       PaRaMeTrEs="$PaRaMeTrEs"" echelle=$_____Echelle"

$Z        execRVB   $xci/montagne.01$X                                                                                                  \
$Z                                      A=$xTV/SURFACE                                                                                  \
$Z                                      standard=FAUX                                                                                   \
$Z                                      zero=FAUX                                                                                       \
$Z                                      avion=VRAI                                                                                      \
$Z                                      $PaRaMeTrEs                                                                                     \
$Z                                      T=$xTV/TEXTURE%s                                                                                \
$Z                                      R=$_____ImageR$m%s                                                                              \
$Z                                                                                                  $formatI
$Z                                      # Vue d'avion du champ...                                                                     #

$Z                  set       PaRaMeTrEs="$PaRaMeTrEs"" Ty=$_____TranslationY"
$Z                  set       PaRaMeTrEs="$PaRaMeTrEs"" perspective=$_____Perspective"
$Z                  set       PaRaMeTrEs="$PaRaMeTrEs"" falaise=VRAI"

$Z                  $xci/montagne.01$X                                                                                                  \
$Z                                      A=$xTV/SURFACE                                                                                  \
$Z                                      standard=FAUX zero=FAUX                                                                         \
$Z                                      T=$BLANC                                                                                        \
$Z                                      avion=FAUX                                                                                      \
$Z                                      $PaRaMeTrEs                                                                                     \
$Z                                      Z-Buffer=VRAI                                                                                   \
$Z                                      R=$xTV/MONTAGNE                                                                                 \
$Z                                                                                                  $formatI                      |     \
$Z                  $xci/complement$X                                                                                                   \
$Z                                                                                                  $formatI                      |     \
$Z                  $xci/multi_02.01$X                                                                                                  \
$Z                                      exponentiation_image=VRAI                                                                       \
$Z                                      exposant=1                                                                                      \
$Z                                                                                                  $formatI                      |     \
$Z                  $xci/substitue$X                                                                                                    \
$Z                                      p=$_____PaletteB                                                                                \
$Z                                      substitution=L_SUBSTITUTION_ROUGE                                                               \
$Z                                      R=$xTV/BRUME                                                                                    \
$Z                                                                                                  $formatI

$Z        execRVB   $xci/montagne.01$X                                                                                                  \
$Z                                      A=$xTV/SURFACE                                                                                  \
$Z                                      standard=FAUX                                                                                   \
$Z                                      zero=FAUX                                                                                       \
$Z                                      T=$xTV/TEXTURE%s                                                                                \
$Z                                      avion=FAUX                                                                                      \
$Z                                      $PaRaMeTrEs                                                                                     \
$Z                                      R=$_____ImageR$M%s                                                                              \
$Z                                                                                                  $formatI
$Z                                      # Vue de cote du champ...                                                                     #

$Z        execRVB   $xci/brume.11$X                                                                                                     \
$Z                                      A=$_____ImageR$M%s                                                                              \
$Z                                      B=$xTV/BRUME                                                                                    \
$Z                                      R=$_____ImageR$M%s                                                                              \
$Z                                                                                                  $formatI
$Z                                      # Vue de cote du champ dans la brume...                                                       #



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