36 #ifndef AIMS_MESH_GEOMETRIC_H
37 #define AIMS_MESH_GEOMETRIC_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 );
271 std::vector<Point2df>
272 simple_neighborhood_flattening(
276 std::vector<Point2df>
277 simple_neighborhood_flattening(
279 const std::vector<VertexPointer> & neighbors );
295 std::list<AimsVector<uint, 3> >
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(const AimsSurfaceTriangle &mesh, const std::string &method)
Curvature * createCurvature(carto::rc_ptr< AimsSurfaceTriangle > mesh, const std::string &method)
virtual Texture< float > doIt()=0
Curvature(carto::rc_ptr< AimsSurfaceTriangle > mesh)
static void getTextureProperties(const Texture< float > &tex)
Curvature(const AimsSurfaceTriangle &mesh)
static void regularize(Texture< float > &tex, float ratio)
FiniteElementCurvature(carto::rc_ptr< AimsSurfaceTriangle > mesh)
virtual ~FiniteElementCurvature()
virtual Texture< float > doIt()
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 WeightList & getAlpha() const
const meshgraph::MeshGraphVertices & getVertices() const
virtual ~GeometricProperties()
std::list< unsigned > Neighborhood
NeighborList & getTriangleNeighbor()
meshgraph::MeshGraphVertices & getVertices()
GeometricProperties(carto::rc_ptr< AimsSurfaceTriangle > mesh)
constructor working on a non-const mesh
carto::rc_ptr< AimsSurfaceTriangle > getRcMesh()
const WeightNeighborList & getPhi() const
meshgraph::MeshGraphFaces & getFaces()
const meshgraph::MeshGraphFaces & getFaces() const
const WeightNeighborList & getTheta() const
const NeighborList & getNeighbor() const
NeighborList & getNeighbor()
std::vector< float > WeightList
const AimsSurfaceTriangle & getMesh() const
const WeightList & getBeta() const
std::vector< Neighborhood > NeighborList
const WeightList & getSimpleAlpha() const
void sortPolygons(Neighborhood &npoly)
const WeightNeighborList & getDot() const
meshgraph::MeshVertexNode< uint >::VertexIndexCollection::value_type VertexPointer
void buildSortVerticesNeighborhood(size_t i)
const WeightNeighborList & getSurface() const
GeometricProperties(const AimsSurfaceTriangle &mesh)
constructor working on a const mesh
std::vector< std::list< float > > WeightNeighborList
const NeighborList & getTriangleNeighbor() const
A class to remove a vertex from a mesh, and remeshing the hole.
VertexRemover(carto::rc_ptr< AimsSurfaceTriangle > mesh)
meshgraph::MeshVertexNode< uint >::VertexIndexCollection::value_type VertexPointer
GeometricProperties & geometricProperties()
VertexRemover(carto::rc_ptr< GeometricProperties > geom)
bool operator()(VertexPointer &i)
const GeometricProperties & geometricProperties() const
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)
SimpleDelaunayTriangulation.
AIMSDATA_API AimsTimeSurface< 3, Void > AimsSurfaceTriangle