9 const size_t cloud_size = cloud->size();
10 std::vector<edge> result;
11 result.reserve(cloud_size * (cloud_size - 1) / 2);
13 for(
size_t i = 0; i < cloud_size; ++i)
15 pcl::PointXYZI pointA = (*cloud)[i];
17 for(
size_t j = i + 1; j < cloud_size; ++j)
19 pcl::PointXYZI pointB = (*cloud)[j];
21 float distance = metric(pointA, pointB, i, j, cloud);
33 std::sort(result.begin(), result.end());
41 std::vector<state> result;
43 std::vector<edge> selectedEdges;
44 std::vector<size_t> groups(cloud->size());
45 for(
size_t i = 0; i < groups.size(); i++) {
49 for(std::vector<edge>::const_iterator
edge = edges.begin();
edge != edges.end(); ++
edge)
55 if(groupA != groupB && filter(cloud, *
edge, selectedEdges, groups))
57 selectedEdges.push_back(*
edge);
60 for(std::vector<size_t>::iterator it = groups.begin(); it != groups.end(); ++it)
71 result.push_back(
state);