#include "ExtractControlPoints2D.h" //Construction ExtractControlPoints2D::ExtractControlPoints2D() { _numinterspline = 100; _numsampling = 25; } //Destruction ExtractControlPoints2D::~ExtractControlPoints2D() { } //----------------------------------------------------------------------------------------- void ExtractControlPoints2D::ResetControlPoints() { } //----------------------------------------------------------------------------------------- void ExtractControlPoints2D::SetContour(std::vector*InX, std::vector*InY,std::vector*InZ) { _InX.clear(); _InY.clear(); _InZ.clear(); int sizeX = InX->size(); int sizeY = InY->size(); int sizeZ = InZ->size(); if( (sizeX == sizeY) && (sizeY==sizeZ) ) { for(int i=0; i*pOutX, std::vector*pOutY, std::vector*pOutZ) { AutoControlPoints *autoc = new AutoControlPoints(); pOutX->clear(); pOutY->clear(); pOutZ->clear(); if(_InX.size() != 0) { autoc->SetNumSplineInterpolation((int)_numinterspline); autoc->CalculeInitialControlPoints(&_InX,&_InY,&_InZ); autoc->GetInitialControlPoints(pOutX,pOutY,pOutZ); } delete autoc; } //----------------------------------------------------------------------------------------- //AUTOMATIC METHOD (INITIAL, ADDING AND SAMPLING) void ExtractControlPoints2D::GetControlPoints(std::vector*pOutX, std::vector*pOutY, std::vector*pOutZ) { AutoControlPoints *autoc = new AutoControlPoints(); pOutX->clear(); pOutY->clear(); pOutZ->clear(); if(_InX.size() != 0) { autoc->SetNumSplineInterpolation((int)_numinterspline); autoc->CalculeControlPoints(&_InX,&_InY,&_InZ); autoc->GetControlPoints(pOutX,pOutY,pOutZ); } delete autoc; } //----------------------------------------------------------------------------------------- //SET THE SAMPLING (PERCENT) FOR THE REGULAR SAMPLING METHOD void ExtractControlPoints2D::SetSamplingControlPoints(double val) { if(_InX.size() != 0) { _numsampling = _InX.size()* (val/100); } } //----------------------------------------------------------------------------------------- //REGULAR SAMPLING METHOD void ExtractControlPoints2D::GetSamplingControlPoints(std::vector*pOutX, std::vector*pOutY, std::vector*pOutZ) { pOutX->clear(); pOutY->clear(); pOutZ->clear(); if(_InX.size() != 0) { int h = 1; //int j=0; // JPRx int points = (int)(_InX.size()/_numsampling); for (int i=0; i<(int)(_InX.size()); i++, h++) { if( h == points ) { pOutX->push_back( _InX[i] ); pOutY->push_back( _InY[i] ); pOutZ->push_back( _InZ[i] ); h = 0; } } } } //----------------------------------------------------------------------------------------- void ExtractControlPoints2D::SetNumberOfSplineInterpolation(double val) { _numinterspline = val; } //------------------------------------------------------------------------------