void przypisywanieDoKlastrow(const std::vector<punkt>& vectorCentroidow, std::vector<punkt>& vectorPunktow, daneWejsciowe przelaczniki)
{
double odleglosc1 = 0, odleglosc2 = 0;
for (size_t i = 0; i < vectorPunktow.size(); i++)
{
vectorPunktow[i].nrPoprzedniegoKlastra = vectorPunktow[i].nrKlastra;
for (size_t j = 0; j < vectorCentroidow.size(); j++)
{
for (int k = 0; k < przelaczniki.d; k++)
{
odleglosc2 += (vectorPunktow[i].wspolrzedne[k] - vectorCentroidow[j].wspolrzedne[k])*(vectorPunktow[i].wspolrzedne[k] - vectorCentroidow[j].wspolrzedne[k]);
}
if (odleglosc2 <= odleglosc1)
{
vectorPunktow[i].nrKlastra = j;
}
odleglosc1 = odleglosc2;
/*odleglosc2 = sqrt(odleglosc2);
if (odleglosc2 > odleglosc1)
{
vectorPunktow[i].nrKlastra = j-1;
}
else
{
vectorPunktow[i].nrKlastra = j;
}
odleglosc1 = odleglosc2;*/
}
odleglosc1 = 0;
odleglosc2 = 0;
}
}
vectorCentroidow, to vector zawierający zmienne typu punkt, tak samo jak vectorPunktow. Tutaj jest struktura punkt:
struct punkt
{
std::vector<double> wspolrzedne;
int nrKlastra{};
int nrPoprzedniegoKlastra{};
};
przelaczniki.d, to liczba mówiąca o tym, ile wymiarow ma każdy punkt zarowno w vectorPunktow jak i w vectorCentroidow. Chodzi o to, zeby przypisac kazdemu punktowi z vectorPunktow jeden punkt z vectorCentroidow według odległości to znaczy do ktorego centroidu danemu punktowi jest najblizej.
Moje pytanie brzmi jak mam znalezc do którego centroida danemu punktowi jest najblizej?