36 #ifndef AIMS_MESH_MESHCURVATURE_H 37 #define AIMS_MESH_MESHCURVATURE_H 44 inline float fsign(
float x);
57 const std::vector<float> & ALPHA,
58 const std::vector<float> & BETA,
59 const std::vector<std::list<float> > &
SURFACE);
71 const std::vector< std::list<unsigned> > & neighbourso,
72 const std::vector< std::list<float> > & PHI,
73 const std::vector< std::list<float> > & THETA,
74 const std::vector< std::list<float> > &
SURFACE,
75 const std::vector< std::list<float> > & DOT);
79 const std::vector< std::list<unsigned> > & neighbourso,
80 const std::vector< std::list<float> > & surf);
84 const std::vector< std::list<unsigned> > & neighbourso,
85 const std::vector< std::list<float> > & surf);
88 const std::vector< std::list<unsigned> > & neighbourso);
92 const std::vector< std::list<unsigned> > & neighbourso);
98 const std::vector< std::list<unsigned> > & neighbourso);
102 const std::vector< std::list<unsigned> > & neighbourso);
114 const std::map<
unsigned,
115 std::set< std::pair<
unsigned,
118 template <
typename T>
120 std::vector<T> & outtex,
121 const std::map<
unsigned,
122 std::set< std::pair<unsigned,float> > > &lapl);
130 typedef std::map<unsigned, std::set< std::pair<unsigned,float> > >
138 float sparseThresh=0 );
140 template <
typename T>
142 std::vector<T> & outtex,
156 float sparseThresh=0 );
std::vector< std::list< float > > AimsMeshFiniteElementPhi(const AimsSurface< 3, Void > &mesh, const std::vector< std::list< unsigned > > &neighbourso, const std::vector< std::list< float > > &surf)
void makeLaplacianMatrix(const LaplacianWeights &weights, LaplacianWeights &lmat, float dt)
std::vector< std::list< float > > AimsMeshFiniteElementDot(const AimsSurface< 3, Void > &mesh, const std::vector< std::list< unsigned > > &neighbourso)
std::map< unsigned, std::set< std::pair< unsigned, float > > > LaplacianWeights
std::vector< std::list< float > > AimsMeshFiniteElementSurface(const AimsSurface< 3, Void > &mesh, const std::vector< std::list< unsigned > > &neighbourso)
Texture< float > AimsMeshBoixCurvature(const AimsSurface< 3, Void > &mesh, const std::vector< float > &ALPHA, const std::vector< float > &BETA, const std::vector< std::list< float > > &SURFACE)
std::map< unsigned, std::set< std::pair< unsigned, float > > > AimsMeshWeightFiniteElementLaplacian(const AimsSurface< 3, Void > &mesh, const float Wmax)
TimeTexture< float > AimsMeshCurvature(const AimsSurface< 3, Void > &mesh)
void applyLaplacianMatrix(const std::vector< T > &inittex, std::vector< T > &outtex, const LaplacianWeights &lapl)
std::vector< float > AimsMeshFiniteElementBeta(const AimsSurface< 3, Void > &mesh, const std::vector< std::list< unsigned > > &neighbourso)
std::vector< std::list< float > > AimsMeshFiniteElementTheta(const AimsSurface< 3, Void > &mesh, const std::vector< std::list< unsigned > > &neighbourso, const std::vector< std::list< float > > &surf)
float AimsMeshFiniteElementDt(const Texture< float > &tex, const Texture< float > &lapl, float tmax)
Texture< float > AimsMeshLaplacian(const Texture< float > &inittex, const std::map< unsigned, std::set< std::pair< unsigned, float > > > &lapl)
Point3df cross(Point3df a, Point3df b)
Texture< float > AimsRegularizeTexture(const Texture< float > &tex, const AimsSurface< 3, Void > &mesh, float alpha)
std::vector< std::list< unsigned > > AimsMeshOrderNode(const AimsSurface< 3, Void > &mesh)
Texture< float > AimsMeshFiniteElementCurvature(const AimsSurface< 3, Void > &mesh, const std::vector< std::list< unsigned > > &neighbourso, const std::vector< std::list< float > > &PHI, const std::vector< std::list< float > > &THETA, const std::vector< std::list< float > > &SURFACE, const std::vector< std::list< float > > &DOT)
LaplacianWeights * sparseMult(const LaplacianWeights &in1, const LaplacianWeights &in2, float sparseThresh=0)
void laplacianMatrixThreshold(LaplacianWeights &lmat, float threshold)
std::vector< std::list< unsigned > > AimsMeshOrderTriangle(const AimsSurface< 3, Void > &mesh)
LaplacianWeights * makeLaplacianSmoothingCoefficients(const LaplacianWeights &weights, unsigned niter, float dt, float sparseThresh=0)
Compute Laplacian smoothing coefficients matrix for niter smoothing iterations.
std::vector< float > AimsMeshFiniteElementAlpha(const AimsSurface< 3, Void > &mesh, const std::vector< std::list< unsigned > > &neighbourso)