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)
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)
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)
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)
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)
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()