10 #if !defined(GEOGRAPHICLIB_TRIAXIALGEODESICODE_HPP) 11 #define GEOGRAPHICLIB_TRIAXIALGEODESICODE_HPP 1 24 #if GEOGRAPHICLIB_PRECISION == 5 25 # define GEOGRAPHICLIB_BOOST_ODE_DENSE_OUT 0 27 # define GEOGRAPHICLIB_BOOST_ODE_DENSE_OUT 1 49 #pragma clang diagnostic ignored "-Wunused-parameter" 50 #pragma clang diagnostic ignored "-Wreorder-ctor" 53 #include <boost/numeric/odeint.hpp> 54 #if GEOGRAPHICLIB_BOOST_ODE_DENSE_OUT 55 #include <boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp> 57 #include <boost/numeric/odeint/stepper/bulirsch_stoer.hpp> 66 namespace experimental {
112 using vec6 = std::array<real, 6>;
113 using vec10 = std::array<real, 10>;
115 #if GEOGRAPHICLIB_BOOST_ODE_DENSE_OUT 117 boost::numeric::odeint::bulirsch_stoer_dense_out<vec6, real>;
119 boost::numeric::odeint::bulirsch_stoer_dense_out<vec10, real>;
121 using step6 = boost::numeric::odeint::bulirsch_stoer<vec6, real>;
122 using step10 = boost::numeric::odeint::bulirsch_stoer<vec10, real>;
125 const vec3 _axesn, _axes2n;
127 Angle _bet1, _omg1, _alp1;
128 bool _extended, _dense, _normp;
130 mutable long _nsteps, _intsteps;
131 #if GEOGRAPHICLIB_BOOST_ODE_DENSE_OUT 142 void Norm6(vec6& y)
const;
143 void Accel6(
const vec6& y, vec6& yp)
const;
144 void Accel6N(
const vec6& y, vec6& yp)
const;
145 void Norm10(vec10& y)
const;
146 void Accel10(
const vec10& y, vec10& yp)
const;
147 void Accel10N(
const vec10& y, vec10& yp)
const;
148 static std::vector<size_t> sort_indices(
const std::vector<real>& v);
176 bool extended =
false,
bool dense =
false,
177 bool normp =
false, real eps = 0);
196 bool extended =
false,
bool dense =
false,
197 bool normp =
false, real eps = 0);
218 bool extended =
false,
bool dense =
false,
219 bool normp =
false, real eps = 0);
255 real& m12, real& M12, real& M21);
268 std::pair<real, real>
Position(real s12,
288 std::pair<real, real>
Position(real s12,
290 real& m12, real& M12, real& M21);
307 void Position(
const std::vector<real>& s12,
308 std::vector<vec3>& R2, std::vector<vec3>& V2);
333 void Position(
const std::vector<real>& s12,
334 std::vector<vec3>& R2, std::vector<vec3>& V2,
335 std::vector<real>& m12,
336 std::vector<real>& M12, std::vector<real>& M21);
351 void Position(
const std::vector<real>& s12,
352 std::vector<Angle>& bet2, std::vector<Angle>& omg2,
353 std::vector<Angle>& alp2);
373 void Position(
const std::vector<real>& s12,
374 std::vector<Angle>& bet2, std::vector<Angle>& omg2,
375 std::vector<Angle>& alp2,
376 std::vector<real>& m12,
377 std::vector<real>& M12, std::vector<real>& M21);
432 bet1 = _bet1; omg1 = _omg1; alp1 = _alp1;
443 #endif // GEOGRAPHICLIB_TRIAXIALGEODESICODE_HPP
std::array< Math::real, 3 > vec3
TriaxialGeodesicODE(const Triaxial::Ellipsoid3 &t, vec3 R1, vec3 V1, bool extended=false, bool dense=false, bool normp=false, real eps=0)
void Position1(Angle &bet1, Angle &omg1, Angle &alp1) const
Triaxial::Ellipsoid3::vec3 vec3
std::pair< real, real > CurrentDistance() const
const Triaxial::Ellipsoid3 & t() const
AngleT< Math::real > Angle
std::pair< real, real > Position(real s12, vec3 &R2, vec3 &V2)
Namespace for GeographicLib.
Header for GeographicLib::Triaxial::Ellipsoid3 class.
The ODE solution of direct geodesic problem for triaxial ellipsoids.
void Position1(vec3 &R1, vec3 &V1) const
Header for GeographicLib::Constants class.
Header for the GeographicLib::AngleT class.