У меня есть ошибка сегментации в этом коде, и я не могу понять, почему:
vector <double> *point;
for (int i = 0; i < point->size(); i += 3) {
for (int j = i + 3; j < point->size(); j += 3) {
if (distance((*point)[i], (*point)[i + 1],(*point)[i + 2], (*point)[j],(*point)[j + 1], (*point)[j + 2]) < treshold){
point->erase(point->begin() + j, point->begin() + j * 3);
j -= 3;
}
}
}
точка — это вектор координат точек, что-то вроде (x1,y1,z1,x2,y2,z3,...,xn,yn,zn). Расстояние — это функция, которая вычисляет евклидово расстояние между двумя точками с учетом координаты 6. По сути, я бы сделал что-то вроде «если две точки расположены слишком близко друг к другу, удалите одну из них». Но я получаю ошибку сегментации. Есть идеи?
point
— это не вектор, это указатель на вектор. На что это указывает? - person Konrad Rudolph   schedule 05.09.2012doubles
считается одним очком? Почему у вас нетvector
изcoordinate
, где каждаяcoordinate
содержит 3 сомнения? - person Mooing Duck   schedule 05.09.2012