36 #ifndef AIMS_FINITE_ELEMENT_SMOOTHER_H
37 #define AIMS_FINITE_ELEMENT_SMOOTHER_H
49 :
public Smoother<AimsSurface<D, Void>, Texture<T> >
54 std::map<unsigned, std::set< std::pair<unsigned,float> > > weightLapl;
56 void ComputeWeights(
float threshold = 0.98) {
71 std::map<
unsigned, std::set< std::pair<unsigned,float> > >
72 &previouslyComputedWeights )
75 this->weightLapl = previouslyComputedWeights;
77 std::map<unsigned, std::set< std::pair<unsigned,float> > >
getWeights () {
return weightLapl;}
81 float dt() {
return _dt; }
FiniteElementSmoother(float dt, AimsSurface< D, Void > *mesh, std::map< unsigned, std::set< std::pair< unsigned, float > > > &previouslyComputedWeights)
Texture< T > doSmoothing(const Texture< T > &ima, int maxiter, bool verbose=true)
virtual ~FiniteElementSmoother()
std::map< unsigned, std::set< std::pair< unsigned, float > > > getWeights()
FiniteElementSmoother(float dt, AimsSurface< D, Void > *mesh)
AimsSurface< D, Void > * _mesh
std::map< unsigned, std::set< std::pair< unsigned, float > > > AimsMeshWeightFiniteElementLaplacian(const AimsSurface< 3, Void > &mesh, const float Wmax)