✨ coord_query
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include <assert.h>
|
||||
|
||||
#include "record.h"
|
||||
#include "euclidean_distance.h"
|
||||
#include "coord_query.h"
|
||||
|
||||
struct naive_data {
|
||||
@@ -15,18 +16,36 @@ struct naive_data {
|
||||
};
|
||||
|
||||
struct naive_data* mk_naive(struct record* rs, int n) {
|
||||
assert(0);
|
||||
// TODO
|
||||
struct naive_data* data = malloc(sizeof(struct naive_data*));
|
||||
data->rs = rs;
|
||||
data->n = n;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void free_naive(struct naive_data* data) {
|
||||
assert(0);
|
||||
// TODO
|
||||
free(data);
|
||||
}
|
||||
|
||||
const struct record* lookup_naive(struct naive_data *data, double lon, double lat) {
|
||||
assert(0);
|
||||
// TODO
|
||||
double search_coords[2] = {lon, lat};
|
||||
struct record* closest_point = &data->rs[0];
|
||||
|
||||
double compare_coords[2] = {(closest_point)->lon, (closest_point)->lat};
|
||||
double dist = calc_euclidean(search_coords, compare_coords);
|
||||
double closest_dist = dist;
|
||||
|
||||
for (int i = 1 ; i < data->n ; i++) {
|
||||
double compare_coords[2] = {(&data->rs[i])->lon, (&data->rs[i])->lat};
|
||||
double dist = calc_euclidean(search_coords, compare_coords);
|
||||
|
||||
if (dist < closest_dist) {
|
||||
closest_point = &data->rs[i];
|
||||
closest_dist = dist;
|
||||
}
|
||||
}
|
||||
|
||||
return closest_point;
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
|
||||
Reference in New Issue
Block a user