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



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.