59 #include <OpenMesh/Core/Utils/vector_cast.hh> 60 #include "OpenMeshUtils.hh" 65 template<
class TheMesh >
71 import_om_abbreviations(
typename Mesh );
79 Weight() : angle_( 180 ), area_( FLT_MAX ) {}
80 Weight( Scalar _angle, Scalar _area ) : angle_( _angle ), area_( _area ) {}
83 Scalar angle()
const {
return angle_; }
84 Scalar area()
const {
return area_; }
87 return Weight( std::max( angle(), _other.angle() ),
88 area() + _other.area() );
91 bool operator<(
const Weight & _rhs )
const {
92 return ( angle() < _rhs.angle() ||
93 ( angle() == _rhs.angle() && area() < _rhs.area() ) );
107 void fill_all_holes(
int _stages = 3 );
111 void fill_hole( EH _eh,
int _stages = 3 );
114 void fairing( std::vector< FH >& _faceHandles );
117 void removeDegeneratedFaces( std::vector< FH >& _faceHandles );
122 bool refine( FH _fh );
125 bool relax_edge( EH _eh );
128 bool in_circumsphere(
const Point & _x,
131 const Point & _c )
const;
134 bool fill(
int _i,
int _j );
137 Weight weight(
int _i,
int _j,
int _k );
140 bool exists_edge( VH _u, VH _w );
143 Scalar area( VH _a, VH _b, VH _c );
147 Scalar dihedral_angle( VH _u, VH _v, VH _a, VH _b );
170 typedef std::vector< VH > VHVec;
171 typedef typename std::vector< VH >::iterator VHVecIter;
172 typedef typename std::vector< VH >::const_iterator CVHVecIter;
174 typedef std::vector< FH > FHVec;
175 typedef typename std::vector< FH >::iterator FHVecIter;
176 typedef typename std::vector< FH >::const_iterator CFHVecIter;
180 VHVec boundary_vertex_;
183 VHVec opposite_vertex_;
186 std::vector< EH > hole_edge_;
189 std::vector< FH > hole_triangle_;
201 std::vector< std::vector< Weight > > w_;
202 std::vector< std::vector< int > > l_;
206 #ifndef HOLEFILLER_CC 207 #include "HoleFillerT.cc" 210 #endif // HOLEFILLER_HH defined