#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D E S   P S E U D O - P R O J E C T I O N S   D ' U N E   S P H E R E   F R A C T A L E  :            #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirs/.PROJ.21.2.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20150611101144).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____FractalMailleX           0.25

$Z                  setParam            _____FractalMailleY           0.25

$Z                  setParam            _____Hauteur                  0.50
$Z                                      # La nullite de ce parametre donne une sphere "parfaite" (c'est-a-dire non fractalisee...).   #

$Z                  setParam            _____Altitude                 1
$Z                                      # Parametre introduit le 20191016090116...                                                    #

$Z                  SETParam            _____PerturbationPositive     $EXIST
$Z                                      # Parametre introduit le 20041113195234...                                                    #

$Z                  setParam            _____Palette                  $xiP/gris.52
$Z                                      # Parametre introduit le 20191016105328...                                                    #

$Z                  $xci/fract_2D.01$X                                                                                                  \
$Z                                      standard=FAUX                                                                                   \
$Z                                      OX=0 EX=0.5 mX=$_____FractalMailleX                                                             \
$Z                                      OY=0 EY=1.0 mY=$_____FractalMailleY                                                             \
$Z                                                                                                  $formatI                      |     \
$Z                  $xci/normalise.01$X                                                                                                 \
$Z                                      R=$xTV/FRACTAL.1                                                                                \
$Z                                                                                                  $formatI
$Z                                      # Le choix [0,0.5] pour les extrema des tores 'X' et 'Y' est fait pour la meme raison que     #
$Z                                      # celle qui conduit a calculer 'sin(u)' dans [0,2.pi] et a faire varier ensuite 'u' dans      #
$Z                                      # [0,0.5] pour '$xrs/project2D.11$X'...                                                       #
$Z                  $xci/scroll$X                                                                                                       \
$Z                                      A=$xTV/FRACTAL.1                                                                                \
$Z                                      standard=FAUX                                                                                   \
$Z                                      toreX=FAUX trX=+0.5                                                                             \
$Z                                      toreY=FAUX trY=0                                                                                \
$Z                                      R=$xTV/FRACTAL.2                                                                                \
$Z                                                                                                  $formatI
$Z                  $xci/scroll$X                                                                                                       \
$Z                                      A=$xTV/FRACTAL.2                                                                                \
$Z                                      standard=FAUX                                                                                   \
$Z                                      toreX=FAUX trX=-0.5                                                                             \
$Z                                      toreY=FAUX trY=0                                                                                \
$Z                                      R=$xTV/FRACTAL.3                                                                                \
$Z                                                                                                  $formatI
$Z                  $xci/somme_02$X                                                                                                     \
$Z                                      A1=$xTV/FRACTAL.2                                                                               \
$Z                                      A2=$xTV/FRACTAL.3                                                                               \
$Z                                      standard=FAUX                                                                                   \
$Z                                      R=$xTV/FRACTAL.4                                                                                \
$Z                                                                                                  $formatI

$Z                  if                  ($_____PerturbationPositive == $EXIST) then
$Z                                      $xci/neutre$X                                                                                   \
$Z                                                          A=$xTV/FRACTAL.4                                                            \
$Z                                                          standard=FAUX                                                               \
$Z                                                          R=$xTV/FRACTAL.5                                                            \
$Z                                                                                                                      $formatI
$Z                  else
$Z                                      $xci/scale$X                                                                                    \
$Z                                                          A=$xTV/FRACTAL.4                                                            \
$Z                                                          standard=FAUX                                                               \
$Z                                                          a=2                                                                         \
$Z                                                          b=-1                                                                        \
$Z                                                          R=$xTV/FRACTAL.5                                                            \
$Z                                                                                                                      $formatI
$Z                  endif

$Z                  $xci/scale$X                                                                                                        \
$Z                                      A=$xTV/FRACTAL.5                                                                                \
$Z                                      standard=FAUX                                                                                   \
$Z                                      a=$_____Hauteur                                                                                 \
$Z                                      b=$_____Altitude                                                                                \
$Z                                      R=$xTV/FRACTAL.XY                                                                               \
$Z                                                                                                  $formatI
$Z                                      # Ainsi, le champ fractal contient horizontalement deux periodes le long de 'OX' a valeur     #
$Z                                      # dans [1,1+Hauteur] ou dans [1-Hauteur,1+Hauteur] suivant que '$_____PerturbationPositive'   #
$Z                                      # est '$EXIST' ou '$NEXIST' respectivement...                                                 #

$Z                  $xci/sinus$X                                                                                                        \
$Z                                      standard=FAUX                                                                                   \
$Z                                      translation=0 echelle=1                                                                         \
$Z                                      carre_X_CHAMP_3D=FAUX carre_Y_CHAMP_3D=FAUX                                                     \
$Z                                      cx=$dpi cy=0 phase=-$pi                                                                         \
$Z                                      sinus=VRAI                                                                                      \
$Z                                      R=$xTV/SINUS.u                                                                                  \
$Z                                                                                                  $formatI
$Z                                      # La fonction 'sin(u)' est calculee dans [0,2.pi] afin que le champ soit bien periodique.     #
$Z                  $xci/sinus$X                                                                                                        \
$Z                                      standard=FAUX                                                                                   \
$Z                                      translation=0 echelle=1                                                                         \
$Z                                      carre_X_CHAMP_3D=FAUX carre_Y_CHAMP_3D=FAUX                                                     \
$Z                                      cx=0 cy=$dpi phase=-$pi                                                                         \
$Z                                      sinus=VRAI                                                                                      \
$Z                                      R=$xTV/SINUS.v                                                                                  \
$Z                                                                                                  $formatI
$Z                                      # La fonction 'sin(v)' est calculee dans [0,2.pi] afin que le champ soit bien periodique.     #

