50 #ifndef ISOTROPICREMESHER_HH 51 #define ISOTROPICREMESHER_HH 52 #include "ProgressEmitter.hh" 55 template<
class MeshT >
63 void remesh( MeshT& _mesh,
const double _targetEdgeLength );
69 void collapseShortEdges( MeshT& _mesh,
const double _minEdgeLength,
const double _maxEdgeLength );
71 void equalizeValences( MeshT& _mesh );
74 int targetValence( MeshT& _mesh,
const typename MeshT::VertexHandle& _vh );
76 void tangentialRelaxation( MeshT& _mesh );
78 template <
class SpatialSearchT>
80 findNearestPoint(
const MeshT& _mesh,
81 const typename MeshT::Point& _point,
82 typename MeshT::FaceHandle& _fh,
83 SpatialSearchT* _ssearch,
88 template<
class SpatialSearchT >
89 void projectToSurface( MeshT& _mesh, MeshT& _original, SpatialSearchT* _ssearch );
92 bool isBoundary( MeshT& _mesh,
const typename MeshT::VertexHandle& _vh);
95 bool isFeature( MeshT& _mesh,
const typename MeshT::VertexHandle& _vh);
102 #if defined(INCLUDE_TEMPLATES) && !defined(ISOTROPICREMESHER_C) 103 #define ISOTROPICREMESHER_TEMPLATES 104 #include "IsotropicRemesherT.cc" 107 #endif // ISOTROPICREMESHER_HH defined int targetValence(MeshT &_mesh, const typename MeshT::VertexHandle &_vh)
returns 4 for boundary vertices and 6 otherwise
void collapseShortEdges(MeshT &_mesh, const double _minEdgeLength, const double _maxEdgeLength)
collapse edges shorter than minEdgeLength if collapsing doesn't result in new edge longer than maxEdg...
void splitLongEdges(MeshT &_mesh, const double _maxEdgeLength)
performs edge splits until all edges are shorter than the threshold
void remesh(MeshT &_mesh, const double _targetEdgeLength)
do the remeshing