PostGIS  3.4.0dev-r@@SVN_REVISION@@

◆ update_means()

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

Definition at line 149 of file lwkmeans.c.

150 {
151  memset(centers, 0, sizeof(POINT4D) * k);
152  /* calculate weighted sum */
153  for (uint32_t i = 0; i < n; i++)
154  {
155  uint32_t cluster = clusters[i];
156  centers[cluster].x += objs[i].x * objs[i].m;
157  centers[cluster].y += objs[i].y * objs[i].m;
158  centers[cluster].z += objs[i].z * objs[i].m;
159  centers[cluster].m += objs[i].m;
160  }
161  /* divide by weight to get average */
162  for (uint32_t i = 0; i < k; i++)
163  {
164  if (centers[i].m)
165  {
166  centers[i].x /= centers[i].m;
167  centers[i].y /= centers[i].m;
168  centers[i].z /= centers[i].m;
169  }
170  }
171 }
double m
Definition: liblwgeom.h:414
double x
Definition: liblwgeom.h:414
double z
Definition: liblwgeom.h:414
double y
Definition: liblwgeom.h:414

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

Referenced by kmeans().

Here is the caller graph for this function: