Ejemplo n.º 1
0
    def _get_mean_longitude(self):
        """This function returns the mean longitude according to the planet chosen and the epoch.
        The value returned is in degrees and between 0-360°.

        The mean longitude is defined as the sum of the longitude of the perihelion and the mean anomaly.

        The logic and data are taken from H. Curtis - Orbital Mechanics for Engineering Students, Third Edition,
        Eq. 8.93b & Table 8.1

        OUTPUT:
        -------
        mean longitude [deg]: float
        """
        t0 = jd.t_zero(self._julianDay)
        switcher = {
            1: 252.25032350 + t0 * 149472.67411175,  # Mercury
            2: 181.97909950 + t0 * 58517.81538729,  # Venus
            3: 100.46457166 + t0 * 35999.37244981,  # Earth
            4: -4.553432050 + t0 * 19140.30268499,  # Mars
            5: 34.39644501 + t0 * 3034.74612775,  # Jupiter
            6: 49.95424423 + t0 * 1222.49362201,  # Saturn
            7: 313.23810451 + t0 * 428.48202785,  # Uranus
            8: -55.12002969 + t0 * 218.45945325,  # Neptune
            9: 238.92903833 + t0 * 145.20780515  # Pluto
        }
        return switcher.get(self._id, float('nan')) % 360
Ejemplo n.º 2
0
    def _get_longitude_of_perihelion(self):
        """This function returns the longitude of the perihelion according to the planet chosen and the epoch.
        The value returned is in degrees and between 0-360°.

        The longitude of the perihelion is defined as the sum of the right ascension of the ascending node and
        the argument of the perihelion.

        The logic and data are taken from H. Curtis - Orbital Mechanics for Engineering Students, Third Edition,
        Eq. 8.93b & Table 8.1

        OUTPUT:
        -------
        longitude of the perihelion [deg]: float
        """
        t0 = jd.t_zero(self._julianDay)
        switcher = {
            1: 77.45779628 + t0 * 0.16047689,  # Mercury
            2: 131.60246718 + t0 * 0.00268329,  # Venus
            3: 102.93768193 + t0 * 0.32327364,  # Earth
            4: -23.94362959 + t0 * 0.44441088,  # Mars
            5: 14.72847983 + t0 * 0.21252668,  # Jupiter
            6: 92.59887831 + t0 * -0.41897216,  # Saturn
            7: 170.95427630 + t0 * 0.40805281,  # Uranus
            8: 44.96476227 + t0 * -0.32241464,  # Neptune
            9: 224.06891629 + t0 * -0.04062942  # Pluto
        }
        return switcher.get(self._id, float('nan')) % 360
Ejemplo n.º 3
0
    def _get_eccentricity(self):
        """This function returns the value of the eccentricity according to the planet chosen and the epoch.

        The logic and data are taken from H. Curtis - Orbital Mechanics for Engineering Students, Third Edition,
        Eq. 8.93b & Table 8.1.

        OUTPUT:
        -------
        eccentricity [-]: float
        """
        t0 = jd.t_zero(self._julianDay)
        switcher = {
            1: 0.20563593 + t0 * 0.00001906,  # Mercury
            2: 0.00677672 + t0 * -0.00004107,  # Venus
            3: 0.01671123 + t0 * -0.00004392,  # Earth
            4: 0.09339410 + t0 * 0.00007882,  # Mars
            5: 0.04838624 + t0 * 0.00013253,  # Jupiter
            6: 0.05386179 + t0 * -0.00050991,  # Saturn
            7: 0.04725744 + t0 * -0.00004397,  # Uranus
            8: 0.00859048 + t0 * 0.00005105,  # Neptune
            9: 0.24882730 + t0 * 0.00005170  # Pluto
        }
        return switcher.get(self._id, float('nan'))
Ejemplo n.º 4
0
    def _get_semimajor_axis(self):
        """This function returns the value of the semimajor axis according to the planet chosen and the epoch.

        The logic and data are taken from H. Curtis - Orbital Mechanics for Engineering Students, Third Edition,
        Eq. 8.93b & Table 8.1.

        OUTPUT:
        -------
        semimajor axis [km]: float
        """
        t0 = jd.t_zero(self._julianDay)
        switcher = {
            1: 0.387099270 + t0 * 0.00000037,  # Mercury
            2: 0.723335660 + t0 * 0.00000390,  # Venus
            3: 1.000002610 + t0 * 0.00000562,  # Earth
            4: 1.523710340 + t0 * 0.0001847,  # Mars
            5: 5.202887000 + t0 * -0.00011607,  # Jupiter
            6: 9.536675940 + t0 * -0.00125060,  # Saturn
            7: 19.18916464 + t0 * -0.00196176,  # Uranus
            8: 30.06992276 + t0 * 0.00026291,  # Neptune
            9: 39.48211675 + t0 * -0.00031596  # Pluto
        }
        return switcher.get(self._id, float('nan')) * 1.49597871 * 1e8
Ejemplo n.º 5
0
    def _get_right_ascension_ascending_node(self):
        """This function returns the value of the right ascension according to the planet chosen and the epoch.
        The value returned is in degrees and between 0-360°.

        The logic and data are taken from H. Curtis - Orbital Mechanics for Engineering Students, Third Edition,
        Eq. 8.93b & Table 8.1

        OUTPUT:
        -------
        right ascension of the ascending node [deg]: float
        """
        t0 = jd.t_zero(self._julianDay)
        switcher = {
            1: 48.33076593 + t0 * -0.12534081,  # Mercury
            2: 76.67984255 + t0 * -0.27769418,  # Venus
            3: 0.0 + t0 * 0.0,  # Earth
            4: 49.55953891 + t0 * -0.29257343,  # Mars
            5: 100.47390909 + t0 * 0.20469106,  # Jupiter
            6: 113.66242448 + t0 * 0.28867794,  # Saturn
            7: 74.01692503 + t0 * 0.04240589,  # Uranus
            8: 131.78422574 + t0 * -0.00508664,  # Neptune
            9: 110.30393684 + t0 * -0.01183482  # Pluto
        }
        return switcher.get(self._id, float('nan')) % 360
Ejemplo n.º 6
0
    def _get_inclination(self):
        """This function returns the value of the inclination according to the planet chosen and the epoch.
        The value of inclination returned is in degrees and between 0-360°.

        The logic and data are taken from H. Curtis - Orbital Mechanics for Engineering Students, Third Edition,
        Eq. 8.93b & Table 8.1

        OUTPUT:
        -------
        inclination [deg]: float
        """
        t0 = jd.t_zero(self._julianDay)
        switcher = {
            1: 7.00497902 + t0 * -0.00594749,  # Mercury
            2: 3.39467605 + t0 * -0.00078890,  # Venus
            3: -0.00001531 + t0 * -0.01294668,  # Earth
            4: 1.84969142 + t0 * -0.00813131,  # Mars
            5: 1.30439695 + t0 * -0.00183714,  # Jupiter
            6: 2.48599187 + t0 * 0.00193609,  # Saturn
            7: 0.77263783 + t0 * -0.00242939,  # Uranus
            8: 1.77004347 + t0 * 0.00035372,  # Neptune
            9: 17.14001206 + t0 * 0.00004818  # Pluto
        }
        return switcher.get(self._id, float('nan')) % 360