diff --git a/include/extractor/edge_based_node.hpp b/include/extractor/edge_based_node.hpp index ae85b02c7..701e7ece2 100644 --- a/include/extractor/edge_based_node.hpp +++ b/include/extractor/edge_based_node.hpp @@ -53,15 +53,6 @@ struct EdgeBasedNode (reverse_edge_based_node_id != SPECIAL_NODEID)); } - static inline util::Coordinate Centroid(const util::Coordinate a, const util::Coordinate b) - { - util::Coordinate centroid; - // The coordinates of the midpoint are given by: - centroid.lon = (a.lon + b.lon) / util::FixedLongitude(2); - centroid.lat = (a.lat + b.lat) / util::FixedLatitude(2); - return centroid; - } - NodeID forward_edge_based_node_id; // needed for edge-expanded graph NodeID reverse_edge_based_node_id; // needed for edge-expanded graph NodeID u; // indices into the coordinates array diff --git a/include/util/coordinate_calculation.hpp b/include/util/coordinate_calculation.hpp index e8d8c82a1..8dba68406 100644 --- a/include/util/coordinate_calculation.hpp +++ b/include/util/coordinate_calculation.hpp @@ -64,6 +64,8 @@ double perpendicularDistanceFromProjectedCoordinate( Coordinate &nearest_location, double &ratio); +Coordinate centroid(const Coordinate lhs, const Coordinate rhs); + double bearing(const Coordinate first_coordinate, const Coordinate second_coordinate); // Get angle of line segment (A,C)->(C,B) diff --git a/include/util/static_rtree.hpp b/include/util/static_rtree.hpp index e3d2cc9ef..6ef2a9d6c 100644 --- a/include/util/static_rtree.hpp +++ b/include/util/static_rtree.hpp @@ -137,11 +137,8 @@ class StaticRTree BOOST_ASSERT(current_element.u < coordinate_list.size()); BOOST_ASSERT(current_element.v < coordinate_list.size()); - Coordinate current_centroid = - EdgeDataT::Centroid(Coordinate(coordinate_list[current_element.u].lon, - coordinate_list[current_element.u].lat), - Coordinate(coordinate_list[current_element.v].lon, - coordinate_list[current_element.v].lat)); + Coordinate current_centroid = coordinate_calculation::centroid( + coordinate_list[current_element.u], coordinate_list[current_element.v]); current_centroid.lat = FixedLatitude( COORDINATE_PRECISION * coordinate_calculation::mercator::latToY(toFloating(current_centroid.lat))); diff --git a/src/util/coordinate_calculation.cpp b/src/util/coordinate_calculation.cpp index 5eafe9fae..67662ca9c 100644 --- a/src/util/coordinate_calculation.cpp +++ b/src/util/coordinate_calculation.cpp @@ -200,6 +200,16 @@ double perpendicularDistanceFromProjectedCoordinate( return approximate_distance; } +Coordinate centroid(const Coordinate lhs, const Coordinate rhs) +{ + Coordinate centroid; + // The coordinates of the midpoints are given by: + // x = (x1 + x2) /2 and y = (y1 + y2) /2. + centroid.lon = (lhs.lon + rhs.lon) / FixedLongitude(2); + centroid.lat = (lhs.lat + rhs.lat) / FixedLatitude(2); + return centroid; +} + double degToRad(const double degree) { using namespace boost::math::constants;