|
|
|
@ -79,6 +79,21 @@ TEST_CASE("state vectors to orbital elements, example 3.1", "[orbits]") |
|
|
|
REQUIRE_THAT(el.nu, WithinAbs(orbitClampAngle(DEG2RAD(280)), 1)); |
|
|
|
REQUIRE_THAT(el.nu, WithinAbs(orbitClampAngle(DEG2RAD(280)), 1)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TEST_CASE("elements to state vectors, edge case equatorial orbit", "[orbits]") |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
double mu = EARTH_GRAVITATIONAL_PARAMETER; |
|
|
|
|
|
|
|
dvec3 r = dvec3(0, -8000, 0); |
|
|
|
|
|
|
|
dvec3 v = dvec3(7.45, 0, 0); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OrbitalElements el = orbitGetElementsFromStateVectors(r, v, mu); |
|
|
|
|
|
|
|
REQUIRE_THAT(el.a, WithinAbs(9028.776, 1e-3)); |
|
|
|
|
|
|
|
REQUIRE_THAT(el.e, WithinAbs(0.114, 1e-3)); |
|
|
|
|
|
|
|
REQUIRE_THAT(el.iota, WithinAbs(0.0, 1e-3)); |
|
|
|
|
|
|
|
REQUIRE_THAT(el.ohm, WithinAbs(0.0, 1e-3)); |
|
|
|
|
|
|
|
REQUIRE_THAT(el.omega, WithinAbs(-1.571, 1e-3)); |
|
|
|
|
|
|
|
REQUIRE_THAT(el.nu, WithinAbs(0.0, 1e-3)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
TEST_CASE("orbital elements to state vectors, example 3.2", "[orbits]") |
|
|
|
TEST_CASE("orbital elements to state vectors, example 3.2", "[orbits]") |
|
|
|
{ |
|
|
|
{ |
|
|
|
double a = MOLNIYA_SEMI_MAJOR_AXIS; |
|
|
|
double a = MOLNIYA_SEMI_MAJOR_AXIS; |
|
|
|
|