18 #ifndef itkQuadEdgeMesh_h 19 #define itkQuadEdgeMesh_h 21 #if !defined( ITK_LEGACY_FUTURE_REMOVE ) 22 # include "vcl_cstdarg.h" 115 template<
typename TPixel,
unsigned int VDimension,
116 typename TTraits = QuadEdgeMeshTraits< TPixel, VDimension, bool, bool > >
133 Traits::PointDimension);
135 Traits::MaxTopologicalDimension);
220 typedef typename Traits::QEPrimal
QEType;
253 #if !defined( ITK_WRAPPING_PARSER ) 269 virtual void Clear();
275 void SetEdgeCell(CellIdentifier cellId, CellAutoPointer & cellPointer)
294 #if !defined( ITK_WRAPPING_PARSER ) 325 CellFeatureIdentifier featureId,
326 CellIdentifier boundaryId)
337 CellFeatureIdentifier featureId,
338 CellIdentifier *boundaryId)
const 350 CellFeatureIdentifier featureId)
361 CellFeatureIdentifier featureId,
362 CellAutoPointer & cellAP)
const 374 CellIdentifier cellId,
375 CellFeatureIdentifier featureId,
376 std::set< CellIdentifier > *cellSet)
388 std::set< CellIdentifier > * itkNotUsed(cellSet))
395 CellIdentifier cellId,
396 CellFeatureIdentifier featureId,
397 CellAutoPointer & cellAP)
const 408 void SetCell(CellIdentifier cId, CellAutoPointer & cell);
418 virtual PointIdentifier
AddPoint(
const PointType & p);
421 virtual QEPrimal *
AddEdge(
const PointIdentifier & orgPid,
422 const PointIdentifier & destPid);
425 const PointIdentifier & destPid);
434 virtual QEPrimal *
AddFace(
const PointIdList & points);
443 const PointIdentifier & bPid,
444 const PointIdentifier & cPid);
447 virtual void DeletePoint(
const PointIdentifier & pid);
449 virtual void DeleteEdge(
const PointIdentifier & orgPid,
450 const PointIdentifier & destPid);
458 virtual void DeleteFace(FaceRefType faceToDelete);
461 bool GetPoint(PointIdentifier pid, PointType *pt)
const 466 virtual PointType
GetPoint(
const PointIdentifier & pid)
const;
468 virtual VectorType
GetVector(
const PointIdentifier & pid)
const;
470 virtual QEPrimal *
GetEdge()
const;
472 virtual QEPrimal *
GetEdge(
const CellIdentifier & eid)
const;
474 virtual QEPrimal *
FindEdge(
const PointIdentifier & pid0)
const;
476 virtual QEPrimal *
FindEdge(
const PointIdentifier & pid0,
477 const PointIdentifier & pid1)
const;
479 virtual EdgeCellType *
FindEdgeCell(
const PointIdentifier & pid0,
480 const PointIdentifier & pid1)
const;
491 PointIdentifier
Splice(QEPrimal *a, QEPrimal *b);
493 #ifdef ITK_USE_CONCEPT_CHECKING 527 void operator=(const Self &) ITK_DELETE_FUNCTION;
538 #ifndef ITK_MANUAL_INSTANTIATION 539 #include "itkQuadEdgeMesh.hxx" PointsContainer::ConstIterator PointsContainerConstIterator
CellsContainerPointer m_EdgeCellsContainer
BoundingBox< PointIdentifier, itkGetStaticConstMacro(PointDimension), CoordRepType, PointsContainer > BoundingBoxType
bool GetAssignedCellBoundaryIfOneExists(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellAutoPointer &cellAP) const
QuadEdgeMeshLineCell< CellType > EdgeCellType
MeshTraits::PointDataContainer PointDataContainer
Traits::VectorType VectorType
const CellsContainer * GetEdgeCells() const
MeshTraits::PointCellLinksContainer PointCellLinksContainer
Traits::FaceRefType FaceRefType
Superclass::CellsContainerConstIterator CellsContainerConstIterator
const BoundaryAssignmentsContainerPointer GetBoundaryAssignments(int dimension) const
Superclass::PointType PointType
Superclass::CoordRepType CoordRepType
virtual void DeletePoint(const PointIdentifier &pid)
Superclass::CellsContainerPointer CellsContainerPointer
BoundaryAssignmentsContainerPointer GetBoundaryAssignments(int dimension)
CellsContainer::Iterator CellsContainerIterator
PointCellLinksContainer::const_iterator PointCellLinksContainerIterator
virtual void AddFace(QEPrimal *e)
Superclass::CellDataContainerIterator CellDataContainerIterator
virtual QEPrimal * FindEdge(const PointIdentifier &pid0) const
Traits::QEPrimal QEPrimal
MeshTraits::PointsContainer PointsContainer
void SetCell(CellIdentifier cId, CellAutoPointer &cell)
bool RemoveBoundaryAssignment(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId)
static const unsigned int PointDimension
virtual bool RequestedRegionIsOutsideOfTheBufferedRegion() override
MeshTraits::CellIdentifier CellIdentifier
SmartPointer< Self > Pointer
MapContainer< BoundaryAssignmentIdentifier, CellIdentifier > BoundaryAssignmentsContainer
Superclass::CellAutoPointer CellAutoPointer
virtual QEPrimal * GetEdge() const
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes...
MeshTraits::PointType PointType
virtual VectorType GetVector(const PointIdentifier &pid) const
PointDataContainer::Pointer PointDataContainerPointer
static const PointIdentifier m_NoPoint
Implements the N-dimensional mesh structure.
Superclass::BoundingBoxPointer BoundingBoxPointer
CellDataContainer::Pointer CellDataContainerPointer
Superclass::RegionType RegionType
Superclass::CellDataContainerPointer CellDataContainerPointer
Superclass::BoundaryAssignmentsContainer BoundaryAssignmentsContainer
virtual QEPrimal * AddEdgeWithSecurePointList(const PointIdentifier &orgPid, const PointIdentifier &destPid)
CellsContainer::ConstIterator CellsContainerConstIterator
std::vector< BoundaryAssignmentsContainerPointer > BoundaryAssignmentsContainerVector
Superclass::CellLinksContainerPointer CellLinksContainerPointer
Superclass::PointHashType PointHashType
MeshTraits::CellDataContainer CellDataContainer
Superclass::CellFeatureIdentifier CellFeatureIdentifier
void SetEdgeCells(CellsContainer *edgeCells)
CellsContainer * GetEdgeCells()
bool GetCellBoundaryFeature(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellAutoPointer &cellAP) const
static ITK_CONSTEXPR double e
The base of the natural logarithm or Euler's number
CellLinksContainer::ConstIterator CellLinksContainerIterator
BoundingBoxType::Pointer BoundingBoxPointer
void SetBoundaryAssignment(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellIdentifier boundaryId)
FreePointIndexesType m_FreePointIndexes
virtual void Initialize() override
CellFeatureIdentifier CellFeatureCount
Superclass::CellDataContainer CellDataContainer
void SetEdgeCell(CellIdentifier cellId, CellAutoPointer &cellPointer)
bool GetPoint(PointIdentifier pid, PointType *pt) const
bool GetPoint(PointIdentifier, PointType *) const
PointIdentifier Splice(QEPrimal *a, QEPrimal *b)
Superclass::PointDataContainerIterator PointDataContainerIterator
Mesh< TPixel, VDimension, Traits > Superclass
CoordRepType CoordRepArrayType[ itkGetStaticConstMacro(PointDimension)]
Superclass::PointDataContainer PointDataContainer
Superclass::RegionType RegionType
virtual PointIdentifier AddPoint(const PointType &p)
Superclass::BoundaryAssignmentsContainerPointer BoundaryAssignmentsContainerPointer
CellLinksContainer::Pointer CellLinksContainerPointer
PointsContainer::Pointer PointsContainerPointer
Superclass::BoundingBoxType BoundingBoxType
virtual void CopyInformation(const DataObject *data) override
MeshTraits::InterpolationWeightType InterpolationWeightType
std::queue< CellIdentifier > FreeCellIndexesType
EdgeListType * EdgeListPointerType
CellIdentifier ComputeNumberOfEdges() const
PointDataContainer::ConstIterator PointDataContainerIterator
Superclass::CellIdentifier CellIdentifier
static const CellIdentifier m_NoFace
MeshTraits::CoordRepType CoordRepType
virtual void ClearCellsContainer()
CellTraits::PointIdInternalIterator PointIdInternalIterator
CellType::MultiVisitor CellMultiVisitorType
CellType::CellAutoPointer CellAutoPointer
virtual QEPrimal * AddFaceWithSecurePointList(const PointIdList &points)
CellIdentifier m_NumberOfEdges
Superclass::CellLinksContainerIterator CellLinksContainerIterator
MeshTraits::PointIdentifier PointIdentifier
SmartPointer< const Self > ConstPointer
Superclass::CellTraits CellTraits
CellIdentifier GetCellNeighbors(CellIdentifier, std::set< CellIdentifier > *)
Superclass::PointCellLinksContainerIterator PointCellLinksContainerIterator
MeshTraits::CellLinksContainer CellLinksContainer
bool GetBoundaryAssignment(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellIdentifier *boundaryId) const
virtual EdgeCellType * FindEdgeCell(const PointIdentifier &pid0, const PointIdentifier &pid1) const
Superclass::CellType CellType
CellsContainer::Pointer CellsContainerPointer
std::queue< PointIdentifier > FreePointIndexesType
MeshTraits::CellFeatureIdentifier CellFeatureIdentifier
virtual QEPrimal * AddEdge(const PointIdentifier &orgPid, const PointIdentifier &destPid)
void SetBoundaryAssignments(int dimension, BoundaryAssignmentsContainer *container)
virtual void PushOnContainer(EdgeCellType *newEdge)
virtual void DeleteEdge(const PointIdentifier &orgPid, const PointIdentifier &destPid)
virtual void Graft(const DataObject *data) override
Superclass::CellPixelType CellPixelType
BoundaryAssignmentsContainer::Pointer BoundaryAssignmentsContainerPointer
MeshTraits::CellsContainer CellsContainer
Superclass::BoundaryAssignmentsContainerVector BoundaryAssignmentsContainerVector
CellIdentifier GetCellBoundaryFeatureNeighbors(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, std::set< CellIdentifier > *cellSet)
PointIdentifier ComputeNumberOfPoints() const
Traits::VertexRefType VertexRefType
void ClearFreePointAndCellIndexesLists()
Superclass::PointsContainerConstIterator PointsContainerConstIterator
CellTraits::PointIdIterator PointIdIterator
CellIdentifier m_NumberOfFaces
itkQEDefineFrontIteratorMethodsMacro(Self)
virtual void DeleteFace(FaceRefType faceToDelete)
Superclass::PointDataContainerPointer PointDataContainerPointer
CellIdentifier GetNumberOfFaces() const
Mesh class for 2D manifolds embedded in ND space.
QuadEdgeMeshPolygonCell< CellType > PolygonCellType
Superclass::PointsContainerIterator PointsContainerIterator
Traits::PrimalDataType PrimalDataType
virtual QEPrimal * AddFaceTriangle(const PointIdentifier &aPid, const PointIdentifier &bPid, const PointIdentifier &cPid)
Superclass::PointCellLinksContainer PointCellLinksContainer
virtual void LightWeightDeleteEdge(EdgeCellType *e)
CellInterface< CellPixelType, CellTraits > CellType
MeshTraits::CellPixelType CellPixelType
CellIdentifier ComputeNumberOfFaces() const
Superclass::CellFeatureCount CellFeatureCount
virtual PointIdentifier FindFirstUnusedPointIndex()
virtual CellIdentifier FindFirstUnusedCellIndex()
std::vector< PointIdentifier > PointIdList
Superclass::CellMultiVisitorType CellMultiVisitorType
Superclass::InterpolationWeightType InterpolationWeightType
Traits::DualDataType DualDataType
MeshTraits::CellTraits CellTraits
Superclass::PointsContainer PointsContainer
Superclass::CellsContainer CellsContainer
Superclass::CellLinksContainer CellLinksContainer
MeshTraits::PointHashType PointHashType
static const unsigned int MaxTopologicalDimension
Superclass::PointIdentifier PointIdentifier
CellIdentifier GetNumberOfEdges() const
Superclass::PointsContainerPointer PointsContainerPointer
CellDataContainer::ConstIterator CellDataContainerIterator
CoordRepType ComputeEdgeLength(QEPrimal *e)
Compute the euclidian length of argument edge.
Base class for all data objects in ITK.
Class that connects the QuadEdgeMesh with the Mesh.
Superclass::CellsContainerIterator CellsContainerIterator
FreeCellIndexesType m_FreeCellIndexes
std::list< QEPrimal * > EdgeListType
PointsContainer::Iterator PointsContainerIterator