#include "FileManager.h" #include "PointSet.h" #include "OctSampler.h" #include "RbfGenerator.h" #include #include #include #include int main(int argc, char** argv){ PointSet* ps; if(strstr(argv[1], ".ply2") != NULL) ps = FileManager::readMeshFile(argv[1]); else ps = FileManager::readPwnFile(argv[1]); ps->rescale(20.0f); clock_t start = clock(); OctSampler* oct = new OctSampler(ps); float dia = 2.0f*(float)sqrt(oct->_sx*oct->_sx + oct->_sy*oct->_sy + oct->_sz*oct->_sz); float min[3], max[3]; ps->getBound(min, max, 1.5f); RbfGenerator generator(0, min, max); generator._diagonal = dia; if(argc > 4){ generator._error = (float)atof(argv[4])*dia; generator._smooth = (float)atof(argv[5]); } int M = atoi(argv[3]); float support = dia*1.5f; for(int i=1; i<=M; i++){ PointSet* qs = oct->getPointSet(i); cout << "Level " << i << ": " << qs->_pointN << " points" << endl; //if(i==M) generator.addPointSet(qs, support, i); support *= 0.5f; } delete oct; //cout << "Final level " << i << ": " << ps->_pointN << " points" << endl; //generator.addPointSet(ps, support, i); clock_t duration = clock() - start; printf("Fitting time is %d sec.\n\n", duration/ CLOCKS_PER_SEC); FileManager::writeRbfFile(generator._func, argv[2]); return 0; }