Browse Source

replace reused test variables with constants

main
cinnaboot 4 years ago
parent
commit
cb1ac9ce8e
  1. 42
      tests/orbit_test.cpp

42
tests/orbit_test.cpp

@ -1,6 +1,5 @@
#include <catch2/catch.hpp> #include <catch2/catch.hpp>
#include <glm/glm.hpp> #include <glm/glm.hpp>
#include "../src/orbits.cpp" #include "../src/orbits.cpp"
@ -11,18 +10,25 @@
using Catch::Matchers::WithinAbs; using Catch::Matchers::WithinAbs;
// NOTE: all examples from the book "Space Flight Dynamics" by Craig A. Kluever
const double MOLNIYA_SEMI_MAJOR_AXIS = 26564.5; // km
const double MOLNIYA_ECCENTRICITY = 0.7411;
const double EARTH_GRAVITATIONAL_PARAMETER = 398601.68; // km^3 / s^2
const double EARTH_RADIUS = 6378; // km
TEST_CASE("orbit construction", "[orbits]") TEST_CASE("orbit construction", "[orbits]")
{ {
} }
// NOTE: example 4.6 in "Space Flight Dynamics" by Craig A. Kluever TEST_CASE("orbit propagation, example 4.6", "[orbits]")
TEST_CASE("orbit propagation", "[orbits]")
{ {
double a = 26564.5; // semi-major axis in km double a = MOLNIYA_SEMI_MAJOR_AXIS;
double e = 0.7411; // eccentricity double e = MOLNIYA_ECCENTRICITY;
double mu = 398601.68; // gravitational parameter double mu = EARTH_GRAVITATIONAL_PARAMETER;
double r = 6378; // body radius in km double r = EARTH_RADIUS;
double initial_anom = 260 * M_PI / 180; // NOTE: radians double initial_anom = 260 * M_PI / 180; // NOTE: radians
double time_step = 60 * 50; // NOTE: seconds double time_step = 60 * 50; // NOTE: seconds
TwoBodySystem sys = systemInit(gravBodyInit(mu, r), orbitInit(a, e)); TwoBodySystem sys = systemInit(gravBodyInit(mu, r), orbitInit(a, e));
@ -57,23 +63,21 @@ TEST_CASE("orbit propagation", "[orbits]")
REQUIRE_THAT(pos.y, WithinAbs(8259.9, 0.1)); REQUIRE_THAT(pos.y, WithinAbs(8259.9, 0.1));
} }
// NOTE: example 2.5 - c TEST_CASE("orbital period, example 2.5c", "[orbits]")
TEST_CASE("orbital period", "[orbits]")
{ {
double a = 24371; // semi-major axis in km double a = 24371; // semi-major axis in km
double mu = 398601.68; // gravitational parameter double mu = EARTH_GRAVITATIONAL_PARAMETER;
double T = orbitGetPeriod(a, mu); double T = orbitGetPeriod(a, mu);
REQUIRE_THAT(T, WithinAbs(37863.5, 50e-3)); REQUIRE_THAT(T, WithinAbs(37863.5, 50e-3));
} }
// NOTE: example 4.1 in "Space Flight Dynamics" by Craig A. Kluever
TEST_CASE("time of flight example 4.1a", "[orbits]") TEST_CASE("time of flight example 4.1a", "[orbits]")
{ {
double a = 26564.5; // semi-major axis in km double a = MOLNIYA_SEMI_MAJOR_AXIS;
double e = 0.7411; // eccentricity double e = MOLNIYA_ECCENTRICITY;
double mu = 398601.68; // gravitational parameter double mu = EARTH_GRAVITATIONAL_PARAMETER;
double r = 6378; // body radius in km double r = EARTH_RADIUS;
TwoBodySystem sys = systemInit(gravBodyInit(mu, r), orbitInit(a, e)); TwoBodySystem sys = systemInit(gravBodyInit(mu, r), orbitInit(a, e));
// NOTE: get ToF from periapsis to true anomaly at 154.85 degrees // NOTE: get ToF from periapsis to true anomaly at 154.85 degrees
@ -95,10 +99,10 @@ TEST_CASE("time of flight example 4.1 a", "[orbits]")
TEST_CASE("time of flight example 4.2", "[orbits]") TEST_CASE("time of flight example 4.2", "[orbits]")
{ {
double a = 26564.5; // semi-major axis in km double a = MOLNIYA_SEMI_MAJOR_AXIS;
double e = 0.7411; // eccentricity double e = MOLNIYA_ECCENTRICITY;
double mu = 398601.68; // gravitational parameter double mu = EARTH_GRAVITATIONAL_PARAMETER;
double r = 6378; // body radius in km double r = EARTH_RADIUS;
TwoBodySystem sys = systemInit(gravBodyInit(mu, r), orbitInit(a, e)); TwoBodySystem sys = systemInit(gravBodyInit(mu, r), orbitInit(a, e));
// NOTE: get ToF from true anom 230 degrees to true anom at 120 degrees // NOTE: get ToF from true anom 230 degrees to true anom at 120 degrees

Loading…
Cancel
Save