Move calculate_coordinate to algorithms/

Fixes #1367
This commit is contained in:
Patrick Niklaus 2015-08-06 15:48:29 +02:00
parent a7eabeb73f
commit 49adf2192a
14 changed files with 53 additions and 48 deletions

View File

@ -73,7 +73,7 @@ add_executable(osrm-prepare ${PrepareSources} $<TARGET_OBJECTS:ANGLE> $<TARGET_O
file(GLOB ServerGlob server/*.cpp) file(GLOB ServerGlob server/*.cpp)
file(GLOB DescriptorGlob descriptors/*.cpp) file(GLOB DescriptorGlob descriptors/*.cpp)
file(GLOB DatastructureGlob data_structures/search_engine_data.cpp data_structures/route_parameters.cpp util/bearing.cpp) file(GLOB DatastructureGlob data_structures/search_engine_data.cpp data_structures/route_parameters.cpp util/bearing.cpp)
file(GLOB CoordinateGlob data_structures/coordinate*.cpp) file(GLOB CoordinateGlob data_structures/coordinate.cpp algorithms/coordinate_calculation.cpp)
file(GLOB AlgorithmGlob algorithms/polyline_compressor.cpp algorithms/polyline_formatter.cpp algorithms/douglas_peucker.cpp) file(GLOB AlgorithmGlob algorithms/polyline_compressor.cpp algorithms/polyline_formatter.cpp algorithms/douglas_peucker.cpp)
file(GLOB HttpGlob server/http/*.cpp) file(GLOB HttpGlob server/http/*.cpp)
file(GLOB LibOSRMGlob library/*.cpp) file(GLOB LibOSRMGlob library/*.cpp)

View File

@ -46,7 +46,10 @@ constexpr static const float RAD = 0.017453292519943295769236907684886f;
constexpr static const float earth_radius = 6372797.560856f; constexpr static const float earth_radius = 6372797.560856f;
} }
double coordinate_calculation::great_circle_distance(const int lat1, namespace coordinate_calculation
{
double great_circle_distance(const int lat1,
const int lon1, const int lon1,
const int lat2, const int lat2,
const int lon2) const int lon2)
@ -74,21 +77,21 @@ double coordinate_calculation::great_circle_distance(const int lat1,
return earth_radius * cHarv; return earth_radius * cHarv;
} }
double coordinate_calculation::great_circle_distance(const FixedPointCoordinate &coordinate_1, double great_circle_distance(const FixedPointCoordinate &coordinate_1,
const FixedPointCoordinate &coordinate_2) const FixedPointCoordinate &coordinate_2)
{ {
return great_circle_distance(coordinate_1.lat, coordinate_1.lon, coordinate_2.lat, return great_circle_distance(coordinate_1.lat, coordinate_1.lon, coordinate_2.lat,
coordinate_2.lon); coordinate_2.lon);
} }
float coordinate_calculation::euclidean_distance(const FixedPointCoordinate &coordinate_1, float euclidean_distance(const FixedPointCoordinate &coordinate_1,
const FixedPointCoordinate &coordinate_2) const FixedPointCoordinate &coordinate_2)
{ {
return euclidean_distance(coordinate_1.lat, coordinate_1.lon, coordinate_2.lat, return euclidean_distance(coordinate_1.lat, coordinate_1.lon, coordinate_2.lat,
coordinate_2.lon); coordinate_2.lon);
} }
float coordinate_calculation::euclidean_distance(const int lat1, float euclidean_distance(const int lat1,
const int lon1, const int lon1,
const int lat2, const int lat2,
const int lon2) const int lon2)
@ -108,7 +111,7 @@ float coordinate_calculation::euclidean_distance(const int lat1,
return std::hypot(x_value, y_value) * earth_radius; return std::hypot(x_value, y_value) * earth_radius;
} }
float coordinate_calculation::perpendicular_distance(const FixedPointCoordinate &source_coordinate, float perpendicular_distance(const FixedPointCoordinate &source_coordinate,
const FixedPointCoordinate &target_coordinate, const FixedPointCoordinate &target_coordinate,
const FixedPointCoordinate &query_location) const FixedPointCoordinate &query_location)
{ {
@ -119,7 +122,7 @@ float coordinate_calculation::perpendicular_distance(const FixedPointCoordinate
nearest_location, ratio); nearest_location, ratio);
} }
float coordinate_calculation::perpendicular_distance(const FixedPointCoordinate &segment_source, float perpendicular_distance(const FixedPointCoordinate &segment_source,
const FixedPointCoordinate &segment_target, const FixedPointCoordinate &segment_target,
const FixedPointCoordinate &query_location, const FixedPointCoordinate &query_location,
FixedPointCoordinate &nearest_location, FixedPointCoordinate &nearest_location,
@ -132,7 +135,7 @@ float coordinate_calculation::perpendicular_distance(const FixedPointCoordinate
nearest_location, ratio); nearest_location, ratio);
} }
float coordinate_calculation::perpendicular_distance_from_projected_coordinate( float perpendicular_distance_from_projected_coordinate(
const FixedPointCoordinate &source_coordinate, const FixedPointCoordinate &source_coordinate,
const FixedPointCoordinate &target_coordinate, const FixedPointCoordinate &target_coordinate,
const FixedPointCoordinate &query_location, const FixedPointCoordinate &query_location,
@ -146,7 +149,7 @@ float coordinate_calculation::perpendicular_distance_from_projected_coordinate(
nearest_location, ratio); nearest_location, ratio);
} }
float coordinate_calculation::perpendicular_distance_from_projected_coordinate( float perpendicular_distance_from_projected_coordinate(
const FixedPointCoordinate &segment_source, const FixedPointCoordinate &segment_source,
const FixedPointCoordinate &segment_target, const FixedPointCoordinate &segment_target,
const FixedPointCoordinate &query_location, const FixedPointCoordinate &query_location,
@ -221,29 +224,29 @@ float coordinate_calculation::perpendicular_distance_from_projected_coordinate(
BOOST_ASSERT(nearest_location.is_valid()); BOOST_ASSERT(nearest_location.is_valid());
const float approximate_distance = const float approximate_distance =
coordinate_calculation::euclidean_distance(query_location, nearest_location); euclidean_distance(query_location, nearest_location);
BOOST_ASSERT(0.f <= approximate_distance); BOOST_ASSERT(0.f <= approximate_distance);
return approximate_distance; return approximate_distance;
} }
void coordinate_calculation::lat_or_lon_to_string(const int value, std::string &output) void lat_or_lon_to_string(const int value, std::string &output)
{ {
char buffer[12]; char buffer[12];
buffer[11] = 0; // zero termination buffer[11] = 0; // zero termination
output = printInt<11, 6>(buffer, value); output = printInt<11, 6>(buffer, value);
} }
float coordinate_calculation::deg_to_rad(const float degree) float deg_to_rad(const float degree)
{ {
return degree * (static_cast<float>(M_PI) / 180.f); return degree * (static_cast<float>(M_PI) / 180.f);
} }
float coordinate_calculation::rad_to_deg(const float radian) float rad_to_deg(const float radian)
{ {
return radian * (180.f * static_cast<float>(M_1_PI)); return radian * (180.f * static_cast<float>(M_1_PI));
} }
float coordinate_calculation::bearing(const FixedPointCoordinate &first_coordinate, float bearing(const FixedPointCoordinate &first_coordinate,
const FixedPointCoordinate &second_coordinate) const FixedPointCoordinate &second_coordinate)
{ {
const float lon_diff = const float lon_diff =
@ -266,3 +269,5 @@ float coordinate_calculation::bearing(const FixedPointCoordinate &first_coordina
} }
return result; return result;
} }
}

View File

@ -33,38 +33,38 @@ struct FixedPointCoordinate;
#include <string> #include <string>
#include <utility> #include <utility>
struct coordinate_calculation namespace coordinate_calculation
{ {
static double double
great_circle_distance(const int lat1, const int lon1, const int lat2, const int lon2); great_circle_distance(const int lat1, const int lon1, const int lat2, const int lon2);
static double great_circle_distance(const FixedPointCoordinate &first_coordinate, double great_circle_distance(const FixedPointCoordinate &first_coordinate,
const FixedPointCoordinate &second_coordinate); const FixedPointCoordinate &second_coordinate);
static float euclidean_distance(const FixedPointCoordinate &first_coordinate, float euclidean_distance(const FixedPointCoordinate &first_coordinate,
const FixedPointCoordinate &second_coordinate); const FixedPointCoordinate &second_coordinate);
static float euclidean_distance(const int lat1, const int lon1, const int lat2, const int lon2); float euclidean_distance(const int lat1, const int lon1, const int lat2, const int lon2);
static void lat_or_lon_to_string(const int value, std::string &output); void lat_or_lon_to_string(const int value, std::string &output);
static float perpendicular_distance(const FixedPointCoordinate &segment_source, float perpendicular_distance(const FixedPointCoordinate &segment_source,
const FixedPointCoordinate &segment_target, const FixedPointCoordinate &segment_target,
const FixedPointCoordinate &query_location); const FixedPointCoordinate &query_location);
static float perpendicular_distance(const FixedPointCoordinate &segment_source, float perpendicular_distance(const FixedPointCoordinate &segment_source,
const FixedPointCoordinate &segment_target, const FixedPointCoordinate &segment_target,
const FixedPointCoordinate &query_location, const FixedPointCoordinate &query_location,
FixedPointCoordinate &nearest_location, FixedPointCoordinate &nearest_location,
float &ratio); float &ratio);
static float perpendicular_distance_from_projected_coordinate( float perpendicular_distance_from_projected_coordinate(
const FixedPointCoordinate &segment_source, const FixedPointCoordinate &segment_source,
const FixedPointCoordinate &segment_target, const FixedPointCoordinate &segment_target,
const FixedPointCoordinate &query_location, const FixedPointCoordinate &query_location,
const std::pair<double, double> &projected_coordinate); const std::pair<double, double> &projected_coordinate);
static float perpendicular_distance_from_projected_coordinate( float perpendicular_distance_from_projected_coordinate(
const FixedPointCoordinate &segment_source, const FixedPointCoordinate &segment_source,
const FixedPointCoordinate &segment_target, const FixedPointCoordinate &segment_target,
const FixedPointCoordinate &query_location, const FixedPointCoordinate &query_location,
@ -72,11 +72,11 @@ struct coordinate_calculation
FixedPointCoordinate &nearest_location, FixedPointCoordinate &nearest_location,
float &ratio); float &ratio);
static float deg_to_rad(const float degree); float deg_to_rad(const float degree);
static float rad_to_deg(const float radian); float rad_to_deg(const float radian);
static float bearing(const FixedPointCoordinate &first_coordinate, float bearing(const FixedPointCoordinate &first_coordinate,
const FixedPointCoordinate &second_coordinate); const FixedPointCoordinate &second_coordinate);
}; }
#endif // COORDINATE_CALCULATION #endif // COORDINATE_CALCULATION

View File

@ -25,7 +25,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
#include "coordinate_calculation.hpp" #include "../algorithms/coordinate_calculation.hpp"
#ifndef NDEBUG #ifndef NDEBUG
#include "../util/simple_logger.hpp" #include "../util/simple_logger.hpp"

View File

@ -28,7 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef RECTANGLE_HPP #ifndef RECTANGLE_HPP
#define RECTANGLE_HPP #define RECTANGLE_HPP
#include "coordinate_calculation.hpp" #include "../algorithms/coordinate_calculation.hpp"
#include <boost/assert.hpp> #include <boost/assert.hpp>

View File

@ -28,7 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "description_factory.hpp" #include "description_factory.hpp"
#include "../algorithms/polyline_formatter.hpp" #include "../algorithms/polyline_formatter.hpp"
#include "../data_structures/coordinate_calculation.hpp" #include "../algorithms/coordinate_calculation.hpp"
#include "../data_structures/internal_route_result.hpp" #include "../data_structures/internal_route_result.hpp"
#include "../data_structures/turn_instructions.hpp" #include "../data_structures/turn_instructions.hpp"
#include "../util/container.hpp" #include "../util/container.hpp"

View File

@ -28,7 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef DESCRIPTOR_BASE_HPP #ifndef DESCRIPTOR_BASE_HPP
#define DESCRIPTOR_BASE_HPP #define DESCRIPTOR_BASE_HPP
#include "../data_structures/coordinate_calculation.hpp" #include "../algorithms/coordinate_calculation.hpp"
#include "../data_structures/internal_route_result.hpp" #include "../data_structures/internal_route_result.hpp"
#include "../data_structures/phantom_node.hpp" #include "../data_structures/phantom_node.hpp"
#include "../typedefs.h" #include "../typedefs.h"

View File

@ -28,7 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "extraction_containers.hpp" #include "extraction_containers.hpp"
#include "extraction_way.hpp" #include "extraction_way.hpp"
#include "../data_structures/coordinate_calculation.hpp" #include "../algorithms/coordinate_calculation.hpp"
#include "../data_structures/node_id.hpp" #include "../data_structures/node_id.hpp"
#include "../data_structures/range_table.hpp" #include "../data_structures/range_table.hpp"

View File

@ -30,7 +30,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "routing_base.hpp" #include "routing_base.hpp"
#include "../data_structures/coordinate_calculation.hpp" #include "../algorithms/coordinate_calculation.hpp"
#include "../data_structures/hidden_markov_model.hpp" #include "../data_structures/hidden_markov_model.hpp"
#include "../util/json_logger.hpp" #include "../util/json_logger.hpp"
#include "../util/matching_debug_info.hpp" #include "../util/matching_debug_info.hpp"

View File

@ -28,7 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef ROUTING_BASE_HPP #ifndef ROUTING_BASE_HPP
#define ROUTING_BASE_HPP #define ROUTING_BASE_HPP
#include "../data_structures/coordinate_calculation.hpp" #include "../algorithms/coordinate_calculation.hpp"
#include "../data_structures/internal_route_result.hpp" #include "../data_structures/internal_route_result.hpp"
#include "../data_structures/search_engine_data.hpp" #include "../data_structures/search_engine_data.hpp"
#include "../data_structures/turn_instructions.hpp" #include "../data_structures/turn_instructions.hpp"

View File

@ -27,7 +27,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "../typedefs.h" #include "../typedefs.h"
#include "../algorithms/tiny_components.hpp" #include "../algorithms/tiny_components.hpp"
#include "../data_structures/coordinate_calculation.hpp" #include "../algorithms/coordinate_calculation.hpp"
#include "../data_structures/dynamic_graph.hpp" #include "../data_structures/dynamic_graph.hpp"
#include "../data_structures/static_graph.hpp" #include "../data_structures/static_graph.hpp"
#include "../util/fingerprint.hpp" #include "../util/fingerprint.hpp"

View File

@ -29,7 +29,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <boost/test/unit_test.hpp> #include <boost/test/unit_test.hpp>
#include "../../algorithms/polyline_compressor.hpp" #include "../../algorithms/polyline_compressor.hpp"
#include "../../data_structures/coordinate_calculation.hpp" #include "../../algorithms/coordinate_calculation.hpp"
#include <osrm/coordinate.hpp> #include <osrm/coordinate.hpp>

View File

@ -27,7 +27,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <boost/test/unit_test.hpp> #include <boost/test/unit_test.hpp>
#include "../../data_structures/coordinate_calculation.hpp" #include "../../algorithms/coordinate_calculation.hpp"
#include <osrm/coordinate.hpp> #include <osrm/coordinate.hpp>

View File

@ -25,7 +25,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
#include "../../data_structures/coordinate_calculation.hpp" #include "../../algorithms/coordinate_calculation.hpp"
#include "../../data_structures/static_rtree.hpp" #include "../../data_structures/static_rtree.hpp"
#include "../../data_structures/query_node.hpp" #include "../../data_structures/query_node.hpp"
#include "../../data_structures/edge_based_node.hpp" #include "../../data_structures/edge_based_node.hpp"