71 if (
id >= clusters_.size()) {
75 clusters_[id]->SortPoint();
76 std::vector<SppPoint>& points = clusters_[id]->points;
77 std::vector<uint32_t>& indices = clusters_[id]->point_ids;
80 std::vector<size_t> split_indices(1, 0);
81 for (
size_t i = 1; i < points.size(); ++i) {
82 if (points[i].h < 0) {
85 gap = points[i].z - points[i - 1].z;
87 split_indices.push_back(i);
90 size_t split_num = split_indices.size();
92 size_t max_index = split_indices.size() - 1;
93 size_t length = points.size() - split_indices.back();
94 size_t max_length = length;
95 for (
size_t i = 1; i < split_indices.size(); ++i) {
96 length = split_indices[i] - split_indices[i - 1];
97 if (length > max_length) {
103 if (max_index != split_indices.size() - 1) {
104 size_t split_index = split_indices[max_index + 1];
105 points.resize(split_index);
106 indices.resize(split_index);