Move Centroid to coordinate_calculation

This commit is contained in:
Patrick Niklaus 2016-03-26 17:28:22 +01:00
parent f4cfde719d
commit 5829bbe22d
4 changed files with 14 additions and 14 deletions

View File

@ -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

View File

@ -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)

View File

@ -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)));

View File

@ -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;