Example #1
0
def test_mean_to_true():
    # Data from Schlesinger & Udick, 1912
    data = [
        # ecc, M (deg), nu (deg)
        (0.0, 0.0, 0.0),
        (0.05, 10.0, 11.06),
        (0.06, 30.0, 33.67),
        (0.04, 120.0, 123.87),
        (0.14, 65.0, 80.50),
        (0.19, 21.0, 30.94),
        (0.35, 65.0, 105.71),
        (0.48, 180.0, 180.0),
        (0.75, 125.0, 167.57)
    ]
    for row in data:
        ecc, M, expected_nu = row
        ecc = ecc * u.one
        M = M * u.deg
        expected_nu = expected_nu * u.deg

        nu = angles.M_to_nu(M, ecc)

        assert_almost_equal(nu.to(u.rad).value,
                            expected_nu.to(u.rad).value,
                            decimal=2)
Example #2
0
def test_mean_to_true():
    for row in ANGLES_DATA:
        ecc, M, expected_nu = row
        ecc = ecc * u.one
        M = M * u.deg
        expected_nu = expected_nu * u.deg

        nu = angles.M_to_nu(M, ecc)

        assert_quantity_allclose(nu, expected_nu, rtol=1e-4)
Example #3
0
def test_mean_to_true_hyperbolic():
    # Data from Curtis, H. (2013). *Orbital mechanics for engineering students*.
    # Example 3.5
    M = 11.279 * u.rad
    ecc = 2.7696 * u.one
    expected_nu = 100 * u.deg

    nu = angles.M_to_nu(M, ecc)

    assert_quantity_allclose(nu, expected_nu, rtol=1e-4)
Example #4
0
def test_mean_to_true():
    # Data from Schlesinger & Udick, 1912
    data = [
        # ecc, M (deg), nu (deg)
        (0.0, 0.0, 0.0),
        (0.05, 10.0, 11.06),
        (0.06, 30.0, 33.67),
        (0.04, 120.0, 123.87),
        (0.14, 65.0, 80.50),
        (0.19, 21.0, 30.94),
        (0.35, 65.0, 105.71),
        (0.48, 180.0, 180.0),
        (0.75, 125.0, 167.57)
    ]
    for row in data:
        ecc, M, expected_nu = row
        ecc = ecc * u.one
        M = M * u.deg
        expected_nu = expected_nu * u.deg

        nu = angles.M_to_nu(M, ecc)

        assert_quantity_allclose(nu, expected_nu, rtol=1e-4)
Example #5
0
def test_mean_to_true_hyperbolic_highecc(expected_nu, ecc):
    M = angles.nu_to_M(expected_nu, ecc)
    print(M, ecc, M.value, ecc.value)
    nu = angles.M_to_nu(M, ecc)
    assert_quantity_allclose(nu, expected_nu, rtol=1e-4)
Example #6
0
import poliastro
import astropy

#create time and time step
start_date = time.Time('2018-01-01 00:00', scale='utc')
step = time.TimeDelta(1.0, format='jd')
end_date = time.Time('2018-12-31 00:00', scale='utc')

#create orbit with start_date
#for asteroid
a = (1.11 + 0.90) / 2 * u.AU
ecc = 0.104 * u.one
inc = 7.77 * u.deg
raan = 66.51 * u.deg
argp = 307.23 * u.deg
nu = np.rad2deg(ang.M_to_nu(np.deg2rad(297.53 * u.deg), ecc))
asteroid = Orbit.from_classical(Sun, a, ecc, inc, raan, argp, nu, start_date)
asteroid = propagate(asteroid, 150 * 3600 * 24 * u.second)

#for earth
a = 1 * u.AU
ecc = 0.0167086 * u.one
nu = np.rad2deg(ang.M_to_nu(np.deg2rad(358.617 * u.deg), ecc))
inc = 7.155 * u.deg
raan = -11.26064 * u.deg
argp = 114.207 * u.deg
earth = Orbit.from_classical(Sun, a, ecc, inc, raan, argp, nu, start_date)
op = OrbitPlotter()
op.plot(asteroid, label='asteroid')
op.plot(earth, label='earth')
plt.show()