Add another overload of SGGeodesy::direct

This commit is contained in:
James Turner 2012-09-23 21:43:42 +01:00
parent acbe42775c
commit be405d2311
2 changed files with 23 additions and 0 deletions

View File

@ -318,6 +318,24 @@ SGGeodesy::direct(const SGGeod& p1, double course1,
return ret == 0; return ret == 0;
} }
SGGeod
SGGeodesy::direct(const SGGeod& p1, double course1, double distance)
{
double lat2, lon2, course2;
int ret = _geo_direct_wgs_84(p1.getLatitudeDeg(), p1.getLongitudeDeg(),
course1, distance, &lat2, &lon2, &course2);
if (ret != 0) {
throw sg_exception("_geo_direct_wgs_84 failed");
}
SGGeod p2;
p2.setLatitudeDeg(lat2);
p2.setLongitudeDeg(lon2);
p2.setElevationM(0);
return p2;
}
// given lat1, lon1, lat2, lon2, calculate starting and ending // given lat1, lon1, lat2, lon2, calculate starting and ending
// az1, az2 and distance (s). Lat, lon, and azimuth are in degrees. // az1, az2 and distance (s). Lat, lon, and azimuth are in degrees.
// distance in meters // distance in meters

View File

@ -50,6 +50,11 @@ public:
static bool direct(const SGGeod& p1, double course1, static bool direct(const SGGeod& p1, double course1,
double distance, SGGeod& p2, double& course2); 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, static bool inverse(const SGGeod& p1, const SGGeod& p2, double& course1,
double& course2, double& distance); double& course2, double& distance);