Collapse computeAngle into coordinate calculation

This commit is contained in:
Daniel J. Hofmann
2016-01-21 12:58:24 +01:00
committed by Patrick Niklaus
parent 0fcca04150
commit 46fc6f8da4
5 changed files with 33 additions and 44 deletions
+2 -3
View File
@@ -2,7 +2,6 @@
#include "extractor/edge_based_graph_factory.hpp"
#include "util/coordinate_calculation.hpp"
#include "util/percent.hpp"
#include "util/compute_angle.hpp"
#include "util/integer_range.hpp"
#include "util/lua_util.hpp"
#include "util/simple_logger.hpp"
@@ -336,7 +335,7 @@ void EdgeBasedGraphFactory::GenerateEdgeExpandedNodes()
}
BOOST_ASSERT(m_edge_based_node_list.size() == m_edge_based_node_is_startpoint.size());
BOOST_ASSERT(m_max_edge_id+1 == m_edge_based_node_weights.size());
BOOST_ASSERT(m_max_edge_id + 1 == m_edge_based_node_weights.size());
util::SimpleLogger().Write() << "Generated " << m_edge_based_node_list.size()
<< " nodes in edge-expanded graph";
@@ -498,7 +497,7 @@ void EdgeBasedGraphFactory::GenerateEdgeExpandedEdges(
? m_compressed_edge_container.GetFirstEdgeTargetID(e2)
: node_w)];
const double turn_angle = util::ComputeAngle(
const double turn_angle = util::coordinate_calculation::computeAngle(
first_coordinate, m_node_info_list[node_v], third_coordinate);
const int turn_penalty = GetTurnPenalty(turn_angle, lua_state);
+22
View File
@@ -2,6 +2,7 @@
#include "util/mercator.hpp"
#include "util/string_util.hpp"
#include "util/trigonometry_table.hpp"
#include <boost/assert.hpp>
@@ -218,6 +219,27 @@ double bearing(const FixedPointCoordinate &first_coordinate,
}
return result;
}
double computeAngle(const FixedPointCoordinate &first,
const FixedPointCoordinate &second,
const FixedPointCoordinate &third)
{
const double v1x = (first.lon - second.lon) / COORDINATE_PRECISION;
const double v1y = mercator::latToY(first.lat / COORDINATE_PRECISION) -
mercator::latToY(second.lat / COORDINATE_PRECISION);
const double v2x = (third.lon - second.lon) / COORDINATE_PRECISION;
const double v2y = mercator::latToY(third.lat / COORDINATE_PRECISION) -
mercator::latToY(second.lat / COORDINATE_PRECISION);
double angle = (atan2_lookup(v2y, v2x) - atan2_lookup(v1y, v1x)) * 180. / M_PI;
while (angle < 0.)
{
angle += 360.;
}
return angle;
}
}
}
}