X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fmath%2FSGGeoc.hxx;h=cb603bc4bc89457392eea98c1f3861772f4c69e5;hb=7a52c2fa71355631a559d74e0860fa6c5efa424e;hp=7559dbf653673a42f08c74da6eadd5ef6eaf22e4;hpb=3fcc16c1a0efed1cf5c98bce6868d252a934cb3e;p=simgear.git diff --git a/simgear/math/SGGeoc.hxx b/simgear/math/SGGeoc.hxx index 7559dbf6..cb603bc4 100644 --- a/simgear/math/SGGeoc.hxx +++ b/simgear/math/SGGeoc.hxx @@ -74,6 +74,13 @@ public: /// Set the geocentric radius from the argument given in feet void setRadiusFt(double radius); + SGGeoc advanceRadM(double course, double distance) const; + static double courseRad(const SGGeoc& from, const SGGeoc& to); + static double courseDeg(const SGGeoc& from, const SGGeoc& to); + static double distanceM(const SGGeoc& from, const SGGeoc& to); + + // Compare two geocentric positions for equality + bool operator == ( const SGGeoc & other ) const; private: /// This one is private since construction is not unique if you do /// not know the units of the arguments, use the factory methods for @@ -288,6 +295,45 @@ SGGeoc::setRadiusFt(double radius) _radius = radius*SG_FEET_TO_METER; } +inline +SGGeoc +SGGeoc::advanceRadM(double course, double distance) const +{ + SGGeoc result; + SGGeodesy::advanceRadM(*this, course, distance, result); + return result; +} + +inline +double +SGGeoc::courseRad(const SGGeoc& from, const SGGeoc& to) +{ + return SGGeodesy::courseRad(from, to); +} + +inline +double +SGGeoc::courseDeg(const SGGeoc& from, const SGGeoc& to) +{ + return SGMiscd::rad2deg(courseRad(from, to)); +} + +inline +double +SGGeoc::distanceM(const SGGeoc& from, const SGGeoc& to) +{ + return SGGeodesy::distanceM(from, to); +} + +inline +bool +SGGeoc::operator == ( const SGGeoc & other ) const +{ + return _lon == other._lon && + _lat == other._lat && + _radius == other._radius; +} + /// Output to an ostream template inline