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 >
DualType;
122 { this->GetSym()->SetOrigin(v); }
125 { this->GetRot()->SetOrigin(v); }
128 { this->GetInvRot()->SetOrigin(v); }
137 bool SetLnextRingWithSameLeftFace(
const DualOriginRefType faceGeom,
143 inline void UnsetLeft() { this->GetInvRot()->UnsetOrigin(); }
155 bool IsOriginSet()
const;
157 bool IsDestinationSet()
const;
159 bool IsRightSet()
const;
161 bool IsLeftSet()
const;
165 { m_Data = data; this->SetPrimalData(); }
167 { this->GetRot()->SetPrimalData(data); }
179 {
return ( this->GetRot()->GetPrimalData() ); }
185 {
return ( this->GetRot()->IsPrimalDataSet() ); }
193 {
return ( !( this->IsLeftSet() ) && !( this->IsRightSet() ) ); }
202 return ( ( this->IsLeftSet() && !this->IsRightSet() )
203 || ( !this->IsLeftSet() && this->IsRightSet() ) );
211 {
return ( this->IsLeftSet() && this->IsRightSet() ); }
213 bool IsOriginInternal()
const;
215 bool IsLnextSharingSameFace(
int maxSize = 100);
217 bool IsLnextOfTriangle();
219 bool IsInOnextRing(Self *);
221 bool IsInLnextRing(Self *);
223 Self * GetNextBorderEdgeWithUnsetLeft(Self *edgeTest = 0);
225 bool InsertAfterNextBorderEdgeWithUnsetLeft(Self *isol,
228 bool ReorderOnextRingBeforeAddFace(Self *second);
232 {
return (
this == this->GetOnext() ); }
234 {
return ( this->GetSym()->IsOriginDisconnected() ); }
237 return ( this->IsOriginDisconnected()
238 && this->IsDestinationDisconnected() );
259 #ifndef ITK_MANUAL_INSTANTIATION
260 #include "itkGeometricalQuadEdge.hxx"
QuadEdgeMeshConstIteratorGeom< Self > ConstIteratorGeom
void SetOrigin(const OriginRefType v)
const OriginRefType GetOrigin() const
QuadEdgeMeshIteratorGeom< Self > IteratorGeom
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...
GeometricalQuadEdge< TFRef, TVRef, TDualData, TPrimalData,!PrimalDual > DualType
bool IsOriginDisconnected()
const DualOriginRefType GetLeft() const
bool IsDestinationDisconnected()
const DualOriginRefType GetRight() const
Const geometrical iterator.
LineCellIdentifier m_LineCellIdent
DualDataType GetDualData()
PrimalDataType GetPrimalData()
TPrimalData PrimalDataType
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
virtual ~GeometricalQuadEdge()
#define itkQEAccessorsMacro(st, pt, dt)
void SetDestination(const OriginRefType v)
Non const geometrical iterator.