Add euclideanDistance to coordinate_calculation

This commit is contained in:
Patrick Niklaus 2016-02-24 21:26:30 +01:00
parent 5e5c52ff0a
commit 9bb31678a6
2 changed files with 16 additions and 0 deletions

View File

@ -19,6 +19,10 @@ const constexpr long double EARTH_RADIUS = 6372797.560856;
namespace coordinate_calculation
{
//! Projects both coordinates and takes the euclidean distance of the projected points
// Does not return meters!
double euclideanDistance(const Coordinate first_coordinate, const Coordinate second_coordinate);
double haversineDistance(const Coordinate first_coordinate, const Coordinate second_coordinate);
double greatCircleDistance(const Coordinate first_coordinate, const Coordinate second_coordinate);

View File

@ -17,6 +17,18 @@ namespace util
namespace coordinate_calculation
{
double euclideanDistance(const Coordinate coordinate_1, const Coordinate coordinate_2)
{
const double x1 = static_cast<double>(toFloating(coordinate_1.lon));
const double y1 = mercator::latToY(toFloating(coordinate_1.lat));
const double x2 = static_cast<double>(toFloating(coordinate_2.lon));
const double y2 = mercator::latToY(toFloating(coordinate_2.lat));
const double dx = x1 - x2;
const double dy = y1 - y2;
return std::sqrt(dx * dx + dy * dy);
}
double haversineDistance(const Coordinate coordinate_1, const Coordinate coordinate_2)
{
auto lon1 = static_cast<int>(coordinate_1.lon);