X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fmath%2FSGGeod.hxx;h=a7153334d5d78fe0e9061bde320270179279bfe4;hb=1f37095087fa7aa3d210ba134058b86c3bd6d69e;hp=144ee347b1c6e58b2ef61ed6cfa34b167fed62e3;hpb=7e7ce2f38e87d6244e05730fa4382da088bb25f1;p=simgear.git diff --git a/simgear/math/SGGeod.hxx b/simgear/math/SGGeod.hxx index 144ee347..a7153334 100644 --- a/simgear/math/SGGeod.hxx +++ b/simgear/math/SGGeod.hxx @@ -20,7 +20,9 @@ #include +#ifndef NO_OPENSCENEGRAPH_INTERFACE #include +#endif // #define SG_GEOD_NATIVE_DEGREE @@ -84,25 +86,30 @@ public: /// Set the geodetic elevation from the argument given in feet void setElevationFt(double elevation); + // Compare two geodetic positions for equality + bool operator == ( const SGGeod & other ) const; + +#ifndef NO_OPENSCENEGRAPH_INTERFACE // Create a local coordinate frame in the earth-centered frame of // reference. X points north, Z points down. // makeSimulationFrameRelative() only includes rotation. - - osg::Matrix makeSimulationFrameRelative(); - osg::Matrix makeSimulationFrame(); + osg::Matrix makeSimulationFrameRelative() const; + osg::Matrix makeSimulationFrame() const; // Create a Z-up local coordinate frame in the earth-centered frame // of reference. This is what scenery models, etc. expect. // makeZUpFrameRelative() only includes rotation. - osg::Matrix makeZUpFrameRelative(); - osg::Matrix makeZUpFrame(); + osg::Matrix makeZUpFrameRelative() const; + osg::Matrix makeZUpFrame() const; +#endif 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 /// that purpose SGGeod(double lon, double lat, double elevation); - /// The actual data, angles in degree, elevation in meters + //// FIXME: wrong comment! + /// The actual data, angles in degrees, elevation in meters /// The rationale for storing the values in degrees is that most code places /// in flightgear/terragear use degrees as a nativ input and output value. /// The places where it makes sense to use radians is when we convert @@ -346,6 +353,15 @@ SGGeod::setElevationFt(double elevation) _elevation = elevation*SG_FEET_TO_METER; } +inline +bool +SGGeod::operator == ( const SGGeod & other ) const +{ + return _lon == other._lon && + _lat == other._lat && + _elevation == other._elevation; +} + /// Output to an ostream template inline