X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fmath%2FSGGeoc.hxx;h=3a27e47a66d6cd0b8b367038ef50204b94480c97;hb=786e5addd83c6ea8801bf15b658f9b5865410590;hp=5b4f24cd7ab0954661fe63986f764e54abbf987a;hpb=4e7fe460a5c5c1b64dd1d540bc197dbb89614b7f;p=simgear.git diff --git a/simgear/math/SGGeoc.hxx b/simgear/math/SGGeoc.hxx index 5b4f24cd..3a27e47a 100644 --- a/simgear/math/SGGeoc.hxx +++ b/simgear/math/SGGeoc.hxx @@ -10,10 +10,9 @@ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // -// You should have received a copy of the GNU Library General Public -// License along with this library; if not, write to the -// Free Software Foundation, Inc., 59 Temple Place - Suite 330, -// Boston, MA 02111-1307, USA. +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // #ifndef SGGeoc_H @@ -28,11 +27,6 @@ class SGGeoc { public: /// Default constructor, initializes the instance to lat = lon = lat = 0 SGGeoc(void); -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - /// Note that this conversion is relatively expensive to compute - SGGeoc(const SGGeod& geod); /// Factory from angular values in radians and radius in ft static SGGeoc fromRadFt(double lon, double lat, double radius); @@ -42,6 +36,13 @@ public: static SGGeoc fromRadM(double lon, double lat, double radius); /// Factory from angular values in degrees and radius in m static SGGeoc fromDegM(double lon, double lat, double radius); + /// Factory to convert position from a cartesian position assumed to be + /// in wgs84 measured in meters + /// Note that this conversion is relatively expensive to compute + static SGGeoc fromCart(const SGVec3& cart); + /// Factory to convert position from a geodetic position + /// Note that this conversion is relatively expensive to compute + static SGGeoc fromGeod(const SGGeod& geod); /// Return the geocentric longitude in radians double getLongitudeRad(void) const; @@ -103,20 +104,6 @@ SGGeoc::SGGeoc(double lon, double lat, double radius) : { } -inline -SGGeoc::SGGeoc(const SGVec3& cart) -{ - SGGeodesy::SGCartToGeoc(cart, *this); -} - -inline -SGGeoc::SGGeoc(const SGGeod& geod) -{ - SGVec3 cart; - SGGeodesy::SGGeodToCart(geod, cart); - SGGeodesy::SGCartToGeoc(cart, *this); -} - inline SGGeoc SGGeoc::fromRadFt(double lon, double lat, double radius) @@ -165,6 +152,26 @@ SGGeoc::fromDegM(double lon, double lat, double radius) #endif } +inline +SGGeoc +SGGeoc::fromCart(const SGVec3& cart) +{ + SGGeoc geoc; + SGGeodesy::SGCartToGeoc(cart, geoc); + return geoc; +} + +inline +SGGeoc +SGGeoc::fromGeod(const SGGeod& geod) +{ + SGVec3 cart; + SGGeodesy::SGGeodToCart(geod, cart); + SGGeoc geoc; + SGGeodesy::SGCartToGeoc(cart, geoc); + return geoc; +} + inline double SGGeoc::getLongitudeRad(void) const