18 #ifndef itkGeometricalQuadEdge_h
19 #define itkGeometricalQuadEdge_h
59 template<
typename TVRef,
typename TFRef,
60 typename TPrimalData,
typename TDualData,
61 bool PrimalDual =
true >
76 TDualData, TPrimalData, !PrimalDual >;
125 { this->GetSym()->SetOrigin(v); }
128 { this->GetRot()->SetOrigin(v); }
131 { this->GetInvRot()->SetOrigin(v); }
140 bool SetLnextRingWithSameLeftFace(
const DualOriginRefType faceGeom,
146 inline void UnsetLeft() { this->GetInvRot()->UnsetOrigin(); }
158 bool IsOriginSet()
const;
160 bool IsDestinationSet()
const;
162 bool IsRightSet()
const;
164 bool IsLeftSet()
const;
168 { m_Data = data; this->SetPrimalData(); }
170 { this->GetRot()->SetPrimalData(data); }
182 {
return ( this->GetRot()->GetPrimalData() ); }
188 {
return ( this->GetRot()->IsPrimalDataSet() ); }
196 {
return ( !( this->IsLeftSet() ) && !( this->IsRightSet() ) ); }
205 return ( ( this->IsLeftSet() && !this->IsRightSet() )
206 || ( !this->IsLeftSet() && this->IsRightSet() ) );
214 {
return ( this->IsLeftSet() && this->IsRightSet() ); }
216 bool IsOriginInternal()
const;
218 bool IsLnextSharingSameFace(
int maxSize = 100);
220 bool IsLnextOfTriangle();
222 bool IsInOnextRing(Self *);
224 bool IsInLnextRing(Self *);
226 Self * GetNextBorderEdgeWithUnsetLeft(Self *edgeTest =
nullptr);
228 bool InsertAfterNextBorderEdgeWithUnsetLeft(Self *isol,
229 Self *hint =
nullptr);
231 bool ReorderOnextRingBeforeAddFace(Self *second);
235 {
return (
this == this->GetOnext() ); }
237 {
return ( this->GetSym()->IsOriginDisconnected() ); }
240 return ( this->IsOriginDisconnected()
241 && this->IsDestinationDisconnected() );
257 bool m_DataSet{
false};
262 #ifndef ITK_MANUAL_INSTANTIATION
263 #include "itkGeometricalQuadEdge.hxx"
void SetOrigin(const OriginRefType v)
const OriginRefType GetOrigin() const
void SetLeft(const DualOriginRefType v)
void SetPrimalData(const PrimalDataType data)
Base class for the implementation of a quad-edge data structure as proposed in "Guibas and Stolfi 198...
TPrimalData PrimalDataType
bool IsOriginDisconnected()
const DualOriginRefType GetLeft() const
bool IsDestinationDisconnected()
const DualOriginRefType GetRight() const
Const geometrical iterator.
LineCellIdentifier m_LineCellIdent
DualDataType GetDualData()
PrimalDataType GetPrimalData()
This class extends the QuadEdge by adding a reference to the Origin.
void SetIdent(const LineCellIdentifier &User_Value)
const OriginRefType GetDestination() const
void SetRight(const DualOriginRefType v)
#define itkQEDefineIteratorGeomMethodsMacro(Op)
void SetDualData(const DualDataType data)
LineCellIdentifier GetIdent()
static const OriginRefType m_NoPoint
#define itkQEAccessorsMacro(st, pt, dt)
void SetDestination(const OriginRefType v)
Non const geometrical iterator.