MeshKit
1.0
|
00001 //-----------------------------------C++-------------------------------------// 00002 // File: src/algs/IsoLaplace.hpp 00003 // Monday Sep 26 10:50 2011 00004 // Brief: IsoLaplace class definition: do the IsoLaplace smoothing for 00005 // the surface mesh 00006 //---------------------------------------------------------------------------// 00007 00008 00009 #ifndef ISOLAPLACE_HPP 00010 #define ISOLAPLACE_HPP 00011 00012 #include <stdlib.h> 00013 #include <stdio.h> 00014 #include <assert.h> 00015 #include <string> 00016 #include <iostream> 00017 #include <fstream> 00018 #include <string.h> 00019 #include <vector> 00020 #include <set> 00021 #include <list> 00022 #include <math.h> 00023 #include <map> 00024 00025 00026 using namespace std; 00027 00028 00029 //===========================================================================// 00036 //===========================================================================// 00037 00038 class IsoLaplace 00039 { 00040 public: 00041 IsoLaplace(); 00042 ~IsoLaplace(); 00043 00044 00045 //Execute function 00046 void Execute(); 00047 00048 //input the point coordinates, edges, triangles 00049 void SetupData(std::vector<std::set<int> > AdjElements, std::vector<std::vector<int> > Quads, std::vector<std::vector<double> > coords, std::vector<bool> isBnd, std::vector<double> w); 00050 00051 //return the results 00052 void GetCoords(std::vector<std::vector<double> > &coords); 00053 00054 00055 private://private member functions 00056 00057 void UpdateWeight(); 00058 00059 00060 private://private member variable 00061 std::vector<std::vector<double> > coordinates; 00062 std::vector<std::set<int> > adjElements; 00063 std::vector<std::vector<int> > quads; 00064 std::vector<bool> isBoundary; 00065 std::vector<double> weight; 00066 00067 }; 00068 00069 #endif