@@ -236,22 +236,14 @@ namespace diffCheck::geometry
236236 cilantro::KMeans<double , 3 > kmeans (normalMatrix);
237237 kmeans.cluster (nComponents);
238238
239- const auto & centroids = kmeans.getClusterCentroids ();
240- const auto & assignments = kmeans.getPointToClusterIndexMap ();
241-
242- std::vector<std::pair<int , Eigen::Vector3d>> clusters (nComponents);
243- for (size_t i = 0 ; i < nComponents; ++i)
239+ const cilantro::VectorSet3d& centroids = kmeans.getClusterCentroids ();
240+ const std::vector<size_t >& assignments = kmeans.getPointToClusterIndexMap ();
241+ std::vector<int > clusterSizes (nComponents, 0 );
242+ for (size_t i = 0 ; i < assignments.size (); ++i)
244243 {
245- clusters[i] = {i, centroids. col (i)} ;
244+ clusterSizes[assignments[i]]++ ;
246245 }
247- std::sort (clusters.begin (), clusters.end (), [](const auto & a, const auto & b)
248- {
249- return a.second .norm () < b.second .norm ();
250- });
251-
252- std::vector<std::pair<int , Eigen::Vector3d>> sortedClusters (nComponents);
253- std::vector<int > clusterSizes (nComponents, 0 );
254-
246+ // Sort clusters by size
255247 std::vector<std::pair<int , Eigen::Vector3d>> sortedClustersBySize (nComponents);
256248 for (size_t i = 0 ; i < nComponents; ++i)
257249 {
0 commit comments