- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
//thirteen
Cluster cl;
Cluster empty;
I--;
if(distances.size()){
for (int i = 0; i < (Lmax < distances.size() ? Lmax : distances.size()); ++i){
cl.X(( clusters.at(distances.at(i).first.first).X()*clusters.at(distances.at(i).first.first).Points().size() + clusters.at(distances.at(i).first.second).X()*clusters.at(distances.at(i).first.second).Points().size())/(clusters.at(distances.at(i).first.first).Points().size() + clusters.at(distances.at(i).first.second).Points().size()));
cl.Y(( clusters.at(distances.at(i).first.first).Y()*clusters.at(distances.at(i).first.first).Points().size() + clusters.at(distances.at(i).first.second).Y()*clusters.at(distances.at(i).first.second).Points().size())/(clusters.at(distances.at(i).first.first).Points().size() + clusters.at(distances.at(i).first.second).Points().size()));
if(clusters.at(distances.at(i).first.second).Number() != -1 && clusters.at(distances.at(i).first.first).Number() != -2){
cl.Points() = clusters.at(distances.at(i).first.second).Points();
clusters.at(distances.at(i).first.second) = cl;
clusters.at(distances.at(i).first.second).Number(-1);
for (std::vector<Point>::iterator j = clusters.at(distances.at(i).first.first).Points().begin(); j != clusters.at(distances.at(i).first.first).Points().end(); ++j)
{
clusters.at(distances.at(i).first.second).Points().push_back(*j);
}
clusters.at(distances.at(i).first.first) = empty;
n_c--;
}
}
for (std::vector<Cluster>::iterator i = clusters.begin(); i != clusters.end(); ++i){
if(i->Number() == -2){
i = clusters.erase(i);
}
i->Number(i - clusters.begin());
if(I)i->Points().clear();
if(i == clusters.end())break;
}
}
//fourteen