Compare commits

...

3 Commits

Author SHA1 Message Date
127e0d23ca Remove stray unused variable 2020-05-02 17:13:45 +02:00
6a546f6138 Automatically calculate weight from distance 2020-05-02 17:13:27 +02:00
788ff7af02 Add libm to CMakeLists 2020-05-02 17:13:06 +02:00
4 changed files with 21 additions and 5 deletions

View File

@ -19,6 +19,6 @@ aux_source_directory(./src SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST} "${HEADERS}")
target_link_libraries(${PROJECT_NAME} ${SOUP_LIBRARIES} ${JSON_LIBRARIES})
target_link_libraries(${PROJECT_NAME} ${SOUP_LIBRARIES} ${JSON_LIBRARIES} m)
install (TARGETS ${PROJECT_NAME} DESTINATION bin)

View File

@ -147,6 +147,17 @@ struct dijkstra_path *dijkstra_path_dup_shallow(struct dijkstra_path *path)
return dup;
}
dijkstra_cost dijkstra_get_weight_from_distance(struct dijkstra_node *node_a,
struct dijkstra_node *node_b)
{
float dist;
dist = sqrt(pow(node_a->position.x - node_b->position.x, 2) +
pow(node_a->position.y - node_b->position.y, 2));
return (dijkstra_cost) dist;
}
/*!
* \brief dijkstra_path_new creates a new dijkstra_path between two nodes.
* \param name the name of the path (pointer is not copied and must stay valid!)
@ -162,6 +173,10 @@ struct dijkstra_path *dijkstra_path_new(char *name,
path = malloc(sizeof(*path));
if (path) {
path->name = name;
if (path->weight == DIJKSTRA_WEIGHT_AUTO)
path->weight = dijkstra_get_weight_from_distance(source,
destination);
else
path->weight = weight;
dijkstra_connect_nodes_to_path(source, destination, path);
@ -204,8 +219,6 @@ int dijkstra_path_intersect(struct dijkstra_solver *solver,
float s1_x, s1_y, s2_x, s2_y;
float s, t;
int is_new;
if (!path_a || !path_b)
return -1;

View File

@ -3,6 +3,8 @@
#include <glib.h>
#define DIJKSTRA_WEIGHT_AUTO (-1)
typedef int dijkstra_cost;
struct dijkstra_solver {

View File

@ -83,7 +83,8 @@ int add_geojson_to_dijkstra(struct dijkstra_solver *solver,
dijkstra_path_new_to_list(solver,
x_last, y_last,
x, y,
name, 1);
name,
DIJKSTRA_WEIGHT_AUTO);
}
x_last = x;