#######################################################################################################################################
# #
# 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'... #