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