From 45f5abaea11968ab2a87936524eb911b9585cbfb Mon Sep 17 00:00:00 2001 From: Nikolaj Date: Wed, 6 Oct 2021 16:54:21 +0200 Subject: [PATCH] :vomit: --- A1/coord_query_kdtree | Bin 32712 -> 32696 bytes A1/coord_query_kdtree.c | 24 +++++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/A1/coord_query_kdtree b/A1/coord_query_kdtree index a2b0bc784a0f1d5c81f141a8acfa67493dd7174f..3dab3e78d43ccf133f564ac15d4d9a233e73f8cf 100755 GIT binary patch delta 5429 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 diff --git a/A1/coord_query_kdtree.c b/A1/coord_query_kdtree.c index 1e5b9c5..4d91029 100644 --- a/A1/coord_query_kdtree.c +++ b/A1/coord_query_kdtree.c @@ -78,36 +78,38 @@ void free_kdtree(struct node* data) { free_kdtree(right); } -void lookup(struct record** closest, double closest_dist, double query[2], struct node* tree) { +struct record* lookup(struct record* closest, double query[2], struct node* tree) { if (tree == NULL) { - return; + return closest; } double compare_coord[2] = {tree->point[0], tree->point[1]}; double dist = calc_euclidean(query, compare_coord); + + double closest_coords[2] = {closest->lon, closest->lat}; + double closest_dist = calc_euclidean(query, closest_coords); if (dist < closest_dist) { - closest = &tree->record; - closest_dist = dist; + closest = tree->record; } double diff = tree->point[tree->axis] - query[tree->axis]; if (diff >= 0 || closest_dist > fabs(diff)) { - lookup(closest, closest_dist, query, tree->left); - } else if (diff <= 0 || closest_dist > fabs(diff)) { - lookup(closest, closest_dist, query, tree->right); + closest = lookup(closest, query, tree->left); } - return; + if (diff <= 0 || closest_dist > fabs(diff)) { + closest = lookup(closest, query, tree->right); + } + + return closest; } const struct record* lookup_kdtree(struct node *data, double lon, double lat) { struct record* closest = data->record; - double compare_coord[2] = {data->point[0], data->point[1]}; double query[2] = {lon, lat}; - double closest_dist = calc_euclidean(query, compare_coord); - lookup(&closest, closest_dist, query, data); + closest = lookup(closest, query, data); return closest; }