#include #include #include "src/rbfcore.h" #include "src/readers.h" using namespace std; void SplitPath(const std::string& fullfilename,std::string &filepath); RBF_Paras Set_RBF_PARA(); int main(int argc, char** argv) { cout << argc << endl; string infilename; string outpath; int n_voxel_line = 100; double user_lambda = 0; bool issurfacing = false; int c; optind=1; while ((c = getopt(argc, argv, "i:o:v:l:s")) != -1) { switch (c) { case 'i': infilename = optarg; break; case 'o': outpath = string(optarg); break; case 'v': n_voxel_line = atoi(optarg); break; case 'l': user_lambda = atof(optarg); break; case 's': issurfacing = true; break; case '?': cout << "Bad argument setting!" << endl; break; } } if(outpath.empty())SplitPath(infilename,outpath); cout<<"input file: "<Vs; RBF_Core rbf_core; RBF_Paras para = Set_RBF_PARA(); para.user_lamnbda = user_lambda; readXYZ(infilename,Vs); rbf_core.InjectData(Vs,para); rbf_core.BuildK(para); rbf_core.InitNormal(para); rbf_core.OptNormal(0); rbf_core.Write_Hermite_NormalPrediction(outpath+"predicted_normal", 1); if(issurfacing){ rbf_core.Surfacing(0,n_voxel_line); rbf_core.Write_Surface(outpath+"predicted_surface"); } return 0; } RBF_Paras Set_RBF_PARA(){ RBF_Paras para; RBF_InitMethod initmethod = Lamnbda_Search; RBF_Kernal Kernal = XCube; int polyDeg = 1; double sigma = 0.9; double rangevalue = 0.001; para.Kernal = Kernal;para.polyDeg = polyDeg;para.sigma = sigma;para.rangevalue = rangevalue; para.Hermite_weight_smoothness = 0.0; para.Hermite_ls_weight = 0; para.Hermite_designcurve_weight = 00.0; para.Method = RBF_METHOD::Hermite_UnitNormal; para.InitMethod = initmethod; para.user_lamnbda = 0; para.isusesparse = false; return para; } inline void SplitFileName (const std::string& fullfilename,std::string &filepath,std::string &filename,std::string &extname) { int pos; pos = fullfilename.find_last_of('.'); filepath = fullfilename.substr(0,pos); extname = fullfilename.substr(pos); pos = filepath.find_last_of("\\/"); filename = filepath.substr(pos+1); pos = fullfilename.find_last_of("\\/"); filepath = fullfilename.substr(0,pos+1); //cout<