MeshKit
1.0
|
00001 #ifndef __TRIHARMONICRBF_HPP 00002 #define __TRIHARMONICRBF_HPP 00003 00004 #include <stdlib.h> 00005 #include <stdio.h> 00006 #include <assert.h> 00007 #include <string> 00008 #include <iostream> 00009 #include <fstream> 00010 #include <string.h> 00011 #include <limits.h> 00012 00013 #include "meshkit/MKCore.hpp" 00014 #include "meshkit/iMesh.hpp" 00015 #include "meshkit/MeshOp.hpp" 00016 #include "meshkit/ModelEnt.hpp" 00017 #include "Global.hpp" 00018 #include <set> 00019 #include <vector> 00020 #include <map> 00021 #include <armadillo> 00022 00023 //using namespace Eigen; 00024 using namespace arma; 00025 00026 using namespace std; 00027 00028 namespace MeshKit { 00029 00030 class TriharmonicRBF 00031 { 00032 public: 00033 //public function 00034 TriharmonicRBF(vector<vector<double> > undeformed_cage_vertices, vector<vector<double> > deformed_cage_vertices, vector<vector<int> > cage_faces); 00035 void SetupInteriorNodes(vector<vector<double> > undeformed_in_nodes); 00036 void GetInteriorNodes(vector<vector<double> > &final_locations); 00037 ~TriharmonicRBF(); 00038 void Execute(); 00039 00040 private: 00041 double TriHarmonicFun(vector<double> xi, vector<double> xj); 00042 double InterpolatedFun(vector<double> x, vec coeffs); 00043 private: 00044 vector<vector<double> > un_cage_vertices; 00045 vector<vector<double> > cage_vertices; 00046 vector<vector<int> > cage_faces; 00047 vector<vector<double> > un_InnerNodes; 00048 vector<vector<double> > InnerNodes; 00049 unsigned int num_vertices; 00050 unsigned int num_interior; 00051 00052 }; 00053 00054 } 00055 #endif 00056