void removeClosePoints( SoMFVec3f& point, float minDist ) { int numPoints = point.getNum(); if( numPoints >= 2 ) { for( int ni = numPoints - 1, i = 0; i < numPoints; ) { if( (point[ni] - point[i]).length() <= minDist ) { point.deleteValues( i, 1 ); -- numPoints; } else // move forward { ni = i ++; } } } }
void removeClosePoints( const SoMFVec3f& point, SoMFVec3f& cleanPoints, float minDist ) { cleanPoints.setNum( point.getNum() ); cleanPoints.setValues( 0, point.getNum(), point.getValues(0) ); int numPoints = cleanPoints.getNum(); if( cleanPoints.getNum() >= 2 ) { for( int ni = numPoints - 1, i = 0; i < numPoints; ) { if( (cleanPoints[ni] - cleanPoints[i]).length() <= minDist ) { cleanPoints.deleteValues( i, 1 ); -- numPoints; } else // move forward { ni = i ++; } } } }