####################################################################################################################################### # # # I N T E R P O L A T I O N D E P O I N T D E V U E # # ( A V E C E L O I G N E M E N T D U S O L E I L E T R O T A T I O N ) # # D A N S L E S Y S T E M E S O L A I R E : # # # # # # Author of '$xiirk/.NCOR.f1.1.11.$U' : # # # # Jean-Francois COLONNA (LACTAMME, 20030616101840). # # # ####################################################################################################################################### #20090922182812____:$Z o "# :Debut_listG_NCOR_f1_1_11_PaRaMeTrEs: #" # $Z o "# :Debut_listG_PaRaMeTrEs: #" $Z # Introduit le 20090922121017 afin de permettre de recuperer via 'listMN' et {Debut,Fin} # $Z # tout ce qui est necessaire pour calculer une seule des images, par exemple, afin d'en # $Z # faire une version stereographique '$R16' ('v $xiirk/.NCOR.u1.1.11.$U Debut_listG_')... # $Z # # $Z # ATTENTION : il n'est pas possible de faire autrement pour faire apparaitre ce commentaire # $Z # dans le '$Z' genere. D'une part il faut '$Z' (et non pas '$X') afin de ne pas "rompre" la # $Z # recuperation des definitions ('set', 'SET',...) et d'autre part, il faut la commande neutre # $Z # 'o' afin que ce commentaire ":Debut_..." ne disparaisse pas lors de l'interpretation de # $Z # tout cela par 'listG'. Ainsi, dans le '$Z' genere, les marqueurs ":Debut_listG_PaRaMeTrEs:" # $Z # et ":Fin_listG_PaRaMeTrEs:" n'apparaissent pas de facon symetrique... # $Z SETParam Premiere 1 $Z SETParam Derniere 512 $Z SETParam PasImage 1 $Z # Parametre introduit le 20090409174844 pour 'v $xiak/NCOR.uP$R16' en particulier... # $Z SETParam _____Circulaire $NEXIST $Z # Parametre introduit le 20030623133858 afin de choisir le '$X' utilise : # $Z # # $Z # $_____Circulaire=$NEXIST : $xrr/N_corps.11$X # $Z # $_____Circulaire=$EXIST : $xrr/N_spheres.11$X ou $xrr/N_ellipso.11$X # $Z # (suivant '$_____Elliptique'...). # $Z # # $Z SETParam _____Elliptique $NEXIST $Z # Parametre introduit le 20051105095957 afin de choisir le '$X' utilise : # $Z # # $Z # $_____Circulaire=$EXIST : # $Z # $_____Elliptique=$NEXIST : $xrr/N_spheres.11$X # $Z # $_____Elliptique=$EXIST : $xrr/N_ellipso.11$X # $Z # # $Z SETParam _____Compatibilite_20051107 $NEXIST $Z # Le 20051107155323, j'ai observe que des corps dont a priori les trajectoires devaient etre # $Z # coplanaires ne l'etaient en fait pas dans les images. Cela venait du fait que passer de la # $Z # matrice d'Euler directe a la matrice d'Euler inverse ne se fait pas en changenat le signe # $Z # des trois angles {theta,psi,phi} ('v $ximD/definit.1$DEF psi..direct.et..psi..inverse'). # $Z # Cela a conduit aussi aux modifications 'v $xrr/N_ellipso.11$K compatibilite_20051107' et # $Z # 'v $xrr/N_spheres.11$K compatibilite_20051107'... # $Z SETParam _____Excentricite 0 $Z # Parametre introduit le 20051105095957 correspondant a des ellipses (si evidemment # $Z # '$_____Elliptique' est a l'etat '$EXIST') qui sont en fait des cercles... # $Z if ($_____Circulaire == $EXIST) then $Z if ($_____Elliptique == $EXIST) then $Z SETParam _____Epsilon `GetParam $xrr/N_ellipso.11$X epsilon` $Z # Parametre introduit le 20051107092801 pour controler la resolution de l'equation de # $Z # Kepler... # $Z else $Z endif $Z else $Z endif $Z SETParam _____FacteurUnivers 5 $Z # Parametre permettant de changer la taille de l'Univers (introduit le 20030617141743). # $Z # On notera qu'une valeur egale a 5 est suffisante pour le Systeme Solaire, mais que # $Z # l'utilisation d'un '$_____Extrapolation' strictement positif implique qu'une valeur # $Z # superieure a 5 soit utilisee... # $Z SETParam _____Extrapolation 0 $Z # Extrapolation permettant de partir d'au-dela de Pluton... # $Z SETParam _____Reference 1 $Z # A priori 1 (le Soleil) ou 11 (la planete fictive...). # $Z SETParam _____DCT 15000 $Z SETParam _____Nombre 420 $Z SETParam _____Npas 1250 $Z SETParam _____Ntours 8 $Z SETParam _____DistanceA 0.05e11 $Z # Parametre introduit le 20070123142018 pour 'v $xiak/$Fnota Debut_listG_NCOR_lS' car, en # $Z # effet, avec la valeur par defaut (0.05e11), lorsqu'elle est au plus pres du Soleil, s'en # $Z # eloigne dramatiquement... # $Z setParam _____Lineaire FAUX $Z setParam _____ELineaire 0.4 $Z setParam _____FGRayons 1 $Z # Ce parametre a ete introduit le 20030702102138 pour permettre de controler Globalement # $Z # le Rayon des corps... # $Z setParam _____FARayons 1 $Z # Ce parametre a ete introduit le 20030702102138 (on ne sait jamais...) pour controler # $Z # les Rayons dits "Anterieurs". # $Z setParam _____Canterieurs `GetParam $xrr/N_corps.11$X Canterieurs` $Z # Argument introduit le 20070117164933... # $Z if ($?_____Zoom == $NEXIST) then $Z SET _____Zoom=0.60 $Z # 0.85 est suggere en mode heliocentrique et lineaire des coordonnees... # $Z $Z SETParam _____ZoomD $_____Zoom $Z $Z SETParam _____ZoomA $_____Zoom $Z else $Z SET _____ZoomD=$_____Zoom $Z SET _____ZoomA=$_____Zoom $Z endif $Z setParam _____Lz 1.0e18 $Z setParam _____Rotation_OX 0 $Z setParam _____Rotation_OY 0 $Z setParam _____Rotation_OZ 0 $Z setParam _____FictiveR $GRIS_0 $Z # Parametre introduit le 20070117164933... # $Z setParam _____FictiveV $GRIS_4 $Z # Parametre introduit le 20070117164933... # $Z setParam _____FictiveB $GRIS_8 $Z # Parametre introduit le 20070117164933... # $Z set NcorpsS=11 $Z $DELETE $xTV/ROTATION$COORD_X $Z $xci/valeurs_inte$X p=1 d=$_____Npas vD=$_____Rotation_OX vA=$_____Rotation_OX cubique=VRAI \ $Z > $xTV/ROTATION$COORD_X $Z $DELETE $xTV/ROTATION$COORD_Y $Z $xci/valeurs_inte$X p=1 d=$_____Npas vD=$_____Rotation_OY vA=$_____Rotation_OY cubique=VRAI \ $Z > $xTV/ROTATION$COORD_Y $Z $DELETE $xTV/ROTATION$COORD_Z $Z $xci/valeurs_inte$X p=1 d=$_____Npas vD=$_____Rotation_OZ vA=$_____Rotation_OZ cubique=VRAI \ $Z > $xTV/ROTATION$COORD_Z $Z # Dans les listes suivantes, on trouve dans l'ordre les corps suivants : # $Z # # $Z # Soleil # $Z # # $Z # Mercure # $Z # Venus # $Z # # $Z # Terre+Lune # $Z # # $Z # Mars # $Z # Jupiter # $Z # Saturne # $Z # Uranus # $Z # Neptune # $Z # Pluton # $Z # # $Z # PlaneteVirtuelle # $Z # # $Z # on notant bien qu'en ce qui concerne les MASSES, c'est 'Terre+Lune' que l'on trouve et # $Z # non pas 'Terre' seule ! # $Z GenFListe $xTV/MASSES \ $Z +2.0e30 +3.3e23 +48.7e23 \ $Z +60.5e23 \ $Z +6.4e23 +189.9e25 +56.8e25 +8.6e25 +10.3e25 +6.6e21 \ $Z +60.5e23 $Z GenFListe $xTV/RAYONS \ $Z +30e10 +16e10 +16e10 \ $Z +16e10 \ $Z +16e10 +22e10 +22e10 +20e10 +20e10 +16e10 \ $Z +16e10 $Z if (! -e $xTV/VISIBILITE) then $Z # Test introduit le 20061029112229 afin de permettre de ne pas generer tous les corps et # $Z # ce en assurant la compatibilite anterieure... # $Z GenFListe $xTV/VISIBILITE \ $Z $EXIST $EXIST $EXIST \ $Z $EXIST \ $Z $EXIST $EXIST $EXIST $EXIST $EXIST $EXIST \ $Z $EXIST $Z # Fichier introduit le 20061026125036 tous les corps etant visibles... # $Z else $Z endif $Z if (! -e $xTV/COULEURS$ROUGE) then $Z # Test introduit le 20061029112229 afin de permettre de changer les couleurs des corps et # $Z # ce en assurant la compatibilite anterieure... # $Z GenFListe $xTV/COULEURS$ROUGE \ $Z $GRIS_8 $GRIS_8 $GRIS_8 \ $Z $GRIS_0 \ $Z $GRIS_8 $GRIS_8 $GRIS_8 $GRIS_4 $GRIS_0 $GRIS_7 \ $Z $_____FictiveR $Z else $Z endif $Z if (! -e $xTV/COULEURS$VERTE) then $Z # Test introduit le 20061029112229 afin de permettre de changer les couleurs des corps et # $Z # ce en assurant la compatibilite anterieure... # $Z GenFListe $xTV/COULEURS$VERTE \ $Z $GRIS_8 $GRIS_6 $GRIS_4 \ $Z $GRIS_6 \ $Z $GRIS_4 $GRIS_6 $GRIS_7 $GRIS_8 $GRIS_7 $GRIS_7 \ $Z $_____FictiveV $Z else $Z endif $Z if (! -e $xTV/COULEURS$BLEUE) then $Z # Test introduit le 20061029112229 afin de permettre de changer les couleurs des corps et # $Z # ce en assurant la compatibilite anterieure... # $Z GenFListe $xTV/COULEURS$BLEUE \ $Z $GRIS_0 $GRIS_2 $GRIS_0 \ $Z $GRIS_8 \ $Z $GRIS_2 $GRIS_0 $GRIS_0 $GRIS_8 $GRIS_8 $GRIS_8 \ $Z $_____FictiveB $Z else $Z endif $Z if ($_____Circulaire == $NEXIST) then $Z else $Z GenFListe $xTV/THETA_2D \ $Z 0 0 0 \ $Z 0 \ $Z 0 0 0 0 0 0 \ $Z 0 $Z endif $Z if ($_____Compatibilite_20051107 == $NEXIST) then $Z set CarEulerDirecte=FAUX $Z # Il faut prendre en fait la transformation inverse... # $Z set Compatibilite_xrr=FAUX $Z # Pour '$xrr/N_ellipso.11$X' et '$xrr/N_spheres.11$X'... # $Z else $Z set CarEulerDirecte=VRAI $Z # Pour des raisons de compatibilite, il sera possible d'utiliser la transformation directe... # $Z set Compatibilite_xrr=VRAI $Z # Pour '$xrr/N_ellipso.11$X' et '$xrr/N_spheres.11$X'... # $Z endif #20070117164933____:$Z Pal # $Z SETENV ZoomD $_____ZoomD $Z SETENV ZoomA $_____ZoomA $X echo "neutre" $X # commande destinee uniquement a mettre a jour l'environnement 'env'... # $c #include <stdio.h> $c $c extern double atof(); $c extern char *getenv(); $c $c #define N0 Premiere $c #define N Derniere $c #define P PasImage $c #define K 512 $c #define EXTRAPOLE _____Extrapolation $c $c #define NPAS _____Npas $c #define NTOUR _____Ntours $c $c #define ZOOMD (atof(getenv("ZoomD"))) $c #define ZOOMA (atof(getenv("ZoomA"))) $c $c #define Interpole(D,A,n,N0,N) ((N==N0) ? (D) : (((double)((A*(n-N0))+(D*(N-n))))/((double)(N-N0)))) $c /* Introduit le 20051105173020 pour permettre la generation d'une image unique... */ $c $c extern double cos(); $c extern double sin(); $c extern double pow(); $c extern double sqrt(); $c $c int main() $c { $c int n; $c int numero=N0; $c /* Le numero d'image a ete introduit le 20090409174844 afin de permettre une numerotation */ $c /* de 1 en 1, meme si '$PasImage' est superieur a 1... */ $c $c int NOMBRE=(int)(((double)_____Nombre)*pow((double)(K+EXTRAPOLE)/(double)(K),((double)3)/((double)2))); $c /* L'exposant 3/2 vient de la troisieme loi de Kepler... */ $c /* */ $c /* Le 20051105163934, je me demande vraiment ce que 'N' vient faire dans le calcul de */ $c /* 'NOMBRE', c'est-a-dire le nombre de pas de temps par periode. En fait, ce nombre est */ $c /* destine a allonge la duree de chaque simulation afin que la trajectoire de la planete */ $c /* la plus lointaine soit fermee (comme l'est celle de Pluton a priori...) ; cela explique */ $c /* l'exposant 3/2. Le 20051105173020, je remplace 'N' par 'K' qui lui possede une valeur */ $c /* fixe (512) ne dependant pas du nombre d'images generees (c'est-a-dire 'N'...). La valeur */ $c /* de 'K' (512) est donc choisie afin de conserver la compatiblite anterieure, puisqu'en */ $c /* general, 512 sont generees... */ $c $c double thetaD=0; $c double thetaA=NTOUR*2*3.1415926535897932; $c $c double XcentreS=+1e3; $c double YcentreS=+1e3; $c double ZcentreS=+1e3; $c /* Definition du Soleil. */ $c double XcentreD=-392e+10; $c double YcentreD=+307e+10; $c double ZcentreD=+216e+10; $c double XvitessD=-2.27e+3; $c double YvitessD=-4.53e+3; $c double ZvitessD=-7.39e+2; $c /* Definition de la position de Depart de la planete fictive qui definit simultanement */ $c /* la position reelle de la planete Pluton. ATTENTION : il ne faut donc pas modifier ces */ $c /* valeurs... */ $c double XcentreA; $c double YcentreA; $c double ZcentreA; $c /* Definition de la position d'Arrivee de la planete fictive (proche du Soleil). */ $c $c double Fcentre; $c double OdistD; $c $c if ((((double)_____Npas)*((double)_____DCT)*((double)NOMBRE))/((double)(3600*24*365)) < 248) $c { $c printf("echo 'La duree de la simulation est inferieure a la periode de Pluton.'\n"); $c } $c else $c { $c } $c $c if (N < K) $c { $c printf("echo 'La planete fictive sera en general beaucoup trop loin des neuf autres.'\n"); $c } $c else $c { $c } $c $c OdistD=sqrt(((XcentreD-XcentreS)*(XcentreD-XcentreS))+ $c ((YcentreD-YcentreS)*(YcentreD-YcentreS))+ $c ((ZcentreD-ZcentreS)*(ZcentreD-ZcentreS)) $c ); $c Fcentre=(_____DistanceA/OdistD); $c $c XcentreA=Fcentre*XcentreD; $c YcentreA=Fcentre*YcentreD; $c ZcentreA=Fcentre*ZcentreD; $c $c printf("set PaRaMeTrEs=%c$K_VIDE%c\n",'"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c corps=$NcorpsS%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c np=%d%c\n",'"','"','"',NPAS,'"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c Ar=$_____FGRayons%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_RAYON=$xTV/RAYONS%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_VISIBILITE=$xTV/VISIBILITE%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_ROUGE=$xTV/COULEURS$ROUGE%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_VERTE=$xTV/COULEURS$VERTE%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_BLEUE=$xTV/COULEURS$BLEUE%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c centrer=FAUX reference=$_____Reference%c\n" $c ,'"','"','"','"' $c ); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c extension=$_____FacteurUnivers%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c dct=$_____DCT%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c nombre=%d%c\n",'"','"','"',NOMBRE,'"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c ensemble=VRAI%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c Ranterieurs=$_____FARayons%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c Canterieurs=$_____Canterieurs%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c trainees=FAUX%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c renormaliser=FAUX%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c lineaire=$_____Lineaire exposant=$_____ELineaire%c\n" $c ,'"','"','"','"' $c ); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c Lz=$_____Lz%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c TRANSLATION_OX=0%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c TRANSLATION_OY=0%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c ROTATION_OX=$xTV/ROTATION$COORD_X%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c ROTATION_OY=$xTV/ROTATION$COORD_Y%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c ROTATION_OZ=$xTV/ROTATION$COORD_Z%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c fond=FAUX%c\n",'"','"','"','"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c pV=%d%c\n",'"','"','"',NPAS,'"'); $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c N_au_carre=FAUX%c\n",'"','"','"','"'); $c $c printf("if ($_____Circulaire == $NEXIST) then\n"); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_X=$xTV/COORDONNEES$COORD_X%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_Y=$xTV/COORDONNEES$COORD_Y%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_Z=$xTV/COORDONNEES$COORD_Z%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_VX=$xTV/VITESSES$COORD_X%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_VY=$xTV/VITESSES$COORD_Y%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_VZ=$xTV/VITESSES$COORD_Z%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_MASSE=$xTV/MASSES%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c ZOOM=$_____Zoom%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c 2_a_2=FAUX source=1%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c acceptable=0.5%c\n",'"','"','"','"'); $c printf("else\n"); $c printf(" if ($_____Elliptique == $NEXIST) then\n"); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_THETA_3D=$xTV/THETA_3D%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_PSI_3D=$xTV/PSI_3D%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_PHI_3D=$xTV/PHI_3D%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_TRANSLATION_X_3D=0%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_TRANSLATION_Y_3D=0%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_TRANSLATION_Z_3D=0%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_RAYON_2D=$xTV/RAYON_2D%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_THETA_2D=$xTV/THETA_2D%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_DELTA_THETA_2D=$xTV/DELTA_THETA_2D%c\n" $c ,'"','"','"','"' $c ); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c compatibilite_20051107=$Compatibilite_xrr%c\n" $c ,'"','"','"','"' $c ); $c printf(" else\n"); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_THETA_3D=$xTV/THETA_3D%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_PSI_3D=$xTV/PSI_3D%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_PHI_3D=$xTV/PHI_3D%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_TRANSLATION_X_3D=0%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_TRANSLATION_Y_3D=0%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_TRANSLATION_Z_3D=0%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_DEMI_PETIT_AXE_2D=$xTV/DPETIT_AXE_2D%c\n" $c ,'"','"','"','"' $c ); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_DEMI_GRAND_AXE_2D=$xTV/DGRAND_AXE_2D%c\n" $c ,'"','"','"','"' $c ); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_THETA_2D=$xTV/THETA_2D%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c LISTE_DELTA_THETA_2D=$xTV/DELTA_THETA_2D%c\n" $c ,'"','"','"','"' $c ); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c epsilon=$_____Epsilon%c\n",'"','"','"','"'); $c printf(" set PaRaMeTrEs=%c$PaRaMeTrEs%c%c compatibilite_20051107=$Compatibilite_xrr%c\n" $c ,'"','"','"','"' $c ); $c printf(" endif\n"); $c printf("endif\n"); $c $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c chiffres=0%c\n",'"','"','"','"'); $c /* Introduit le 20051106113636 afin de simplifier la fin du processus... */ $c $c printf("set PaRaMeTrEs=%c$PaRaMeTrEs%c%c editer_hors=FAUX%c\n",'"','"','"','"'); $c /* Introduit le 20051106113636 afin de simplifier la fin du processus... */ $c #20090922182812____:$c printf("# :Fin_listG_NCOR_f1_1_11_PaRaMeTrEs: #\n"); # $c printf("# :Fin_listG_PaRaMeTrEs: #\n"); $c /* Introduit le 20090922121017 afin de permettre de recuperer via 'listMN' et {Debut,Fin} */ $c /* tout ce qui est necessaire pour calculer une seule des images, par exemple, afin d'en */ $c /* faire une version stereographique '$R16' ('v $xiirk/.NCOR.u1.1.11.$U Fin_listG_')... */ $c $c for (n=N0 ; n<=N ; n=n+P) $c { $c double ne=Interpole(N0-EXTRAPOLE,N,n,N0,N); $c /* Indice 'n' extrapole. ATTENTION : je note le 20051106125554 qu'une valeur trop faible */ $c /* de 'N' donnera alors des resultats aberrants : la planete fictive sera pratiquement */ $c /* toujours beaucoup trop loin des neuf autres. Par exemple, pour N=9, alors que les */ $c /* que les coordonnees de Depart (Pluton) sont de l'ordre de 1e+12 et que celles d'Arrivee */ $c /* sont de l'ordre de 1e+9, les coordonnees de la planete fictive sont-elles de l'ordre */ $c /* de 1e+14... */ $c $c double zoom=Interpole(ZOOMD,ZOOMA,ne,N0,N); $c $c double Xcentre_AR=Interpole(XcentreD,XcentreA,ne,N0,N); $c double Ycentre_AR=Interpole(YcentreD,YcentreA,ne,N0,N); $c double Zcentre_AR=Interpole(ZcentreD,ZcentreA,ne,N0,N); $c /* Coordonnees de la planete fictive Avant Rotation. */ $c $c double Xcentre; $c double Ycentre; $c double Zcentre; $c $c double Xvitess; $c double Yvitess; $c double Zvitess; $c $c double Odist; $c $c double theta=Interpole(thetaD,thetaA,n,N0,N); $c #20090922182812____:$c printf("# :Debut_listG_NCOR_f1_1_11______images_%04d #\n" # #20090922182812____:$c ,numero # #20090922182812____:$c ); # $c printf("# :Debut_listG______images_%04d: #\n" $c ,numero $c ); $c /* Introduit le 20090922121017 afin de permettre de recuperer via 'listMN' et {Debut,Fin} */ $c /* tout ce qui est necessaire pour calculer une seule des images, par exemple, afin d'en */ $c /* faire une version stereographique '$R16' ('v $xiirk/.NCOR.u1.1.11.$U Debut_listG_')... */ $c $c Xcentre=+(Xcentre_AR*cos(theta))+(Zcentre_AR*sin(theta)); $c Ycentre=Ycentre_AR; $c Zcentre=-(Xcentre_AR*sin(theta))+(Zcentre_AR*cos(theta)); $c $c Odist=sqrt(((Xcentre-XcentreS)*(Xcentre-XcentreS))+ $c ((Ycentre-YcentreS)*(Ycentre-YcentreS))+ $c ((Zcentre-ZcentreS)*(Zcentre-ZcentreS)) $c ); $c $c Xvitess=XvitessD*sqrt(OdistD/Odist); $c Yvitess=YvitessD*sqrt(OdistD/Odist); $c Zvitess=ZvitessD*sqrt(OdistD/Odist); $c /* L'utilisation de 'sqrt(...)' est expliquee dans 'v $xrr/N_corps.11$K sqrt.OdistD'. */ $c $c printf("GenFListe $xTV/COORDONNEES$COORD_X $c %+g +514e+8 +213e+8 $c -203e+8 $c -204e+9 +501e+9 -134e+10 -150e+9 -436e+10 $c %+g %+g\n" $c ,XcentreS,XcentreD,Xcentre $c ); $c printf("GenFListe $xTV/COORDONNEES$COORD_Y $c %+g +682e+7 +967e+8 $c +133e+9 $c +126e+9 -519e+9 +341e+9 +259e+10 -115e+10 $c %+g %+g\n" $c ,YcentreS,YcentreD,Ycentre $c ); $c printf("GenFListe $xTV/COORDONNEES$COORD_Z $c %+g -163e+7 +422e+8 $c +579e+8 $c +634e+8 -235e+9 +199e+9 +113e+10 -363e+9 $c %+g %+g\n" $c ,ZcentreS,ZcentreD,Zcentre $c ); $c $c printf("GenFListe $xTV/VITESSES$COORD_X $c 0 -1.46e+4 -3.44e+4 $c -2.99e+4 $c -1.27e+4 +9.67e+3 -3.21e+3 -6.84e+3 +1.42e+3 $c %+g %+g\n" $c ,XvitessD,Xvitess $c ); $c printf("GenFListe $xTV/VITESSES$COORD_Y $c 0 +4.43e+4 +5.39e+3 $c -3.88e+3 $c -1.64e+4 +8.59e+3 -8.62e+3 -6.50e+2 -4.79e+3 $c %+g %+g\n" $c ,YvitessD,Yvitess $c ); $c printf("GenFListe $xTV/VITESSES$COORD_Z $c 0 +2.52e+4 +4.60e+3 $c -1.68e+3 $c -7.18e+3 +3.44e+3 -3.42e+3 -1.88e+2 -2.00e+3 $c %+g %+g\n" $c ,ZvitessD,Zvitess $c ); $c $c printf("if ($_____Circulaire == $NEXIST) then\n"); $c printf(" $xrr/N_corps.11$X $c $PaRaMeTrEs $c R=$_____images.%04d $c $formatI\n" $c ,numero $c ); $c printf("else\n"); $c printf(" $DELETE $xTV/THETA_3D\n"); $c printf(" $DELETE $xTV/PSI_3D\n"); $c printf(" $DELETE $xTV/PHI_3D\n"); $c $c printf(" $xrv/Car_Euler.01$X $c ne=$NcorpsS $c LISTE_V1X=$xTV/COORDONNEES$COORD_X $c LISTE_V1Y=$xTV/COORDONNEES$COORD_Y $c LISTE_V1Z=$xTV/COORDONNEES$COORD_Z $c LISTE_V2X=$xTV/VITESSES$COORD_X $c LISTE_V2Y=$xTV/VITESSES$COORD_Y $c LISTE_V2Z=$xTV/VITESSES$COORD_Z $c directe=$CarEulerDirecte $c pTHETA=1 pPSI=0 pPHI=0 $c CAL1=FAUX $c > $xTV/THETA_3D\n" $c /* Le 'CAL1=FAUX' a ete introduit le 20030702110326 a cause du Soleil dont la vitesse */ $c /* est nulle systematiquement (V2={0,0,0})... */ $c ); $c printf(" $xrv/Car_Euler.01$X $c ne=$NcorpsS $c LISTE_V1X=$xTV/COORDONNEES$COORD_X $c LISTE_V1Y=$xTV/COORDONNEES$COORD_Y $c LISTE_V1Z=$xTV/COORDONNEES$COORD_Z $c LISTE_V2X=$xTV/VITESSES$COORD_X $c LISTE_V2Y=$xTV/VITESSES$COORD_Y $c LISTE_V2Z=$xTV/VITESSES$COORD_Z $c directe=$CarEulerDirecte $c pTHETA=0 pPSI=1 pPHI=0 $c CAL1=FAUX $c > $xTV/PSI_3D\n" $c /* Le 'CAL1=FAUX' a ete introduit le 20030702110326 a cause du Soleil dont la vitesse */ $c /* est nulle systematiquement (V2={0,0,0})... */ $c ); $c printf(" $xrv/Car_Euler.01$X $c ne=$NcorpsS $c LISTE_V1X=$xTV/COORDONNEES$COORD_X $c LISTE_V1Y=$xTV/COORDONNEES$COORD_Y $c LISTE_V1Z=$xTV/COORDONNEES$COORD_Z $c LISTE_V2X=$xTV/VITESSES$COORD_X $c LISTE_V2Y=$xTV/VITESSES$COORD_Y $c LISTE_V2Z=$xTV/VITESSES$COORD_Z $c directe=$CarEulerDirecte $c pTHETA=0 pPSI=0 pPHI=1 $c CAL1=FAUX $c > $xTV/PHI_3D\n" $c /* Le 'CAL1=FAUX' a ete introduit le 20030702110326 a cause du Soleil dont la vitesse */ $c /* est nulle systematiquement (V2={0,0,0})... */ $c ); $c $c printf(" $DELETE $xTV/RAYON_2D\n"); $c $c printf(" $xrv/distance.11$X $c ne=$NcorpsS $c LISTE_X=$xTV/COORDONNEES$COORD_X $c LISTE_Y=$xTV/COORDONNEES$COORD_Y $c LISTE_Z=$xTV/COORDONNEES$COORD_Z $c euclidienne=VRAI $c X0=0 Y0=0 Z0=0 $c > $xTV/RAYON_2D\n" $c ); $c $c printf(" $DELETE $xTV/MODULE_VITESSE\n"); $c $c printf(" $xrv/distance.11$X $c ne=$NcorpsS $c LISTE_X=$xTV/VITESSES$COORD_X $c LISTE_Y=$xTV/VITESSES$COORD_Y $c LISTE_Z=$xTV/VITESSES$COORD_Z $c euclidienne=VRAI $c X0=0 Y0=0 Z0=0 $c > $xTV/MODULE_VITESSE\n" $c ); $c $c printf(" $DELETE $xTV/OMEGA_2D\n"); $c printf(" $DELETE $xTV/DELTA_THETA_2D\n"); $c $c printf(" $xrv/DIVZ.11$X $c ne=$NcorpsS $c fichier1=$xTV/MODULE_VITESSE $c fichier2=$xTV/RAYON_2D $c > $xTV/OMEGA_2D\n" $c ); $c /* Le quotient de la VITESSE par le RAYON donne la vitesse angulaire OMEGA, c'est-a-dire */ $c /* le nombre de tours par seconde... */ $c printf(" set NoMbReSeCoNdEs=`calcul $_____DCT*%d`\n" $c ,NOMBRE $c ); $c printf(" $xrv/MUL2.11$X $c ne=$NcorpsS $c fichier1=$NoMbReSeCoNdEs $c fichier2=$xTV/OMEGA_2D $c > $xTV/DELTA_THETA_2D\n" $c ); $c /* Il convient ensuite de multiplier OMEGA par le nombre de secondes ($_____DCT multiplie */ $c /* par NOMBRE) separant deux images... */ $c $c printf(" if ($_____Elliptique == $NEXIST) then\n"); $c printf(" $xrr/N_spheres.11$X $c $PaRaMeTrEs $c ZOOM=%f $c R=$_____images.%04d $c $formatI\n" $c ,zoom,numero $c ); $c $c printf(" else\n"); $c $c printf(" $DELETE $xTV/DGRAND_AXE_2D\n"); $c printf(" $DELETE $xTV/DPETIT_AXE_2D\n"); $c $c printf(" $xrv/neutre$X $c ne=$NcorpsS $c fichier=$xTV/RAYON_2D $c > $xTV/DGRAND_AXE_2D\n" $c ); $c printf(" set DeMiPeTiTAxE=`calcul sqrt(1-($_____Excentricite*$_____Excentricite))`\n"); $c printf(" $xrv/MUL2.11$X $c ne=$NcorpsS $c fichier1=$DeMiPeTiTAxE $c fichier2=$xTV/DGRAND_AXE_2D $c > $xTV/DPETIT_AXE_2D\n" $c ); $c $c printf(" $xrr/N_ellipso.11$X $c $PaRaMeTrEs $c ZOOM=%f $c R=$_____images.%04d $c $formatI\n" $c ,zoom,numero $c ); $c $c printf(" $DELETE $xTV/DGRAND_AXE_2D\n"); $c printf(" $DELETE $xTV/DPETIT_AXE_2D\n"); $c $c printf(" endif\n"); $c $c printf(" $DELETE $xTV/THETA_3D\n"); $c printf(" $DELETE $xTV/PSI_3D\n"); $c printf(" $DELETE $xTV/PHI_3D\n"); $c printf(" $DELETE $xTV/RAYON_2D\n"); $c printf(" $DELETE $xTV/MODULE_VITESSE\n"); $c printf(" $DELETE $xTV/OMEGA_2D\n"); $c printf(" $DELETE $xTV/DELTA_THETA_2D\n"); $c $c printf("endif\n"); $c $c printf("$DELETE $xTV/COORDONNEES$COORD_X\n"); $c printf("$DELETE $xTV/COORDONNEES$COORD_Y\n"); $c printf("$DELETE $xTV/COORDONNEES$COORD_Z\n"); $c $c printf("$DELETE $xTV/VITESSES$COORD_X\n"); $c printf("$DELETE $xTV/VITESSES$COORD_Y\n"); $c printf("$DELETE $xTV/VITESSES$COORD_Z\n"); $c #20090922182812____:$c printf("# :Fin_listG_NCOR_f1_1_11______images_%04d #\n" # #20090922182812____:$c ,numero # #20090922182812____:$c ); # $c printf("# :Fin_listG______images_%04d: #\n" $c ,numero $c ); $c /* Introduit le 20090922121017 afin de permettre de recuperer via 'listMN' et {Debut,Fin} */ $c /* tout ce qui est necessaire pour calculer une seule des images, par exemple, afin d'en */ $c /* faire une version stereographique '$R16' ('v $xiirk/.NCOR.u1.1.11.$U Fin_listG_')... */ $c $c numero++; $c /* Le numero d'image a ete introduit le 20090409174844 afin de permettre une numerotation */ $c /* de 1 en 1, meme si '$PasImage' est superieur a 1... */ $c } $c } $Z $DELETE $xTV/MASSES $Z $DELETE $xTV/RAYONS $Z $DELETE $xTV/VISIBILITE $Z $DELETE $xTV/COULEURS$ROUGE $Z $DELETE $xTV/COULEURS$VERTE $Z $DELETE $xTV/COULEURS$BLEUE $Z $Z $DELETE $xTV/ROTATION$COORD_X