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