00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef SGGeodesy_H
00019 #define SGGeodesy_H
00020
00021 class SGGeodesy {
00022 public:
00023
00024 static const double EQURAD;
00025 static const double iFLATTENING;
00026 static const double SQUASH;
00027 static const double STRETCH;
00028 static const double POLRAD;
00029
00032 static void SGCartToGeod(const SGVec3<double>& cart, SGGeod& geod);
00033
00036 static void SGGeodToCart(const SGGeod& geod, SGVec3<double>& cart);
00037
00039 static double SGGeodToSeaLevelRadius(const SGGeod& geod);
00040
00043 static void SGCartToGeoc(const SGVec3<double>& cart, SGGeoc& geoc);
00044
00047 static void SGGeocToCart(const SGGeoc& geoc, SGVec3<double>& cart);
00048
00049
00050 static bool direct(const SGGeod& p1, double course1,
00051 double distance, SGGeod& p2, double& course2);
00052
00053 static bool inverse(const SGGeod& p1, const SGGeod& p2, double& course1,
00054 double& course2, double& distance);
00055
00056 static double courseDeg(const SGGeod& from, const SGGeod& to);
00057 static double distanceM(const SGGeod& from, const SGGeod& to);
00058 static double distanceNm(const SGGeod& from, const SGGeod& to);
00059
00060
00061 static void advanceRadM(const SGGeoc& geoc, double course, double distance,
00062 SGGeoc& result);
00063 static double courseRad(const SGGeoc& from, const SGGeoc& to);
00064 static double distanceRad(const SGGeoc& from, const SGGeoc& to);
00065 static double distanceM(const SGGeoc& from, const SGGeoc& to);
00066 };
00067
00068 #endif