コード例 #1
0
 // CONSTRUCTEURS
 public CorpsCeleste(string a_nom, TypeCorpsCeleste a_type)
 {
     nom  = a_nom;
     type = a_type;
 }
コード例 #2
0
        // METHODES PUBLIQUES
        //Aucune

        // METHODES PRIVEES

        // Algorithme 8P et 33
        /// <summary>
        /// Calcule la longitude et la latitude écliptiques héliocentriques d'une planète ainsi que le rayon vecteur de la planète
        /// à partir du Jour Julien des Ephémérides et de la distance de la planète à la Terre. Lorsqu'il s'agit de la Terre, les coordonnées
        /// écliptiques géocentriques du Soleil sont également calculées.
        /// </summary>
        /// <param name="a_lieuEtDateCalcul">Lieu d'observation et date pour le calcul.</param>
        /// <param name="a_planete">Type de planète pour le calcul.</param>
        /// <param name="a_distance">Distance de la planète pour la prise en compte du temps de trajet de la lumière. Ce paramètre est optionnel, par défaut la distance est prise à 0 (pas de prise en compte du temps de trajet de la lumière).</param>
        protected void CalculerCoordonneesEcliptiquesEtRayonVecteur(PositionTemps a_lieuEtDateCalcul, TypeCorpsCeleste a_planete, double a_distance = 0)
        {
            // Déclaration des variables de calcul de la méthode
            double T;
            int    indexMaxCoefficientL0 = 0;
            int    indexMaxCoefficientL1 = 0;
            int    indexMaxCoefficientL2 = 0;
            int    indexMaxCoefficientL3 = 0;
            int    indexMaxCoefficientL4 = 0;
            int    indexMaxCoefficientL5 = 0;
            int    indexMaxCoefficientB0 = 0;
            int    indexMaxCoefficientB1 = 0;
            int    indexMaxCoefficientB2 = 0;
            int    indexMaxCoefficientB3 = 0;
            int    indexMaxCoefficientB4 = 0;
            int    indexMaxCoefficientB5 = 0;
            int    indexMaxCoefficientR0 = 0;
            int    indexMaxCoefficientR1 = 0;
            int    indexMaxCoefficientR2 = 0;
            int    indexMaxCoefficientR3 = 0;
            int    indexMaxCoefficientR4 = 0;
            int    indexMaxCoefficientR5 = 0;

            double[,] coefficientL0 = null;
            double[,] coefficientL1 = null;
            double[,] coefficientL2 = null;
            double[,] coefficientL3 = null;
            double[,] coefficientL4 = null;
            double[,] coefficientL5 = null;
            double[,] coefficientB0 = null;
            double[,] coefficientB1 = null;
            double[,] coefficientB2 = null;
            double[,] coefficientB3 = null;
            double[,] coefficientB4 = null;
            double[,] coefficientB5 = null;
            double[,] coefficientR0 = null;
            double[,] coefficientR1 = null;
            double[,] coefficientR2 = null;
            double[,] coefficientR3 = null;
            double[,] coefficientR4 = null;
            double[,] coefficientR5 = null;
            int    i;
            double L0 = 0.0, L1 = 0.0, L2 = 0.0, L3 = 0.0, L4 = 0.0, L5 = 0.0;
            double B0 = 0.0, B1 = 0.0, B2 = 0.0, B3 = 0.0, B4 = 0.0, B5 = 0.0;
            double R0 = 0.0, R1 = 0.0, R2 = 0.0, R3 = 0.0, R4 = 0.0, R5 = 0.0;
            double Lprime, deltaL, deltaB;

            // Calcul du nombre de millénaires écoulés depuis le 1,5 janvier 2000
            T = (a_lieuEtDateCalcul.JourJulienEphemerides - 0.0057755183 * a_distance - 2451545.0) / 365250.0;

            // Calcul des séries pour la longitude écliptique héliocentrique de la planète
            switch (a_planete)
            {
            case TypeCorpsCeleste.TERRE_SOLEIL:
                indexMaxCoefficientL0 = VSOP87BP.INDEX_MAX_COEFFICIENT_L0_TERRE;
                indexMaxCoefficientL1 = VSOP87BP.INDEX_MAX_COEFFICIENT_L1_TERRE;
                indexMaxCoefficientL2 = VSOP87BP.INDEX_MAX_COEFFICIENT_L2_TERRE;
                indexMaxCoefficientL3 = VSOP87BP.INDEX_MAX_COEFFICIENT_L3_TERRE;
                indexMaxCoefficientL4 = VSOP87BP.INDEX_MAX_COEFFICIENT_L4_TERRE;
                indexMaxCoefficientL5 = VSOP87BP.INDEX_MAX_COEFFICIENT_L5_TERRE;
                indexMaxCoefficientB0 = VSOP87BP.INDEX_MAX_COEFFICIENT_B0_TERRE;
                indexMaxCoefficientB1 = VSOP87BP.INDEX_MAX_COEFFICIENT_B1_TERRE;
                indexMaxCoefficientB2 = VSOP87BP.INDEX_MAX_COEFFICIENT_B2_TERRE;
                indexMaxCoefficientB3 = VSOP87BP.INDEX_MAX_COEFFICIENT_B3_TERRE;
                indexMaxCoefficientB4 = VSOP87BP.INDEX_MAX_COEFFICIENT_B4_TERRE;
                indexMaxCoefficientB5 = VSOP87BP.INDEX_MAX_COEFFICIENT_B5_TERRE;
                indexMaxCoefficientR0 = VSOP87BP.INDEX_MAX_COEFFICIENT_R0_TERRE;
                indexMaxCoefficientR1 = VSOP87BP.INDEX_MAX_COEFFICIENT_R1_TERRE;
                indexMaxCoefficientR2 = VSOP87BP.INDEX_MAX_COEFFICIENT_R2_TERRE;
                indexMaxCoefficientR3 = VSOP87BP.INDEX_MAX_COEFFICIENT_R3_TERRE;
                indexMaxCoefficientR4 = VSOP87BP.INDEX_MAX_COEFFICIENT_R4_TERRE;
                indexMaxCoefficientR5 = VSOP87BP.INDEX_MAX_COEFFICIENT_R5_TERRE;
                coefficientL0         = VSOP87BP.COEFFICIENT_L0_TERRE;
                coefficientL1         = VSOP87BP.COEFFICIENT_L1_TERRE;
                coefficientL2         = VSOP87BP.COEFFICIENT_L2_TERRE;
                coefficientL3         = VSOP87BP.COEFFICIENT_L3_TERRE;
                coefficientL4         = VSOP87BP.COEFFICIENT_L4_TERRE;
                coefficientL5         = VSOP87BP.COEFFICIENT_L5_TERRE;
                coefficientB0         = VSOP87BP.COEFFICIENT_B0_TERRE;
                coefficientB1         = VSOP87BP.COEFFICIENT_B1_TERRE;
                coefficientR0         = VSOP87BP.COEFFICIENT_R0_TERRE;
                coefficientR1         = VSOP87BP.COEFFICIENT_R1_TERRE;
                coefficientR2         = VSOP87BP.COEFFICIENT_R2_TERRE;
                coefficientR3         = VSOP87BP.COEFFICIENT_R3_TERRE;
                coefficientR4         = VSOP87BP.COEFFICIENT_R4_TERRE;
                break;

            case TypeCorpsCeleste.MERCURE:
                indexMaxCoefficientL0 = VSOP87BP.INDEX_MAX_COEFFICIENT_L0_MERCURE;
                indexMaxCoefficientL1 = VSOP87BP.INDEX_MAX_COEFFICIENT_L1_MERCURE;
                indexMaxCoefficientL2 = VSOP87BP.INDEX_MAX_COEFFICIENT_L2_MERCURE;
                indexMaxCoefficientL3 = VSOP87BP.INDEX_MAX_COEFFICIENT_L3_MERCURE;
                indexMaxCoefficientL4 = VSOP87BP.INDEX_MAX_COEFFICIENT_L4_MERCURE;
                indexMaxCoefficientL5 = VSOP87BP.INDEX_MAX_COEFFICIENT_L5_MERCURE;
                indexMaxCoefficientB0 = VSOP87BP.INDEX_MAX_COEFFICIENT_B0_MERCURE;
                indexMaxCoefficientB1 = VSOP87BP.INDEX_MAX_COEFFICIENT_B1_MERCURE;
                indexMaxCoefficientB2 = VSOP87BP.INDEX_MAX_COEFFICIENT_B2_MERCURE;
                indexMaxCoefficientB3 = VSOP87BP.INDEX_MAX_COEFFICIENT_B3_MERCURE;
                indexMaxCoefficientB4 = VSOP87BP.INDEX_MAX_COEFFICIENT_B4_MERCURE;
                indexMaxCoefficientB5 = VSOP87BP.INDEX_MAX_COEFFICIENT_B5_MERCURE;
                indexMaxCoefficientR0 = VSOP87BP.INDEX_MAX_COEFFICIENT_R0_MERCURE;
                indexMaxCoefficientR1 = VSOP87BP.INDEX_MAX_COEFFICIENT_R1_MERCURE;
                indexMaxCoefficientR2 = VSOP87BP.INDEX_MAX_COEFFICIENT_R2_MERCURE;
                indexMaxCoefficientR3 = VSOP87BP.INDEX_MAX_COEFFICIENT_R3_MERCURE;
                indexMaxCoefficientR4 = VSOP87BP.INDEX_MAX_COEFFICIENT_R4_MERCURE;
                indexMaxCoefficientR5 = VSOP87BP.INDEX_MAX_COEFFICIENT_R5_MERCURE;
                coefficientL0         = VSOP87BP.COEFFICIENT_L0_MERCURE;
                coefficientL1         = VSOP87BP.COEFFICIENT_L1_MERCURE;
                coefficientL2         = VSOP87BP.COEFFICIENT_L2_MERCURE;
                coefficientL3         = VSOP87BP.COEFFICIENT_L3_MERCURE;
                coefficientL4         = VSOP87BP.COEFFICIENT_L4_MERCURE;
                coefficientL5         = VSOP87BP.COEFFICIENT_L5_MERCURE;
                coefficientB0         = VSOP87BP.COEFFICIENT_B0_MERCURE;
                coefficientB1         = VSOP87BP.COEFFICIENT_B1_MERCURE;
                coefficientB2         = VSOP87BP.COEFFICIENT_B2_MERCURE;
                coefficientB3         = VSOP87BP.COEFFICIENT_B3_MERCURE;
                coefficientB4         = VSOP87BP.COEFFICIENT_B4_MERCURE;
                coefficientR0         = VSOP87BP.COEFFICIENT_R0_MERCURE;
                coefficientR1         = VSOP87BP.COEFFICIENT_R1_MERCURE;
                coefficientR2         = VSOP87BP.COEFFICIENT_R2_MERCURE;
                coefficientR3         = VSOP87BP.COEFFICIENT_R3_MERCURE;
                break;

            case TypeCorpsCeleste.VENUS:
                indexMaxCoefficientL0 = VSOP87BP.INDEX_MAX_COEFFICIENT_L0_VENUS;
                indexMaxCoefficientL1 = VSOP87BP.INDEX_MAX_COEFFICIENT_L1_VENUS;
                indexMaxCoefficientL2 = VSOP87BP.INDEX_MAX_COEFFICIENT_L2_VENUS;
                indexMaxCoefficientL3 = VSOP87BP.INDEX_MAX_COEFFICIENT_L3_VENUS;
                indexMaxCoefficientL4 = VSOP87BP.INDEX_MAX_COEFFICIENT_L4_VENUS;
                indexMaxCoefficientL5 = VSOP87BP.INDEX_MAX_COEFFICIENT_L5_VENUS;
                indexMaxCoefficientB0 = VSOP87BP.INDEX_MAX_COEFFICIENT_B0_VENUS;
                indexMaxCoefficientB1 = VSOP87BP.INDEX_MAX_COEFFICIENT_B1_VENUS;
                indexMaxCoefficientB2 = VSOP87BP.INDEX_MAX_COEFFICIENT_B2_VENUS;
                indexMaxCoefficientB3 = VSOP87BP.INDEX_MAX_COEFFICIENT_B3_VENUS;
                indexMaxCoefficientB4 = VSOP87BP.INDEX_MAX_COEFFICIENT_B4_VENUS;
                indexMaxCoefficientB5 = VSOP87BP.INDEX_MAX_COEFFICIENT_B5_VENUS;
                indexMaxCoefficientR0 = VSOP87BP.INDEX_MAX_COEFFICIENT_R0_VENUS;
                indexMaxCoefficientR1 = VSOP87BP.INDEX_MAX_COEFFICIENT_R1_VENUS;
                indexMaxCoefficientR2 = VSOP87BP.INDEX_MAX_COEFFICIENT_R2_VENUS;
                indexMaxCoefficientR3 = VSOP87BP.INDEX_MAX_COEFFICIENT_R3_VENUS;
                indexMaxCoefficientR4 = VSOP87BP.INDEX_MAX_COEFFICIENT_R4_VENUS;
                indexMaxCoefficientR5 = VSOP87BP.INDEX_MAX_COEFFICIENT_R5_VENUS;
                coefficientL0         = VSOP87BP.COEFFICIENT_L0_VENUS;
                coefficientL1         = VSOP87BP.COEFFICIENT_L1_VENUS;
                coefficientL2         = VSOP87BP.COEFFICIENT_L2_VENUS;
                coefficientL3         = VSOP87BP.COEFFICIENT_L3_VENUS;
                coefficientL4         = VSOP87BP.COEFFICIENT_L4_VENUS;
                coefficientL5         = VSOP87BP.COEFFICIENT_L5_VENUS;
                coefficientB0         = VSOP87BP.COEFFICIENT_B0_VENUS;
                coefficientB1         = VSOP87BP.COEFFICIENT_B1_VENUS;
                coefficientB2         = VSOP87BP.COEFFICIENT_B2_VENUS;
                coefficientB3         = VSOP87BP.COEFFICIENT_B3_VENUS;
                coefficientB4         = VSOP87BP.COEFFICIENT_B4_VENUS;
                coefficientR0         = VSOP87BP.COEFFICIENT_R0_VENUS;
                coefficientR1         = VSOP87BP.COEFFICIENT_R1_VENUS;
                coefficientR2         = VSOP87BP.COEFFICIENT_R2_VENUS;
                coefficientR3         = VSOP87BP.COEFFICIENT_R3_VENUS;
                coefficientR4         = VSOP87BP.COEFFICIENT_R4_VENUS;
                break;

            case TypeCorpsCeleste.MARS:
                indexMaxCoefficientL0 = VSOP87BP.INDEX_MAX_COEFFICIENT_L0_MARS;
                indexMaxCoefficientL1 = VSOP87BP.INDEX_MAX_COEFFICIENT_L1_MARS;
                indexMaxCoefficientL2 = VSOP87BP.INDEX_MAX_COEFFICIENT_L2_MARS;
                indexMaxCoefficientL3 = VSOP87BP.INDEX_MAX_COEFFICIENT_L3_MARS;
                indexMaxCoefficientL4 = VSOP87BP.INDEX_MAX_COEFFICIENT_L4_MARS;
                indexMaxCoefficientL5 = VSOP87BP.INDEX_MAX_COEFFICIENT_L5_MARS;
                indexMaxCoefficientB0 = VSOP87BP.INDEX_MAX_COEFFICIENT_B0_MARS;
                indexMaxCoefficientB1 = VSOP87BP.INDEX_MAX_COEFFICIENT_B1_MARS;
                indexMaxCoefficientB2 = VSOP87BP.INDEX_MAX_COEFFICIENT_B2_MARS;
                indexMaxCoefficientB3 = VSOP87BP.INDEX_MAX_COEFFICIENT_B3_MARS;
                indexMaxCoefficientB4 = VSOP87BP.INDEX_MAX_COEFFICIENT_B4_MARS;
                indexMaxCoefficientB5 = VSOP87BP.INDEX_MAX_COEFFICIENT_B5_MARS;
                indexMaxCoefficientR0 = VSOP87BP.INDEX_MAX_COEFFICIENT_R0_MARS;
                indexMaxCoefficientR1 = VSOP87BP.INDEX_MAX_COEFFICIENT_R1_MARS;
                indexMaxCoefficientR2 = VSOP87BP.INDEX_MAX_COEFFICIENT_R2_MARS;
                indexMaxCoefficientR3 = VSOP87BP.INDEX_MAX_COEFFICIENT_R3_MARS;
                indexMaxCoefficientR4 = VSOP87BP.INDEX_MAX_COEFFICIENT_R4_MARS;
                indexMaxCoefficientR5 = VSOP87BP.INDEX_MAX_COEFFICIENT_R5_MARS;
                coefficientL0         = VSOP87BP.COEFFICIENT_L0_MARS;
                coefficientL1         = VSOP87BP.COEFFICIENT_L1_MARS;
                coefficientL2         = VSOP87BP.COEFFICIENT_L2_MARS;
                coefficientL3         = VSOP87BP.COEFFICIENT_L3_MARS;
                coefficientL4         = VSOP87BP.COEFFICIENT_L4_MARS;
                coefficientL5         = VSOP87BP.COEFFICIENT_L5_MARS;
                coefficientB0         = VSOP87BP.COEFFICIENT_B0_MARS;
                coefficientB1         = VSOP87BP.COEFFICIENT_B1_MARS;
                coefficientB2         = VSOP87BP.COEFFICIENT_B2_MARS;
                coefficientB3         = VSOP87BP.COEFFICIENT_B3_MARS;
                coefficientB4         = VSOP87BP.COEFFICIENT_B4_MARS;
                coefficientR0         = VSOP87BP.COEFFICIENT_R0_MARS;
                coefficientR1         = VSOP87BP.COEFFICIENT_R1_MARS;
                coefficientR2         = VSOP87BP.COEFFICIENT_R2_MARS;
                coefficientR3         = VSOP87BP.COEFFICIENT_R3_MARS;
                coefficientR4         = VSOP87BP.COEFFICIENT_R4_MARS;
                break;

            case TypeCorpsCeleste.JUPITER:
                indexMaxCoefficientL0 = VSOP87BP.INDEX_MAX_COEFFICIENT_L0_JUPITER;
                indexMaxCoefficientL1 = VSOP87BP.INDEX_MAX_COEFFICIENT_L1_JUPITER;
                indexMaxCoefficientL2 = VSOP87BP.INDEX_MAX_COEFFICIENT_L2_JUPITER;
                indexMaxCoefficientL3 = VSOP87BP.INDEX_MAX_COEFFICIENT_L3_JUPITER;
                indexMaxCoefficientL4 = VSOP87BP.INDEX_MAX_COEFFICIENT_L4_JUPITER;
                indexMaxCoefficientL5 = VSOP87BP.INDEX_MAX_COEFFICIENT_L5_JUPITER;
                indexMaxCoefficientB0 = VSOP87BP.INDEX_MAX_COEFFICIENT_B0_JUPITER;
                indexMaxCoefficientB1 = VSOP87BP.INDEX_MAX_COEFFICIENT_B1_JUPITER;
                indexMaxCoefficientB2 = VSOP87BP.INDEX_MAX_COEFFICIENT_B2_JUPITER;
                indexMaxCoefficientB3 = VSOP87BP.INDEX_MAX_COEFFICIENT_B3_JUPITER;
                indexMaxCoefficientB4 = VSOP87BP.INDEX_MAX_COEFFICIENT_B4_JUPITER;
                indexMaxCoefficientB5 = VSOP87BP.INDEX_MAX_COEFFICIENT_B5_JUPITER;
                indexMaxCoefficientR0 = VSOP87BP.INDEX_MAX_COEFFICIENT_R0_JUPITER;
                indexMaxCoefficientR1 = VSOP87BP.INDEX_MAX_COEFFICIENT_R1_JUPITER;
                indexMaxCoefficientR2 = VSOP87BP.INDEX_MAX_COEFFICIENT_R2_JUPITER;
                indexMaxCoefficientR3 = VSOP87BP.INDEX_MAX_COEFFICIENT_R3_JUPITER;
                indexMaxCoefficientR4 = VSOP87BP.INDEX_MAX_COEFFICIENT_R4_JUPITER;
                indexMaxCoefficientR5 = VSOP87BP.INDEX_MAX_COEFFICIENT_R5_JUPITER;
                coefficientL0         = VSOP87BP.COEFFICIENT_L0_JUPITER;
                coefficientL1         = VSOP87BP.COEFFICIENT_L1_JUPITER;
                coefficientL2         = VSOP87BP.COEFFICIENT_L2_JUPITER;
                coefficientL3         = VSOP87BP.COEFFICIENT_L3_JUPITER;
                coefficientL4         = VSOP87BP.COEFFICIENT_L4_JUPITER;
                coefficientL5         = VSOP87BP.COEFFICIENT_L5_JUPITER;
                coefficientB0         = VSOP87BP.COEFFICIENT_B0_JUPITER;
                coefficientB1         = VSOP87BP.COEFFICIENT_B1_JUPITER;
                coefficientB2         = VSOP87BP.COEFFICIENT_B2_JUPITER;
                coefficientB3         = VSOP87BP.COEFFICIENT_B3_JUPITER;
                coefficientB4         = VSOP87BP.COEFFICIENT_B4_JUPITER;
                coefficientB5         = VSOP87BP.COEFFICIENT_B5_JUPITER;
                coefficientR0         = VSOP87BP.COEFFICIENT_R0_JUPITER;
                coefficientR1         = VSOP87BP.COEFFICIENT_R1_JUPITER;
                coefficientR2         = VSOP87BP.COEFFICIENT_R2_JUPITER;
                coefficientR3         = VSOP87BP.COEFFICIENT_R3_JUPITER;
                coefficientR4         = VSOP87BP.COEFFICIENT_R4_JUPITER;
                coefficientR5         = VSOP87BP.COEFFICIENT_R5_JUPITER;
                break;

            case TypeCorpsCeleste.SATURNE:
                indexMaxCoefficientL0 = VSOP87BP.INDEX_MAX_COEFFICIENT_L0_SATURNE;
                indexMaxCoefficientL1 = VSOP87BP.INDEX_MAX_COEFFICIENT_L1_SATURNE;
                indexMaxCoefficientL2 = VSOP87BP.INDEX_MAX_COEFFICIENT_L2_SATURNE;
                indexMaxCoefficientL3 = VSOP87BP.INDEX_MAX_COEFFICIENT_L3_SATURNE;
                indexMaxCoefficientL4 = VSOP87BP.INDEX_MAX_COEFFICIENT_L4_SATURNE;
                indexMaxCoefficientL5 = VSOP87BP.INDEX_MAX_COEFFICIENT_L5_SATURNE;
                indexMaxCoefficientB0 = VSOP87BP.INDEX_MAX_COEFFICIENT_B0_SATURNE;
                indexMaxCoefficientB1 = VSOP87BP.INDEX_MAX_COEFFICIENT_B1_SATURNE;
                indexMaxCoefficientB2 = VSOP87BP.INDEX_MAX_COEFFICIENT_B2_SATURNE;
                indexMaxCoefficientB3 = VSOP87BP.INDEX_MAX_COEFFICIENT_B3_SATURNE;
                indexMaxCoefficientB4 = VSOP87BP.INDEX_MAX_COEFFICIENT_B4_SATURNE;
                indexMaxCoefficientB5 = VSOP87BP.INDEX_MAX_COEFFICIENT_B5_SATURNE;
                indexMaxCoefficientR0 = VSOP87BP.INDEX_MAX_COEFFICIENT_R0_SATURNE;
                indexMaxCoefficientR1 = VSOP87BP.INDEX_MAX_COEFFICIENT_R1_SATURNE;
                indexMaxCoefficientR2 = VSOP87BP.INDEX_MAX_COEFFICIENT_R2_SATURNE;
                indexMaxCoefficientR3 = VSOP87BP.INDEX_MAX_COEFFICIENT_R3_SATURNE;
                indexMaxCoefficientR4 = VSOP87BP.INDEX_MAX_COEFFICIENT_R4_SATURNE;
                indexMaxCoefficientR5 = VSOP87BP.INDEX_MAX_COEFFICIENT_R5_SATURNE;
                coefficientL0         = VSOP87BP.COEFFICIENT_L0_SATURNE;
                coefficientL1         = VSOP87BP.COEFFICIENT_L1_SATURNE;
                coefficientL2         = VSOP87BP.COEFFICIENT_L2_SATURNE;
                coefficientL3         = VSOP87BP.COEFFICIENT_L3_SATURNE;
                coefficientL4         = VSOP87BP.COEFFICIENT_L4_SATURNE;
                coefficientL5         = VSOP87BP.COEFFICIENT_L5_SATURNE;
                coefficientB0         = VSOP87BP.COEFFICIENT_B0_SATURNE;
                coefficientB1         = VSOP87BP.COEFFICIENT_B1_SATURNE;
                coefficientB2         = VSOP87BP.COEFFICIENT_B2_SATURNE;
                coefficientB3         = VSOP87BP.COEFFICIENT_B3_SATURNE;
                coefficientB4         = VSOP87BP.COEFFICIENT_B4_SATURNE;
                coefficientB5         = VSOP87BP.COEFFICIENT_B5_SATURNE;
                coefficientR0         = VSOP87BP.COEFFICIENT_R0_SATURNE;
                coefficientR1         = VSOP87BP.COEFFICIENT_R1_SATURNE;
                coefficientR2         = VSOP87BP.COEFFICIENT_R2_SATURNE;
                coefficientR3         = VSOP87BP.COEFFICIENT_R3_SATURNE;
                coefficientR4         = VSOP87BP.COEFFICIENT_R4_SATURNE;
                coefficientR5         = VSOP87BP.COEFFICIENT_R5_SATURNE;
                break;

            case TypeCorpsCeleste.URANUS:
                indexMaxCoefficientL0 = VSOP87BP.INDEX_MAX_COEFFICIENT_L0_URANUS;
                indexMaxCoefficientL1 = VSOP87BP.INDEX_MAX_COEFFICIENT_L1_URANUS;
                indexMaxCoefficientL2 = VSOP87BP.INDEX_MAX_COEFFICIENT_L2_URANUS;
                indexMaxCoefficientL3 = VSOP87BP.INDEX_MAX_COEFFICIENT_L3_URANUS;
                indexMaxCoefficientL4 = VSOP87BP.INDEX_MAX_COEFFICIENT_L4_URANUS;
                indexMaxCoefficientL5 = VSOP87BP.INDEX_MAX_COEFFICIENT_L5_URANUS;
                indexMaxCoefficientB0 = VSOP87BP.INDEX_MAX_COEFFICIENT_B0_URANUS;
                indexMaxCoefficientB1 = VSOP87BP.INDEX_MAX_COEFFICIENT_B1_URANUS;
                indexMaxCoefficientB2 = VSOP87BP.INDEX_MAX_COEFFICIENT_B2_URANUS;
                indexMaxCoefficientB3 = VSOP87BP.INDEX_MAX_COEFFICIENT_B3_URANUS;
                indexMaxCoefficientB4 = VSOP87BP.INDEX_MAX_COEFFICIENT_B4_URANUS;
                indexMaxCoefficientB5 = VSOP87BP.INDEX_MAX_COEFFICIENT_B5_URANUS;
                indexMaxCoefficientR0 = VSOP87BP.INDEX_MAX_COEFFICIENT_R0_URANUS;
                indexMaxCoefficientR1 = VSOP87BP.INDEX_MAX_COEFFICIENT_R1_URANUS;
                indexMaxCoefficientR2 = VSOP87BP.INDEX_MAX_COEFFICIENT_R2_URANUS;
                indexMaxCoefficientR3 = VSOP87BP.INDEX_MAX_COEFFICIENT_R3_URANUS;
                indexMaxCoefficientR4 = VSOP87BP.INDEX_MAX_COEFFICIENT_R4_URANUS;
                indexMaxCoefficientR5 = VSOP87BP.INDEX_MAX_COEFFICIENT_R5_URANUS;
                coefficientL0         = VSOP87BP.COEFFICIENT_L0_URANUS;
                coefficientL1         = VSOP87BP.COEFFICIENT_L1_URANUS;
                coefficientL2         = VSOP87BP.COEFFICIENT_L2_URANUS;
                coefficientL3         = VSOP87BP.COEFFICIENT_L3_URANUS;
                coefficientL4         = VSOP87BP.COEFFICIENT_L4_URANUS;
                coefficientB0         = VSOP87BP.COEFFICIENT_B0_URANUS;
                coefficientB1         = VSOP87BP.COEFFICIENT_B1_URANUS;
                coefficientB2         = VSOP87BP.COEFFICIENT_B2_URANUS;
                coefficientB3         = VSOP87BP.COEFFICIENT_B3_URANUS;
                coefficientB4         = VSOP87BP.COEFFICIENT_B4_URANUS;
                coefficientR0         = VSOP87BP.COEFFICIENT_R0_URANUS;
                coefficientR1         = VSOP87BP.COEFFICIENT_R1_URANUS;
                coefficientR2         = VSOP87BP.COEFFICIENT_R2_URANUS;
                coefficientR3         = VSOP87BP.COEFFICIENT_R3_URANUS;
                coefficientR4         = VSOP87BP.COEFFICIENT_R4_URANUS;
                break;

            case TypeCorpsCeleste.NEPTUNE:
                indexMaxCoefficientL0 = VSOP87BP.INDEX_MAX_COEFFICIENT_L0_NEPTUNE;
                indexMaxCoefficientL1 = VSOP87BP.INDEX_MAX_COEFFICIENT_L1_NEPTUNE;
                indexMaxCoefficientL2 = VSOP87BP.INDEX_MAX_COEFFICIENT_L2_NEPTUNE;
                indexMaxCoefficientL3 = VSOP87BP.INDEX_MAX_COEFFICIENT_L3_NEPTUNE;
                indexMaxCoefficientL4 = VSOP87BP.INDEX_MAX_COEFFICIENT_L4_NEPTUNE;
                indexMaxCoefficientL5 = VSOP87BP.INDEX_MAX_COEFFICIENT_L5_NEPTUNE;
                indexMaxCoefficientB0 = VSOP87BP.INDEX_MAX_COEFFICIENT_B0_NEPTUNE;
                indexMaxCoefficientB1 = VSOP87BP.INDEX_MAX_COEFFICIENT_B1_NEPTUNE;
                indexMaxCoefficientB2 = VSOP87BP.INDEX_MAX_COEFFICIENT_B2_NEPTUNE;
                indexMaxCoefficientB3 = VSOP87BP.INDEX_MAX_COEFFICIENT_B3_NEPTUNE;
                indexMaxCoefficientB4 = VSOP87BP.INDEX_MAX_COEFFICIENT_B4_NEPTUNE;
                indexMaxCoefficientB5 = VSOP87BP.INDEX_MAX_COEFFICIENT_B5_NEPTUNE;
                indexMaxCoefficientR0 = VSOP87BP.INDEX_MAX_COEFFICIENT_R0_NEPTUNE;
                indexMaxCoefficientR1 = VSOP87BP.INDEX_MAX_COEFFICIENT_R1_NEPTUNE;
                indexMaxCoefficientR2 = VSOP87BP.INDEX_MAX_COEFFICIENT_R2_NEPTUNE;
                indexMaxCoefficientR3 = VSOP87BP.INDEX_MAX_COEFFICIENT_R3_NEPTUNE;
                indexMaxCoefficientR4 = VSOP87BP.INDEX_MAX_COEFFICIENT_R4_NEPTUNE;
                indexMaxCoefficientR5 = VSOP87BP.INDEX_MAX_COEFFICIENT_R5_NEPTUNE;
                coefficientL0         = VSOP87BP.COEFFICIENT_L0_NEPTUNE;
                coefficientL1         = VSOP87BP.COEFFICIENT_L1_NEPTUNE;
                coefficientL2         = VSOP87BP.COEFFICIENT_L2_NEPTUNE;
                coefficientL3         = VSOP87BP.COEFFICIENT_L3_NEPTUNE;
                coefficientL4         = VSOP87BP.COEFFICIENT_L4_NEPTUNE;
                coefficientB0         = VSOP87BP.COEFFICIENT_B0_NEPTUNE;
                coefficientB1         = VSOP87BP.COEFFICIENT_B1_NEPTUNE;
                coefficientB2         = VSOP87BP.COEFFICIENT_B2_NEPTUNE;
                coefficientB3         = VSOP87BP.COEFFICIENT_B3_NEPTUNE;
                coefficientB4         = VSOP87BP.COEFFICIENT_B4_NEPTUNE;
                coefficientR0         = VSOP87BP.COEFFICIENT_R0_NEPTUNE;
                coefficientR1         = VSOP87BP.COEFFICIENT_R1_NEPTUNE;
                coefficientR2         = VSOP87BP.COEFFICIENT_R2_NEPTUNE;
                coefficientR3         = VSOP87BP.COEFFICIENT_R3_NEPTUNE;
                break;
            }

            // Calcul des séries pour la longitude écliptique héliocentrique de la planète
            for (i = 0; i < indexMaxCoefficientL0; i++)
            {
                L0 += coefficientL0[i, 0] * Math.Cos(coefficientL0[i, 1] + coefficientL0[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientL1; i++)
            {
                L1 += coefficientL1[i, 0] * Math.Cos(coefficientL1[i, 1] + coefficientL1[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientL2; i++)
            {
                L2 += coefficientL2[i, 0] * Math.Cos(coefficientL2[i, 1] + coefficientL2[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientL3; i++)
            {
                L3 += coefficientL3[i, 0] * Math.Cos(coefficientL3[i, 1] + coefficientL3[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientL4; i++)
            {
                L4 += coefficientL4[i, 0] * Math.Cos(coefficientL4[i, 1] + coefficientL4[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientL5; i++)
            {
                L5 += coefficientL5[i, 0] * Math.Cos(coefficientL5[i, 1] + coefficientL5[i, 2] * T);
            }

            // Calcul des séries pour la latitude écliptique héliocentrique de la planète
            for (i = 0; i < indexMaxCoefficientB0; i++)
            {
                B0 += coefficientB0[i, 0] * Math.Cos(coefficientB0[i, 1] + coefficientB0[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientB1; i++)
            {
                B1 += coefficientB1[i, 0] * Math.Cos(coefficientB1[i, 1] + coefficientB1[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientB2; i++)
            {
                B2 += coefficientB2[i, 0] * Math.Cos(coefficientB2[i, 1] + coefficientB2[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientB3; i++)
            {
                B3 += coefficientB3[i, 0] * Math.Cos(coefficientB3[i, 1] + coefficientB3[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientB4; i++)
            {
                B4 += coefficientB4[i, 0] * Math.Cos(coefficientB4[i, 1] + coefficientB4[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientB5; i++)
            {
                B5 += coefficientB5[i, 0] * Math.Cos(coefficientB5[i, 1] + coefficientB5[i, 2] * T);
            }

            // Calcul des séries pour le rayon vecteur de la planète
            for (i = 0; i < indexMaxCoefficientR0; i++)
            {
                R0 += coefficientR0[i, 0] * Math.Cos(coefficientR0[i, 1] + coefficientR0[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientR1; i++)
            {
                R1 += coefficientR1[i, 0] * Math.Cos(coefficientR1[i, 1] + coefficientR1[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientR2; i++)
            {
                R2 += coefficientR2[i, 0] * Math.Cos(coefficientR2[i, 1] + coefficientR2[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientR3; i++)
            {
                R3 += coefficientR3[i, 0] * Math.Cos(coefficientR3[i, 1] + coefficientR3[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientR4; i++)
            {
                R4 += coefficientR4[i, 0] * Math.Cos(coefficientR4[i, 1] + coefficientR4[i, 2] * T);
            }
            for (i = 0; i < indexMaxCoefficientR5; i++)
            {
                R5 += coefficientR5[i, 0] * Math.Cos(coefficientR5[i, 1] + coefficientR5[i, 2] * T);
            }

            // Calcul de la longitude écliptique héliocentrique de la planète à l'équinoxe dynamique de la théorie VSOP87
            l = (L0 + L1 * T + L2 * T * T + L3 * T * T * T + L4 * T * T * T * T + L5 * T * T * T * T * T) / 100000000;
            l = Maths.RadToDeg(l);
            l = Maths.Modulo(l, TypeAngle.ANGLE_DEGRES_360);

            // Calcul de la latitude écliptique héliocentrique de la planète à l'équinoxe dynamique de la théorie VSOP87
            b = (B0 + B1 * T + B2 * T * T + B3 * T * T * T + B4 * T * T * T * T + B5 * T * T * T * T * T) / 100000000;
            b = Maths.RadToDeg(b);

            // Calcul du rayon vecteur de la planète
            rSoleil = (R0 + R1 * T + R2 * T * T + R3 * T * T * T + R4 * T * T * T * T + R5 * T * T * T * T * T) / 100000000;

            // Calcul des corrections de l'équinoxe
            Lprime = l - 13.97 * T - 0.031 * T * T;
            deltaL = -0.09033 + 0.03916 * (Math.Cos(Maths.DegToRad(Lprime)) + Math.Sin(Maths.DegToRad(Lprime))) * Math.Tan(Maths.DegToRad(b));
            deltaB = 0.03916 * (Math.Cos(Maths.DegToRad(Lprime)) - Math.Sin(Maths.DegToRad(Lprime)));

            // Calcul de la longitude écliptique héliocentrique de la planète à l'équinoxe moyen
            l += deltaL / 3600.0;
            l  = Maths.Modulo(l, TypeAngle.ANGLE_DEGRES_360);

            // Calcul de la latitude écliptique héliocentrique de la planète à l'équinoxe moyen
            b += deltaB / 3600.0;

            // Suite de l'algorithme 8 pour la Terre (Soleil)
            if (a_planete == TypeCorpsCeleste.TERRE_SOLEIL)
            {
                // Calcul de la longitude écliptique géocentrique géométrique du Soleil
                lambdaGeometrique = l + 180.0;
                lambdaGeometrique = Maths.Modulo(LambdaGeometrique, TypeAngle.ANGLE_DEGRES_360);

                // Calcul de la longitude écliptique géocentrique du Soleil (corrigée de l'aberration de la lumière et de la nutation)
                r      = rSoleil;
                lambda = new Angle(lambdaGeometrique + a_lieuEtDateCalcul.NutationLongitude - (20.4898 / (3600.0 * r)));

                // Calcul de la latitude écliptique héliocentrique et géocentrique
                betaGeometrique = -b;
                beta            = new Angle(-b, TypeAngle.ANGLE_DEGRES_90);
            }
        }
コード例 #3
0
 // CONSTRUCTEUR
 public Planete(string a_nom, TypeCorpsCeleste a_type) : base(a_nom, a_type)
 {
 }
コード例 #4
0
 // CONSTRUCTEURS
 public CorpsSystemeSolaire(string a_nom, TypeCorpsCeleste a_type) : base(a_nom, a_type)
 {
 }