Skip to content
Snippets Groups Projects
Commit a7dcebdd authored by Boris Stefanovic's avatar Boris Stefanovic
Browse files

ADD: finished cluster logic, (too?) many dereferences

parent b07e03a1
No related branches found
No related tags found
No related merge requests found
......@@ -33,51 +33,45 @@ void cluster_destroy_fpt(cluster_fpt_t* cluster) {
void cluster_add_point_int(cluster_int_t* cluster, vector_int_t* point) {
//TODO
if (NULL == cluster || NULL == point) return;
list_points_append_int(cluster->points, point);
if (NULL == cluster->center) {
cluster->center = vector_copy_int(point);
} else {
vector_int_t* delta = vector_copy_int(point);
vector_div_inplace_int(delta, cluster->points->size);
vector_add_inplace_int(cluster->center, *delta);
vector_destroy_int(delta);
}
}
void cluster_add_point_fpt(cluster_fpt_t* cluster, vector_fpt_t* point) {
//TODO
if (NULL == cluster || NULL == point) return;
list_points_append_fpt(cluster->points, point);
if (NULL == cluster->center) {
cluster->center = vector_copy_fpt(point);
} else {
vector_fpt_t* delta = vector_copy_fpt(point);
vector_div_inplace_fpt(delta, cluster->points->size);
vector_add_inplace_fpt(cluster->center, *delta);
vector_destroy_fpt(delta);
}
}
void cluster_update_center_int(cluster_int_t* cluster) {
//TODO
vector_destroy_int(cluster->center);
cluster->center = vector_create_int(cluster->points->head->point->dim);
list_points_node_int_t* node = cluster->points->head;
while (node != NULL) {
vector_add_inplace_int(cluster->center, *(node->point));
node = node->next;
}
vector_div_inplace_int(cluster->center, (int_t) cluster->points->size);
}
void cluster_update_center_fpt(cluster_fpt_t* cluster) {
//TODO
vector_destroy_fpt(cluster->center);
cluster->center = vector_create_fpt(cluster->points->head->point->dim);
list_points_node_fpt_t* node = cluster->points->head;
while (node != NULL) {
vector_add_inplace_fpt(cluster->center, *(node->point));
node = node->next;
}
vector_div_inplace_fpt(cluster->center, (fpt_t) cluster->points->size);
}
void cluster_reset_int(cluster_int_t* cluster) {
//TODO
list_points_destroy_int(cluster->points, false);
cluster->points = list_points_create_int();
}
void cluster_reset_fpt(cluster_fpt_t* cluster) {
//TODO
list_points_destroy_fpt(cluster->points, false);
cluster->points = list_points_create_fpt();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment