//! Individua gli eventuali angoli presenti nella curva da calcolare void detectCorners(const std::vector<T3DPointD> &inputPoints, int minSampleNum, int minDist, int maxDist, double maxAngle, std::vector<int> &cornerIndexes) { gMinSampleNum = minSampleNum; gMinDist = minDist; gMaxDist = maxDist; gSquaredMinDist = minDist * minDist; gSquaredMaxDist = maxDist * maxDist; gMaxAngle = maxAngle; interpolate(inputPoints); if ((int)gPoints.size() > 2 * gMaxDist) { findCornerCandidates(); findCorners((int)sqrt((float)gSquaredMaxDist) + 10, cornerIndexes); } gPoints.clear(); // check for no index equal to an adjacent std::vector<int>::iterator it1, it2; it1 = it2 = cornerIndexes.begin(); ++it2; while (it2 != cornerIndexes.end()) { if (*it1 == *it2) { it2 = cornerIndexes.erase(it2); } else { ++it1; ++it2; } } }