PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ 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: