53 #include <OpenMesh/Core/Utils/vector_cast.hh> 54 #include "OpenMeshUtils.hh" 59 template<
class TheMesh >
65 import_om_abbreviations(
typename Mesh );
73 Weight() : angle_( 180 ), area_( FLT_MAX ) {}
74 Weight( Scalar _angle, Scalar _area ) : angle_( _angle ), area_( _area ) {}
77 Scalar angle()
const {
return angle_; }
78 Scalar area()
const {
return area_; }
81 return Weight( std::max( angle(), _other.angle() ),
82 area() + _other.area() );
85 bool operator<(
const Weight & _rhs )
const {
86 return ( angle() < _rhs.angle() ||
87 ( angle() == _rhs.angle() && area() < _rhs.area() ) );
101 void fill_all_holes(
int _stages = 3 );
105 void fill_hole( EH _eh,
int _stages = 3 );
108 void fairing( std::vector< FH >& _faceHandles );
111 void removeDegeneratedFaces( std::vector< FH >& _faceHandles );
116 bool refine( FH _fh );
119 bool relax_edge( EH _eh );
122 bool in_circumsphere(
const Point & _x,
125 const Point & _c )
const;
128 bool fill(
int _i,
int _j );
131 Weight weight(
int _i,
int _j,
int _k );
134 bool exists_edge( VH _u, VH _w );
137 Scalar area( VH _a, VH _b, VH _c );
141 Scalar dihedral_angle( VH _u, VH _v, VH _a, VH _b );
164 typedef std::vector< VH > VHVec;
165 typedef typename std::vector< VH >::iterator VHVecIter;
166 typedef typename std::vector< VH >::const_iterator CVHVecIter;
168 typedef std::vector< FH > FHVec;
169 typedef typename std::vector< FH >::iterator FHVecIter;
170 typedef typename std::vector< FH >::const_iterator CFHVecIter;
174 VHVec boundary_vertex_;
177 VHVec opposite_vertex_;
180 std::vector< EH > hole_edge_;
183 std::vector< FH > hole_triangle_;
195 std::vector< std::vector< Weight > > w_;
196 std::vector< std::vector< int > > l_;
200 #ifndef HOLEFILLER_CC 201 #include "HoleFillerT_impl.hh" 204 #endif // HOLEFILLER_HH defined