18#ifndef itkGeometricalQuadEdge_h
19#define itkGeometricalQuadEdge_h
60template <
typename TVRef,
typename TFRef,
typename TPrimalData,
typename TDualData,
bool PrimalDual = true>
130 this->GetSym()->SetOrigin(v);
136 this->GetRot()->SetOrigin(v);
142 this->GetInvRot()->SetOrigin(v);
158 m_Origin = m_NoPoint;
163 this->GetSym()->UnsetOrigin();
168 this->GetRot()->UnsetOrigin();
173 this->GetInvRot()->UnsetOrigin();
179 inline const OriginRefType
184 inline const OriginRefType
187 return (GetSym()->GetOrigin());
189 inline const DualOriginRefType
192 return (GetRot()->GetOrigin());
194 inline const DualOriginRefType
197 return (GetInvRot()->GetOrigin());
219 this->SetPrimalData();
224 this->GetRot()->SetPrimalData(data);
236 this->GetRot()->SetPrimalData();
247 this->GetRot()->UnsetPrimalData();
251 inline PrimalDataType
259 return (this->GetRot()->GetPrimalData());
272 return (this->GetRot()->IsPrimalDataSet());
283 return (!(this->IsLeftSet()) && !(this->IsRightSet()));
294 return ((this->IsLeftSet() && !this->IsRightSet()) || (!this->IsLeftSet() && this->IsRightSet()));
304 return (this->IsLeftSet() && this->IsRightSet());
335 return (
this == this->GetOnext());
340 return (this->GetSym()->IsOriginDisconnected());
345 return (this->IsOriginDisconnected() && this->IsDestinationDisconnected());
355 this->m_LineCellIdent = User_Value;
357 inline LineCellIdentifier
360 return (this->m_LineCellIdent);
370 bool m_DataSet{
false };
375#ifndef ITK_MANUAL_INSTANTIATION
376# include "itkGeometricalQuadEdge.hxx"
This class extends the QuadEdge by adding a reference to the Origin.
const OriginRefType GetOrigin() const
bool IsOriginInternal() const
bool IsInLnextRing(Self *)
Self * GetNextBorderEdgeWithUnsetLeft(Self *edgeTest=nullptr)
void SetRight(const DualOriginRefType v)
itkQEDefineIteratorGeomMethodsMacro(InvRnext)
TPrimalData PrimalDataType
itkQEDefineIteratorGeomMethodsMacro(InvDnext)
itkQEDefineIteratorGeomMethodsMacro(Rprev)
itkQEDefineIteratorGeomMethodsMacro(Lprev)
itkQEDefineIteratorGeomMethodsMacro(InvOnext)
~GeometricalQuadEdge() override=default
itkQEDefineIteratorGeomMethodsMacro(Sym)
itkQEDefineIteratorGeomMethodsMacro(Lnext)
itkQEDefineIteratorGeomMethodsMacro(Rnext)
bool IsOriginDisconnected()
void SetDualData(const DualDataType data)
itkQEDefineIteratorGeomMethodsMacro(Onext)
itkQEDefineIteratorGeomMethodsMacro(InvLnext)
const OriginRefType GetDestination() const
bool IsDestinationSet() const
itkQEDefineIteratorGeomMethodsMacro(Dnext)
void SetPrimalData(const PrimalDataType data)
GeometricalQuadEdge(GeometricalQuadEdge &&)=default
void SetDestination(const OriginRefType v)
itkQEDefineIteratorGeomMethodsMacro(Dprev)
LineCellIdentifier GetIdent()
bool InsertAfterNextBorderEdgeWithUnsetLeft(Self *isol, Self *hint=nullptr)
static const OriginRefType m_NoPoint
bool SetLnextRingWithSameLeftFace(const DualOriginRefType faceGeom, int maxSize=100)
itkQEDefineIteratorGeomMethodsMacro(Oprev)
GeometricalQuadEdge & operator=(GeometricalQuadEdge &&)=default
bool IsDestinationDisconnected()
const DualOriginRefType GetRight() const
bool IsLnextSharingSameFace(int maxSize=100)
bool ReorderOnextRingBeforeAddFace(Self *second)
void SetLeft(const DualOriginRefType v)
const DualOriginRefType GetLeft() const
PrimalDataType GetPrimalData()
GeometricalQuadEdge & operator=(const GeometricalQuadEdge &)=default
itkQEAccessorsMacro(Superclass, Self, DualType)
GeometricalQuadEdge(const GeometricalQuadEdge &)=default
DualDataType GetDualData()
void SetIdent(const LineCellIdentifier &User_Value)
void SetOrigin(const OriginRefType v)
bool IsInOnextRing(Self *)
Const geometrical iterator.
Non const geometrical iterator.
Base class for the implementation of a quad-edge data structure as proposed in "Guibas and Stolfi 198...
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....