MeshKit
1.0
|
00001 #ifndef __DEFORM2D_HPP 00002 #define __DEFORM2D_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 <Eigen/Core> 00022 //#include <Eigen/Dense> 00023 #include <armadillo> 00024 00025 //using namespace Eigen; 00026 using namespace arma; 00027 00028 using namespace std; 00029 00030 namespace MeshKit { 00031 00032 class Deform2D 00033 { 00034 public: 00035 //public function 00036 Deform2D(vector<vector<double> > undeformed_cage_vertices, vector<vector<double> > deformed_cage_vertices); 00037 void SetupInteriorNodes(vector<vector<double> > undeformed_in_nodes); 00038 void GetInteriorNodes(vector<vector<double> > &final_locations); 00039 ~Deform2D(); 00040 void Execute(); 00041 00042 private: 00043 double TriHarmonicFun(vector<double> xi, vector<double> xj); 00044 double InterpolatedFun(vector<double> x, vec coeffs); 00045 private: 00046 vector<vector<double> > un_cage_vertices; 00047 vector<vector<double> > cage_vertices; 00048 vector<vector<double> > un_InnerNodes; 00049 vector<vector<double> > InnerNodes; 00050 unsigned int num_vertices; 00051 unsigned int num_interior; 00052 00053 }; 00054 00055 } 00056 #endif 00057