MOAB: Mesh Oriented datABase
(version 5.4.1)
|
00001 #ifndef Mesquite_SmartLaplacianSmoother_hpp 00002 #define Mesquite_SmartLaplacianSmoother_hpp 00003 00004 #include "Mesquite.hpp" 00005 #include "RelaxationSmoother.hpp" 00006 00007 #include <vector> 00008 00009 namespace MBMesquite 00010 { 00011 /*\brief Do laplacian smooth, but don't invert elements. 00012 */ 00013 class SmartLaplacianSmoother : public RelaxationSmoother 00014 { 00015 public: 00016 /** 00017 *\param OF ObjectiveFunction used by some termination criteria 00018 */ 00019 MESQUITE_EXPORT 00020 SmartLaplacianSmoother( ObjectiveFunction* OF = NULL ) : RelaxationSmoother( OF ) {} 00021 00022 MESQUITE_EXPORT 00023 ~SmartLaplacianSmoother(); 00024 00025 MESQUITE_EXPORT 00026 virtual std::string get_name() const; 00027 00028 MESQUITE_EXPORT 00029 static size_t num_inverted( PatchData& pd, MsqError& err ); 00030 00031 protected: 00032 MESQUITE_EXPORT 00033 virtual void optimize_vertex_positions( PatchData& pd, MsqError& err ); 00034 00035 private: 00036 std::vector< size_t > adjVtxList; 00037 }; 00038 00039 } // namespace MBMesquite 00040 00041 #endif