18 #ifndef itkQuadEdgeMeshFrontIterator_h
19 #define itkQuadEdgeMeshFrontIterator_h
24 #define itkQEDefineFrontIteratorMethodsMacro(MeshTypeArg) \
28 using QEDualType = typename MeshTypeArg::QEDual; \
29 using QEPrimalType = typename MeshTypeArg::QEPrimal; \
30 using FrontDualIterator = QuadEdgeMeshFrontIterator< MeshTypeArg, \
32 using ConstFrontDualIterator = QuadEdgeMeshConstFrontIterator< MeshTypeArg, \
34 using FrontIterator = QuadEdgeMeshFrontIterator< MeshTypeArg, QEPrimalType >; \
35 using ConstFrontIterator = QuadEdgeMeshConstFrontIterator< MeshTypeArg, \
38 virtual FrontIterator BeginFront(QEPrimalType * seed = (QEPrimalType *)0) \
40 return ( FrontIterator(this, true, seed) ); \
43 virtual ConstFrontIterator BeginFront(QEPrimalType * seed) const \
44 { return ( ConstFrontIterator(this, true, seed) ); } \
46 virtual FrontIterator EndFront() \
48 return ( FrontIterator(this, false) ); \
51 virtual ConstFrontIterator EndFront() const \
52 { return ( ConstFrontIterator(this, false) ); } \
54 virtual FrontDualIterator BeginDualFront(QEDualType * seed = (QEDualType *)0) \
56 return ( FrontDualIterator(this, true, seed) ); \
59 virtual ConstFrontDualIterator BeginDualFront(QEDualType * seed) const \
60 { return ( ConstFrontDualIterator(this, true, seed) ); } \
62 virtual FrontDualIterator EndDualFront() \
64 return ( FrontDualIterator(this, false) ); \
67 virtual ConstFrontDualIterator EndDualFront() const \
68 { return ( ConstFrontDualIterator(this, false) ); }
85 template<
typename TMesh,
typename TQE >
121 {
return ( m_Edge == r.
m_Edge ); }
123 {
return ( m_Edge != r.
m_Edge ); }
125 {
return ( m_Cost < r.
m_Cost ); }
171 return ( m_Start == r.
m_Start );
176 return ( m_Start == r.
m_Start );
181 return ( !( this->
operator==(r) ) );
186 return ( !( this->
operator==(r) ) );
199 QEType * FindDefaultSeed();
232 template<
typename TMesh,
typename TQE >
261 template<
typename TMesh,
typename TQE =
typename TMesh::QEType >
299 #include "itkQuadEdgeMeshFrontIterator.hxx"
bool operator!=(const Self &r) const
bool operator!=(const FrontAtom &r) const
typename FrontType::iterator FrontTypeIterator
bool operator==(const FrontAtom &r) const
Self & operator=(const NoConstType &r)
A wrapper of the STL "map" container.
Self & operator=(const Self &r)
MeshType * GetMesh() const
bool operator==(const Self &r) const
const QEType * Value() const
IsVisitedPointerType m_IsPointVisited
bool operator<(const FrontAtom &r) const
typename MeshType::CoordRepType CoordRepType
FrontAtom(QEType *e=(QEType *) 0, const CoordRepType c=0)
std::list< FrontAtom > FrontType
Front iterator on Mesh class.
typename QEType::OriginRefType QEOriginType
Const quad edge mesh front iterator.
FrontType * FrontTypePointer
typename IsVisitedContainerType::Pointer IsVisitedPointerType
static constexpr double e
The base of the natural logarithm or Euler's number
Atomic information associated to each edge of the front.
QuadEdgeMeshFrontIterator(MeshType *mesh=(MeshType *) 0, bool start=true, QEType *seed=(QEType *) nullptr)
Non const quad edge front iterator.
FrontAtom & operator=(const FrontAtom &r)
virtual CoordRepType GetCost(QEType *edge)
QuadEdgeMeshConstFrontIterator(const MeshType *mesh=(MeshType *) 0, bool start=true, QEType *seed=(QEType *) nullptr)