|
ITK
6.0.0
Insight Toolkit
|
Go to the documentation of this file.
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, QEDualType>; \
31 using ConstFrontDualIterator = QuadEdgeMeshConstFrontIterator<MeshTypeArg, QEDualType>; \
32 using FrontIterator = QuadEdgeMeshFrontIterator<MeshTypeArg, QEPrimalType>; \
33 using ConstFrontIterator = QuadEdgeMeshConstFrontIterator<MeshTypeArg, QEPrimalType>; \
35 virtual FrontIterator BeginFront(QEPrimalType * seed = nullptr) { return (FrontIterator(this, true, seed)); } \
37 virtual ConstFrontIterator BeginFront(QEPrimalType * seed) const { return (ConstFrontIterator(this, true, seed)); } \
39 virtual FrontIterator EndFront() { return (FrontIterator(this, false)); } \
41 virtual ConstFrontIterator EndFront() const { return (ConstFrontIterator(this, false)); } \
43 virtual FrontDualIterator BeginDualFront(QEDualType * seed = (QEDualType *)0) \
45 return (FrontDualIterator(this, true, seed)); \
48 virtual ConstFrontDualIterator BeginDualFront(QEDualType * seed) const \
50 return (ConstFrontDualIterator(this, true, seed)); \
53 virtual FrontDualIterator EndDualFront() { return (FrontDualIterator(this, false)); } \
55 virtual ConstFrontDualIterator EndDualFront() const { return (ConstFrontDualIterator(this, false)); } \
57 ITK_MACROEND_NOOP_STATEMENT
74 template <
typename TMesh,
typename TQE>
118 return (m_Edge == r.
m_Edge);
122 ITK_UNEQUAL_OPERATOR_MEMBER_FUNCTION(
FrontAtom);
127 return (m_Cost < r.
m_Cost);
176 ITK_UNEQUAL_OPERATOR_MEMBER_FUNCTION(
Self);
184 return (this->
operator++());
235 template <
typename TMesh,
typename TQE>
255 return (this->m_CurrentEdge);
266 template <
typename TMesh,
typename TQE =
typename TMesh::QEType>
281 bool itkNotUsed(start) =
true,
298 return (this->m_CurrentEdge);
303 #include "itkQuadEdgeMeshFrontIterator.hxx"
SmartPointer< Self > Pointer
FrontType * FrontTypePointer
bool operator==(const Self &r) const
IsVisitedPointerType m_IsPointVisited
bool operator==(const FrontAtom &r) const
bool operator<(const Index< VDimension > &one, const Index< VDimension > &two)
Atomic information associated to each edge of the front.
QuadEdgeMeshConstFrontIterator(const MeshType *=(MeshType *) 0, bool=true, QEType *=(QEType *) nullptr)
std::list< FrontAtom > FrontType
FrontAtom(QEType *e=(QEType *) 0, const CoordRepType c=0)
MeshType * GetMesh() const
A wrapper of the STL "map" container.
typename MeshType::CoordRepType CoordRepType
typename IsVisitedContainerType::Pointer IsVisitedPointerType
Front iterator on Mesh class.
Non const quad edge front iterator.
FrontAtom & operator=(const FrontAtom &r)
QuadEdgeMeshFrontIterator(MeshType *mesh=(MeshType *) 0, bool start=true, QEType *seed=nullptr)
Self & operator=(const Self &r)
const QEType * Value() const
Const quad edge mesh front iterator.
typename FrontType::iterator FrontTypeIterator
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
typename QEType::OriginRefType QEOriginType
virtual CoordRepType GetCost(QEType *)
static constexpr double e
Self & operator=(const NoConstType &r)