$Z                  $xci/sinus$X                                                                                                        \
$Z                                      standard=FAUX                                                                                   \
$Z                                      translation=0 echelle=1                                                                         \
$Z                                      carre_X_CHAMP_3D=FAUX carre_Y_CHAMP_3D=FAUX                                                     \
$Z                                      cx=$dpi cy=0 phase=-$pi                                                                         \
$Z                                      cosinus=VRAI                                                                                    \
$Z                                      R=$xTV/COSINUS.u                                                                                \
$Z                                                                                                  $formatI
$Z                                      # La fonction 'cos(u)' est calculee dans [0,2.pi] afin que le champ soit bien periodique.     #
$Z                  $xci/sinus$X                                                                                                        \
$Z                                      standard=FAUX                                                                                   \
$Z                                      translation=0 echelle=1                                                                         \
$Z                                      carre_X_CHAMP_3D=FAUX carre_Y_CHAMP_3D=FAUX                                                     \
$Z                                      cx=0 cy=$dpi phase=-$pi                                                                         \
$Z                                      cosinus=VRAI                                                                                    \
$Z                                      R=$xTV/COSINUS.v                                                                                \
$Z                                                                                                  $formatI
$Z                                      # La fonction 'cos(v)' est calculee dans [0,2.pi] afin que le champ soit bien periodique.     #

$Z                  $xci/val_absolue$X                                                                                                  \
$Z                                      A=$xTV/SINUS.u                                                                                  \
$Z                                                                                                  $formatI                      |     \
$Z                  $xci/substitue$X                                                                                                    \
$Z                                      standard=FAUX                                                                                   \
$Z                                      p=$_____Palette                                                                                 \
$Z                                      lissage=VRAI                                                                                    \
$Z                                      passes=256                                                                                      \
$Z                                      substitution=L_SUBSTITUTION_ROUGE                                                               \
$Z                                                                                                  $formatI                      |     \
$Z                  $xci/multi_02.01$X                                                                                                  \
$Z                                      standard=FAUX                                                                                   \
$Z                                      A2=$xTV/FRACTAL.5                                                                               \
$Z                                                                                                  $formatI                      |     \
$Z                  $xci/scale$X                                                                                                        \
$Z                                      standard=FAUX                                                                                   \
$Z                                      a=$_____Hauteur                                                                                 \
$Z                                      b=$_____Altitude                                                                                \
$Z                                      R=$xTV/FRACTAL.Z                                                                                \
$Z                                                                                                  $formatI

$Z                  $xci/multi_03.01$X                                                                                                  \
$Z                                      A1=$xTV/FRACTAL.XY                                                                              \
$Z                                      A2=$xTV/SINUS.u                                                                                 \
$Z                                      A3=$xTV/COSINUS.v                                                                               \
$Z                                      standard=FAUX                                                                                   \
$Z                                      R=$xTV/Fx                                                                                       \
$Z                                                                                                  $formatI
$Z                  $xci/multi_03.01$X                                                                                                  \
$Z                                      A1=$xTV/FRACTAL.XY                                                                              \
$Z                                      A2=$xTV/SINUS.u                                                                                 \
$Z                                      A3=$xTV/SINUS.v                                                                                 \
$Z                                      standard=FAUX                                                                                   \
$Z                                      R=$xTV/Fy                                                                                       \
$Z                                                                                                  $formatI
$Z                  $xci/multi_02.01$X                                                                                                  \
$Z                                      A1=$xTV/FRACTAL.Z                                                                               \
$Z                                      A2=$xTV/COSINUS.u                                                                               \
$Z                                      standard=FAUX                                                                                   \
$Z                                      R=$xTV/Fz                                                                                       \
$Z                                                                                                  $formatI
$Z                                      # ATTENTION, on notera que l'on utilise ici '$xTV/FRACTAL.Z' et non pas '$xTV/FRACTAL.XY'     #
$Z                                      # comme pour les fonctions {Fx,Fy}. En effet, afin d'eviter des problemes aux poles de la     #
$Z                                      # sphere (qui correspondent a 'u=0' et 'u=pi' respectivement), il est essentiel que les       #
$Z                                      # paralleles (parcourus par 'v' variant de 0 a 2.pi) qui sont proches des poles soient        #
$Z                                      # uniformes ; cela signifie que les droites 'u=0' et 'u=pi' (et leurs voisinnes proches)      #
$Z                                      # doivent etre uniformes et ne contenir donc que des points de niveaux identiques (d'ou       #
$Z                                      # l'utilisation de '$xiP/gris.52' sur la valeur absolue du champ '$xTV/SINUS.u' pour          #
$Z                                      # construire un attenuateur de '$xTV/FRACTAL.5' au voisinage de de 'u=0' et de 'u=pi'...      #



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