/// 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
_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<typename char_type, typename traits_type>
inline