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