PostGIS  3.1.6dev-r@@SVN_REVISION@@

◆ update_means()

static void update_means ( POINT4D objs,
int *  clusters,
uint32_t  n,
POINT4D centers,
uint32_t  k 
)
static

Definition at line 67 of file lwkmeans.c.

68 {
69  memset(centers, 0, sizeof(POINT4D) * k);
70  for (uint32_t i = 0; i < n; i++)
71  {
72  int cluster = clusters[i];
73  centers[cluster].x += objs[i].x * objs[i].m;
74  centers[cluster].y += objs[i].y * objs[i].m;
75  centers[cluster].z += objs[i].z * objs[i].m;
76  centers[cluster].m += objs[i].m;
77  }
78  for (uint32_t i = 0; i < k; i++)
79  {
80  if (centers[i].m)
81  {
82  centers[i].x /= centers[i].m;
83  centers[i].y /= centers[i].m;
84  centers[i].z /= centers[i].m;
85  }
86  }
87 }
double m
Definition: liblwgeom.h:428
double x
Definition: liblwgeom.h:428
double z
Definition: liblwgeom.h:428
double y
Definition: liblwgeom.h:428

References POINT4D::m, POINT4D::x, POINT4D::y, and POINT4D::z.

Referenced by kmeans().

Here is the caller graph for this function: