#######################################################################################################################################
# #
# V I S U A L I S A T I O N D E S D I S T A N C E S D A N S L E S Y S T E M E S O L A I R E : #
# #
# #
# Author of '$xiak/.NCOS.B.23.$U' : #
# #
# Jean-Francois COLONNA (LACTAMME, 20220225170045). #
# #
#######################################################################################################################################
$Z SETParam _____Pas 1
$Z setParam _____Points 256
$Z setParam _____AXYZ 24.0e-13
$Z # Parametre introduit le 20220301085907... #
$Z setParam _____GrisDistancesMin $NOIR_PLANCHER
$Z setParam _____GrisDistancesMax $GRIS_8
$Z setParam _____Seuil 50
$Z setParam _____Palette $xiP/rouge_orang.32
$Z setParam _____AttenuationCouleurs 1
$Z setParam _____FacteurRayons 1.5e-12
$Z setParam _____Grossissement 1.5
$Z setParam _____ParamParticule "$K_VIDE"
#20220301092021____:$Z setParam _____Distance_X 0.86 #
$Z setParam _____Distance_X 0.75
$Z # Parametre introduit le 20220227104743... #
$Z setParam _____Distance_Y 0.05
$Z # Parametre introduit le 20220227104743... #
$Z setParam _____AttenuationTrainees 0.96
$Z # Parametre introduit le 20220227104743... #
$Z setParam _____DistanceTaille 3
$Z # Parametre introduit le 20220227104743... #
$Z set LId=`$CA $xTV/LISTE_POINTS | $SE -e 's/^.* \(IDENTITE=[^ ][^ ]*\) .*$/\1/' | $R "=" " " | $SOR -u --key=2 -n | $R " " "="`
#20220225175337____:$Z set LId=`echo "$LId" | $R "$K_BLANC" "$K_NL" | $GRE -v 'IDENTITE=1$'` #
$Z # Ainsi on supprime le Soleil (qui est "IDENTITE=1"). En fait le 20220225175337, je note #
$Z # qu'il faut le conserver, mais qu'il subira un traitement special (ne pas etre joint a la #
$Z # Terre) ci-apres (lors de la generation du fichier '$xTV/COORDONNEES_2')... #
$Z set NuMeRo___=1
$Z set MiLlIaRd=1000000000
$Z # Afin d'exprimer les extrema des distances en millions de kilometres (en fait en #
$Z # milliards de metres...). #
$Z $DELETE $xTV/LISTE_POINTS.23* >& $nul
$Z $DELETE $xTV/LISTE_POINTS.24* >& $nul
$Z while ($NuMeRo___ < $#LId)
$Z @ NuMeRo_p1 = $NuMeRo___ + 1
$Z $DELETE $xTV/LISTE_POINTS.21* >& $nul
$Z $CA $xTV/LISTE_POINTS | \
$Z $GRE " $LId[$NuMeRo___] " \
$Z > $xTV/LISTE_POINTS.21
$Z $DELETE $xTV/LISTE_POINTS.22* >& $nul
$Z $CA $xTV/LISTE_POINTS | \
$Z $GRE " $LId[$NuMeRo_p1] " \
$Z > $xTV/LISTE_POINTS.22
$Z $CA $xTV/LISTE_POINTS.21 | \
$Z $SE -e "s/^.* X=//" -e 's/ .*$//' \
$Z > $xTV/LISTE_POINTS.21$COORD_X
$Z $CA $xTV/LISTE_POINTS.21 | \
$Z $SE -e "s/^.* Y=//" -e 's/ .*$//' \
$Z > $xTV/LISTE_POINTS.21$COORD_Y
$Z $CA $xTV/LISTE_POINTS.21 | \
$Z $SE -e "s/^.* Z=//" -e 's/ .*$//' \
$Z > $xTV/LISTE_POINTS.21$COORD_Z
$Z $CA $xTV/LISTE_POINTS.22 | \
$Z $SE -e "s/^.* X=//" -e 's/ .*$//' \
$Z > $xTV/LISTE_POINTS.22$COORD_X
$Z $CA $xTV/LISTE_POINTS.22 | \
$Z $SE -e "s/^.* Y=//" -e 's/ .*$//' \
$Z > $xTV/LISTE_POINTS.22$COORD_Y
$Z $CA $xTV/LISTE_POINTS.22 | \
$Z $SE -e "s/^.* Z=//" -e 's/ .*$//' \
$Z > $xTV/LISTE_POINTS.22$COORD_Z
$Z set PoSt___=`echo $LId[$NuMeRo___] | $SE -e "s/^.*=//" -e "s/^/0000/" -e 's/^.*\(....\)$/\1/'`
$Z set PoSt_p1=`echo $LId[$NuMeRo_p1] | $SE -e "s/^.*=//" -e "s/^/0000/" -e 's/^.*\(....\)$/\1/'`
$Z set LiStE_DiStAnCeS=$xTV/LISTE_POINTS.23.$PoSt___.$PoSt_p1
$Z $xrv/distance.12$X \
$Z ne=0 \
$Z LISTE_XA=$xTV/LISTE_POINTS.21$COORD_X \
$Z LISTE_YA=$xTV/LISTE_POINTS.21$COORD_Y \
$Z LISTE_ZA=$xTV/LISTE_POINTS.21$COORD_Z \
$Z LISTE_XB=$xTV/LISTE_POINTS.22$COORD_X \
$Z LISTE_YB=$xTV/LISTE_POINTS.22$COORD_Y \
$Z LISTE_ZB=$xTV/LISTE_POINTS.22$COORD_Z \
$Z \
$Z > $LiStE_DiStAnCeS
$Z # Calcul des distances reelles entre {$PoSt___,$PoSt_p1}... #
$Z set DMiN=`$CA $LiStE_DiStAnCeS | $xrv/extrema.01$X ne=0 fichier== ms=VRAI`
$Z set DMiN=`calculINS $DMiN/$MiLlIaRd`
$Z set DMaX=`$CA $LiStE_DiStAnCeS | $xrv/extrema.01$X ne=0 fichier== Ms=VRAI`
$Z set DMaX=`calculINS $DMaX/$MiLlIaRd`
#20220226111005____:$Z Techo "Distances entre les corps '$NuMeRo___' et '$NuMeRo_p1' :" #
#20220226111005____:$Z $CA $LiStE_DiStAnCeS #
$Z IfBasic ($DMiN < $DMaX) then
$Z Techo "Distances extremales entre les corps '$NuMeRo___' et '$NuMeRo_p1' : [$DMiN,$DMaX]."
$Z ElseBasic
$Z EndifBasic
$Z set EcArT=`$CA $LiStE_DiStAnCeS | $xrv/extrema.01$X ne=0 fichier== ets=VRAI`
$Z IfBasic (`$xcg/IFGE.01$X x=$EcArT y=$_____Seuil` == $EXIST) then
$Z set NiVeAu_MiN=$_____GrisDistancesMin
$Z set NiVeAu_MaX=$_____GrisDistancesMax
$Z ElseBasic
$Z set NiVeAu_MiN=`calculINS ($_____GrisDistancesMin+$_____GrisDistancesMax)/2`
$Z set NiVeAu_MaX=$NiVeAu_MiN
$Z EndifBasic
$Z $CA $LiStE_DiStAnCeS | \
$Z $xrv/normalise.01$X \
$Z ne=0 \
$Z fichier== \
$Z minimum=$NiVeAu_MiN maximum=$NiVeAu_MaX formater=VRAI entier=VRAI \
$Z \
$Z > $xTV/LISTE_POINTS.24.$PoSt___.$PoSt_p1
$Z # Conversion des distances entre {$PoSt___,$PoSt_p1} en niveaux de gris... #
$Z # #
$Z # On notera que cette renormalisation est faite pour chaque couple {$PoSt___,$PoSt_p1} et #
$Z # donc independemment des autres couples... #
$Z set NuMeRo___=$NuMeRo_p1
$Z end
$Z $DELETE $xTV/LISTE_POINTS.25
$Z set VaLiDE_VISIBILITE=`$CA $xTV/VISIBILITE | $GRE "^$EXIST"'$' | $WCl`
$Z IfBasic ($VaLiDE_VISIBILITE != 3) then
$Z # Validation introduite le 20220228100015... #
$Z EROR "Il ne peut y avoir que 3 corps visibles : {Soleil,Terre,Mars}."
$Z ElseBasic
$Z EndifBasic
$Z $PAST $xTV/LISTE_POINTS.24.* | \
$Z $R "$K_TAB" "$K_NL" \
$Z > $xTV/LISTE_POINTS.25
$Z # Liste des distances en niveaux de gris pour les planetes de la liste '$xTV/VISIBILITE'. #
$Z set NuMeRo___=1
$Z $DELETE $xTV/LISTE_POINTS.26 >& $nul
$Z $DELETE $xTV/LISTE_POINTS.27 >& $nul
$Z $CA $xTV/LISTE_POINTS \
$Z > $xTV/LISTE_POINTS.26
$Z while ($NuMeRo___ < `calculINS $#LId-1`)
$Z @ NuMeRo_p1 = $NuMeRo___ + 1
$Z $CA $xTV/LISTE_POINTS.26 | \
$Z $xcp/substitue.01$X \
$Z c01="\([^\n][^\n]* $LId[$NuMeRo_p1] [^\n][^\n]*\n\)" s01="\1\1" \
$Z > $xTV/LISTE_POINTS.27
$Z # Dans '$xTV/LISTE_POINTS' les planetes sont dupliquees sauf la premiere (le Soleil) et la #
$Z # derniere (Mars) de chaque "chaine" {le Soleil,la Terre,Mars}. #
$Z $DELETE $xTV/LISTE_POINTS.26* >& $nul
$Z $MV $xTV/LISTE_POINTS.27 $xTV/LISTE_POINTS.26
$Z set NuMeRo___=$NuMeRo_p1
$Z end
$Z $DELETE $xTV/LISTE_POINTS.27 >& $nul
$Z $CA $xTV/LISTE_POINTS.26 | \
$Z $SE -e 's/ ROUGE=[^ ][^ ]* *VERTE=[^ ][^ ]* *BLEUE=[^ ][^ ]* //' \
$Z > $xTV/LISTE_POINTS.27
$Z # Suppression des vraies couleurs des planetes... #
$Z $DELETE $xTV/LISTE_POINTS.28 >& $nul
$Z $CA $xTV/LISTE_POINTS.25 | \
$Z $AW ' { print " NIVEAU=" $1 " " } ' | \
$Z $AW ' { print $0 "\n" $0 } ' \
$Z > $xTV/LISTE_POINTS.28
$Z # Liste des couleurs fonctions croissantes des distances entre les planetes... #
$Z $DELETE $xTV/LISTE_POINTS.29 >& $nul
$Z $PAST $xTV/LISTE_POINTS.27 $xTV/LISTE_POINTS.28 | \
$Z $R "$K_TAB" "$K_BLANC" \
$Z > $xTV/LISTE_POINTS.29
$Z # Reconstitution d'une liste du type '$xTV/LISTE_POINTS' dans laquelle les vraies couleurs #
$Z # ont ete remplacees par des luminances fonctions croissantes des distances... #
$Z execRVB $xci/init$X \
$Z n=$NOIR \
$Z R=$xTV/FOND%s \
$Z $formatI
$Z set PaRaMeTrEs="$K_VIDE"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" np=1"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" Apoints=$_____Points"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" Lz=100"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" editer_extrema_hors=FAUX"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" zoom_automatique=FAUX ZOOM=1.0"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" coordonnees_dans_0_1=VRAI"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" AXYZ=$_____AXYZ BXYZ=0.5"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" TRANSLATION_OX=0.0 TRANSLATION_OY=0.0"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" fond=FAUX"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" centrer=FAUX reference=$_____Reference"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" attenuation_au_bord=0.25"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" $_____ParamParticule"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" fond=VRAI F=$xTV/FOND"
$Z set PaRaMeTrEs="$PaRaMeTrEs"" chiffres=0"
$c #define N0 Premiere
$c #define N Derniere
$c #define PAS _____Pas
$c
$c int main()
$c {
$c int n;
$c
$c for (n=N0 ; n<=N ; n=n+PAS)
$c {
$c printf("$DELETE $xTV/COORDONNEES_1\n");
$c printf("$DELETE $xTV/COORDONNEES_1$COORD_X\n");
$c printf("$DELETE $xTV/COORDONNEES_1$COORD_Y\n");
$c printf("$DELETE $xTV/COORDONNEES_1$COORD_Z\n");
$c printf("$DELETE $xTV/RAYONS_1\n");
$c printf("$DELETE $xTV/COULEURS_1$ROUGE\n");
$c printf("$DELETE $xTV/COULEURS_1$VERTE\n");
$c printf("$DELETE $xTV/COULEURS_1$BLEUE\n");
$c
$c printf("$CA $xTV/LISTE_POINTS |
$c $GRE 'periode=%d '
$c > $xTV/COORDONNEES_1\n"
$c ,n,'"','"'
$c );
$c
$c printf("set Particules_1=`$CA $xTV/COORDONNEES_1 | $WCl`\n");
$c
$c printf("$CA $xTV/COORDONNEES_1 |
$c $SE -e %cs/^.* X=//%c
$c -e %cs/ .*//%c
$c > $xTV/COORDONNEES_1$COORD_X\n"
$c ,'"','"','"','"'
$c );
$c printf("$CA $xTV/COORDONNEES_1 |
$c $SE -e %cs/^.* Y=//%c
$c -e %cs/ .*//%c
$c > $xTV/COORDONNEES_1$COORD_Y\n"
$c ,'"','"','"','"'
$c );
$c printf("$CA $xTV/COORDONNEES_1 |
$c $SE -e %cs/^.* Z=//%c
$c -e %cs/ .*//%c
$c > $xTV/COORDONNEES_1$COORD_Z\n"
$c ,'"','"','"','"'
$c );
$c
$c printf("$CA $xTV/COORDONNEES_1 |
$c $SE -e %cs/^.* RAYON=//%c
$c -e %cs/ .*//%c
$c > $xTV/RAYONS_1\n"
$c ,'"','"','"','"'
$c );
$c
$c printf("$CA $xTV/COORDONNEES_1 |
$c $SE -e %cs/^.* ROUGE=//%c
$c -e %cs/ .*//%c
$c > $xTV/COULEURS_1$ROUGE\n"
$c ,'"','"','"','"'
$c );
$c printf("$CA $xTV/COORDONNEES_1 |
$c $SE -e %cs/^.* VERTE=//%c
$c -e %cs/ .*//%c
$c > $xTV/COULEURS_1$VERTE\n"
$c ,'"','"','"','"'
$c );
$c printf("$CA $xTV/COORDONNEES_1 |
$c $SE -e %cs/^.* BLEUE=//%c
$c -e %cs/ .*//%c
$c > $xTV/COULEURS_1$BLEUE\n"
$c ,'"','"','"','"'
$c );
$c
$c printf("$DELETE $xTV/COORDONNEES_2\n");
$c printf("$DELETE $xTV/COORDONNEES_2$COORD_X\n");
$c printf("$DELETE $xTV/COORDONNEES_2$COORD_Y\n");
$c printf("$DELETE $xTV/COORDONNEES_2$COORD_Z\n");
$c printf("$DELETE $xTV/RAYONS_2\n");
$c printf("$DELETE $xTV/COULEURS_2$NIVEAU\n");
$c
$c printf("$CA $xTV/LISTE_POINTS.29 |
$c $GRE 'periode=%d ' |
$c $NL |
$c $R %c$K_TAB%c %c$K_BLANC%c |
$c $SE -e %cs/^ *//%c
$c -e 's/^\\(1 .*\\)$/\\1\\n\\1/' |
$c $GRE -v %c^2 %c |
$c $SE -e %cs/^[$Alphabet_0_9]* *//%c
$c > $xTV/COORDONNEES_2\n"
$c ,n
$c ,'"','"','"','"'
$c ,'"','"'
$c ,'"','"'
$c ,'"','"'
$c );
$c /* Cette operation est destinee a remplacer le lien entre le Soleil (1) et la Terre (2) */
$c /* par un lien de longueur nulle entre le Soleil (1) et le Soleil (1)... */
$c
$c printf("set Particules_2=`$CA $xTV/COORDONNEES_2 | $WCl`\n");
$c
$c printf("$CA $xTV/COORDONNEES_2 |
$c $SE -e %cs/^.* X=//%c
$c -e %cs/ .*//%c
$c > $xTV/COORDONNEES_2$COORD_X\n"
$c ,'"','"','"','"'
$c );
$c printf("$CA $xTV/COORDONNEES_2 |
$c $SE -e %cs/^.* Y=//%c
$c -e %cs/ .*//%c
$c > $xTV/COORDONNEES_2$COORD_Y\n"
$c ,'"','"','"','"'
$c );
$c printf("$CA $xTV/COORDONNEES_2 |
$c $SE -e %cs/^.* Z=//%c
$c -e %cs/ .*//%c
$c > $xTV/COORDONNEES_2$COORD_Z\n"
$c ,'"','"','"','"'
$c );
$c
$c
$c printf("$CA $xTV/COORDONNEES_2 |
$c $SE -e %cs/^.* RAYON=//%c
$c -e %cs/ .*//%c
$c > $xTV/RAYONS_2\n"
$c ,'"','"','"','"'
$c );
$c printf("$CA $xTV/COORDONNEES_2 |
$c $SE -e %cs/^.* NIVEAU=//%c
$c -e %cs/ .*//%c |
$c $NL |
$c $R %c$K_TAB%c %c$K_BLANC%c |
$c $SE -e %cs/^ *//%c
$c -e %cs/^\\([12] \\).*$K_DOLLAR/\\1$BLANC/%c
$c -e %cs/^[$Alphabet_0_9]* *//%c
$c > $xTV/COULEURS_2$NIVEAU\n"
$c ,'"','"','"','"'
$c ,'"','"','"','"'
$c ,'"','"'
$c ,'"','"'
$c ,'"','"'
$c );
$c /* Ainsi, on force le niveau maximal ('$BLANC') pour le Soleil... */
$c printf("$xrv/particule.10$X
$c iterations=$Particules_1
$c $PaRaMeTrEs
$c LISTE_X=$xTV/COORDONNEES_1$COORD_X
$c LISTE_Y=$xTV/COORDONNEES_1$COORD_Y
$c LISTE_Z=$xTV/COORDONNEES_1$COORD_Z
$c LISTE_RAYON=$xTV/RAYONS_1
$c Ar=$_____FacteurRayons
$c isoles=VRAI
$c AR=$_____AttenuationCouleurs
$c LISTE_ROUGE=$xTV/COULEURS_1$ROUGE
$c AV=$_____AttenuationCouleurs
$c LISTE_VERTE=$xTV/COULEURS_1$VERTE
$c AB=$_____AttenuationCouleurs
$c LISTE_BLEUE=$xTV/COULEURS_1$BLEUE
$c R=$xTV/FOND
$c $formatI\n"
$c );
$c printf("$xrv/particule.10$X
$c iterations=$Particules_2
$c $PaRaMeTrEs
$c LISTE_X=$xTV/COORDONNEES_2$COORD_X
$c LISTE_Y=$xTV/COORDONNEES_2$COORD_Y
$c LISTE_Z=$xTV/COORDONNEES_2$COORD_Z
$c LISTE_RAYON=$xTV/RAYONS_2
$c Ar=$_____FacteurRayons
$c grossissement=$_____Grossissement
$c isoles=FAUX chainer=FAUX
$c LISTE_NIVEAU=$xTV/COULEURS_2$NIVEAU
$c p=$_____Palette
$c R=$_____ImageT.%04d
$c $formatI\n"
$c ,n
$c );
$c /* Le parametre "grossissement=" a ete introduit le 20220228094544... */
$c printf("execRVB $xci/scale$X
$c A=$xTV/FOND%%s
$c a=$_____AttenuationTrainees b=0
$c R=$xTV/FOND%%s
$c $formatI\n"
$c );
$c printf("set DiStAnCe=`(listMN $LiStE_DiStAnCeS %d %d)`\n"
$c ,n,n
$c ,'"','"'
$c );
$c /* Ainsi, on utilise le dernier fichier '$LiStE_DiStAnCeS' genere qui est celui qui */
$c /* correspond aux distances entre la Terre et Mars (voir la liste '$xTV/VISIBILITE'...). */
$c printf("set DiStAnCe=`calculINS $DiStAnCe/$MiLlIaRd`\n"
$c );
#20220301085907____:$c printf("set DiStAnCe=`echo %c$DiStAnCe%c | $SE -e %cs/^/___/%c`\n" #
#20220301085907____:$c ,'"','"' #
#20220301085907____:$c ,'"','"' #
#20220301085907____:$c ); #
#20220301085907____:$c printf("set DiStAnCe=`echo %c$DiStAnCe%c | $SE -e %cs/^.*\\(...\\)$K_DOLLAR/\\1/%c`\n" #
#20220301085907____:$c ,'"','"' #
#20220301085907____:$c ,'"','"' #
#20220301085907____:$c ); #
$c printf("set DiStAnCe=`echo %c$DiStAnCe%c | $SE -e %cs/^/______/%c`\n"
$c ,'"','"'
$c ,'"','"'
$c );
$c printf("set DiStAnCe=`echo %c$DiStAnCe%c | $SE -e %cs/^.*\\(......\\)$K_DOLLAR/\\1/%c`\n"
$c ,'"','"'
$c ,'"','"'
$c );
$c printf("$xci/message$X
$c A=$NOIR
$c message=%c$DiStAnCe%c
$c anti_aliasing=VRAI
$c UnderScoreEspace=VRAI
$c X=$_____Distance_X Y=$_____Distance_Y
$c taille=$_____DistanceTaille
$c R=$xTV/DISTANCE
$c $formatI\n"
$c ,'"','"'
$c );
$c printf("execRVB $xci/cache$X
$c A=$_____ImageT.%04d%%s
$c M=$xTV/DISTANCE
$c R=$_____ImageT.%04d%%s
$c $formatI\n"
$c ,n,n
$c );
$c /* Mise en place de la distance en millions de kilometres... */
$c }
$c }