X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fmath%2FSGGeodesy.hxx;h=cce38199b6b252de56afde984f67c3cbaf6c988d;hb=0b4f416ddc3ef8184ffd3b70ae2e8d3e58922bc0;hp=53e2cbb3734b749efc39923ae78434aa4ce7e072;hpb=781c445d14c2a8646ab1ce66fca691564a1eeb9c;p=simgear.git diff --git a/simgear/math/SGGeodesy.hxx b/simgear/math/SGGeodesy.hxx index 53e2cbb3..cce38199 100644 --- a/simgear/math/SGGeodesy.hxx +++ b/simgear/math/SGGeodesy.hxx @@ -50,6 +50,11 @@ public: static bool direct(const SGGeod& p1, double course1, double distance, SGGeod& p2, double& course2); + /// overloaded version of above, returns new value directly, throws + /// an sg_exception on failure. + static SGGeod direct(const SGGeod& p1, double course1, + double distance); + static bool inverse(const SGGeod& p1, const SGGeod& p2, double& course1, double& course2, double& distance); @@ -61,7 +66,18 @@ public: static void advanceRadM(const SGGeoc& geoc, double course, double distance, SGGeoc& result); static double courseRad(const SGGeoc& from, const SGGeoc& to); + static double distanceRad(const SGGeoc& from, const SGGeoc& to); static double distanceM(const SGGeoc& from, const SGGeoc& to); + + /** + * compute the intersection of two (true) radials (in degrees), or return false + * if no intersection culd be computed. + */ + static bool radialIntersection(const SGGeoc& a, double aRadial, + const SGGeoc& b, double bRadial, SGGeoc& result); + + static bool radialIntersection(const SGGeod& a, double aRadial, + const SGGeod& b, double bRadial, SGGeod& result); }; #endif