36#ifndef AIMS_MESH_GEOMETRIC_H
37#define AIMS_MESH_GEOMETRIC_H
39#include <aims/mesh/texture.h>
40#include <aims/mesh/surface.h>
42#include <cartobase/smart/rcptr.h>
48 if (x>(T)0)
return(1);
50 if (x<(T)0)
return(-1);
62 n[0] = a[1]*b[2] - a[2]*b[1];
63 n[1] = a[2]*b[0] - a[0]*b[2];
64 n[2] = a[0]*b[1] - a[1]*b[0];
71 return (a[0] * b[1]) - (a[1] * b[0]);
108 {
return _graphvertices; }
110 {
return _graphvertices; }
113 {
return _graphfaces; }
165 const std::string & method );
167 const std::string & method );
222 float & meanCurvature,
223 std::pair<float, float> & principalCurvatures,
224 float & orientedMeanCurvature,
225 float & orientedGaussianCurvature,
226 Point3df & normal,
float & voronoiArea );
228 float & gaussianCurvature,
229 float & meanCurvature,
230 std::pair<float, float> & principalCurvatures,
231 float & orientedMeanCurvature,
232 float & orientedGaussianCurvature,
233 Point3df & normal,
float & voronoiArea );
277 std::vector<Point2df>
278 simple_neighborhood_flattening(
282 std::vector<Point2df>
283 simple_neighborhood_flattening(
285 const std::vector<VertexPointer> & neighbors );
302 std::list<AimsVector<uint, 3> >
304 bool verbose =
false );
BarycenterCurvature(carto::rc_ptr< AimsSurfaceTriangle > mesh)
virtual Texture< float > doIt()
virtual ~BarycenterCurvature()
BarycenterCurvature(const AimsSurfaceTriangle &mesh)
BoixCurvature(carto::rc_ptr< AimsSurfaceTriangle > mesh)
virtual Texture< float > doIt()
BoixCurvature(const AimsSurfaceTriangle &mesh)
BoixGaussianCurvature(carto::rc_ptr< AimsSurfaceTriangle > mesh)
BoixGaussianCurvature(const AimsSurfaceTriangle &mesh)
virtual ~BoixGaussianCurvature()
virtual Texture< float > doIt()
Curvature * createCurvature(carto::rc_ptr< AimsSurfaceTriangle > mesh, const std::string &method)
Curvature * createCurvature(const AimsSurfaceTriangle &mesh, const std::string &method)
Curvature(carto::rc_ptr< AimsSurfaceTriangle > mesh)
static void getTextureProperties(const Texture< float > &tex)
virtual Texture< float > doIt()=0
Curvature(const AimsSurfaceTriangle &mesh)
static void regularize(Texture< float > &tex, float ratio)
virtual Texture< float > doIt()
FiniteElementCurvature(carto::rc_ptr< AimsSurfaceTriangle > mesh)
virtual ~FiniteElementCurvature()
FiniteElementCurvature(const AimsSurfaceTriangle &mesh)
void localProcess(size_t i_vert, float &gaussianCurvature, float &meanCurvature, std::pair< float, float > &principalCurvatures, float &orientedMeanCurvature, float &orientedGaussianCurvature, Point3df &normal, float &voronoiArea)
void localProcess(const VertexPointer &i, float &gaussianCurvature, float &meanCurvature, std::pair< float, float > &principalCurvatures, float &orientedMeanCurvature, float &orientedGaussianCurvature, Point3df &normal, float &voronoiArea)
virtual Texture< float > doIt()
GaussianCurvature(const AimsSurfaceTriangle &mesh)
GaussianCurvature(carto::rc_ptr< AimsSurfaceTriangle > mesh)
virtual ~GaussianCurvature()
const WeightNeighborList & getSurface() const
virtual ~GeometricProperties()
NeighborList & getTriangleNeighbor()
std::list< unsigned > Neighborhood
friend class VertexRemover
GeometricProperties(carto::rc_ptr< AimsSurfaceTriangle > mesh)
constructor working on a non-const mesh
const NeighborList & getTriangleNeighbor() const
NeighborList & getNeighbor()
const WeightList & getSimpleAlpha() const
const NeighborList & getNeighbor() const
const WeightNeighborList & getDot() const
std::vector< float > WeightList
std::vector< Neighborhood > NeighborList
const AimsSurfaceTriangle & getMesh() const
meshgraph::MeshGraphFaces & getFaces()
void sortPolygons(Neighborhood &npoly)
const meshgraph::MeshGraphVertices & getVertices() const
const WeightList & getAlpha() const
meshgraph::MeshGraphVertices & getVertices()
const WeightNeighborList & getPhi() const
const meshgraph::MeshGraphFaces & getFaces() const
meshgraph::MeshVertexNode< uint >::VertexIndexCollection::value_type VertexPointer
carto::rc_ptr< AimsSurfaceTriangle > getRcMesh()
void buildSortVerticesNeighborhood(size_t i)
const WeightNeighborList & getTheta() const
const WeightList & getBeta() const
GeometricProperties(const AimsSurfaceTriangle &mesh)
constructor working on a const mesh
std::vector< std::list< float > > WeightNeighborList
VertexRemover(carto::rc_ptr< AimsSurfaceTriangle > mesh)
GeometricProperties & geometricProperties()
static void cleanMesh(AimsSurfaceTriangle &mesh, float maxCurv=0.5, bool verbose=false)
clean a whole mesh
const GeometricProperties & geometricProperties() const
meshgraph::MeshVertexNode< uint >::VertexIndexCollection::value_type VertexPointer
VertexRemover(carto::rc_ptr< GeometricProperties > geom)
bool operator()(VertexPointer &i)
Mesh described as a graph, with nodes and edges.
Point3df cross(const Point3df &a, const Point3df &b)
std::list< MeshGraphFace > MeshGraphFaces
std::list< MeshGraphVertex > MeshGraphVertices
std::list< AimsVector< uint, 3 > > simple_delaunay_triangulation(const std::vector< Point2df > &points, bool verbose=false)
SimpleDelaunayTriangulation.
AIMSDATA_API AimsTimeSurface< 3, Void > AimsSurfaceTriangle
AimsVector< float, 3 > Point3df
AimsVector< float, 2 > Point2df