|
ITK
5.2.0
Insight Toolkit
|
Go to the documentation of this file.
18 #ifndef itkQuadEdgeMesh_h
19 #define itkQuadEdgeMesh_h
50 template <
typename TPixel,
51 unsigned int VDimension,
52 typename TTraits = QuadEdgeMeshTraits<TPixel, VDimension, bool, bool>>
69 static constexpr
unsigned int PointDimension = Traits::PointDimension;
70 static constexpr
unsigned int MaxTopologicalDimension = Traits::MaxTopologicalDimension;
97 using CellType =
typename Superclass::CellType;
137 using QEType =
typename Traits::QEPrimal;
171 #if !defined(ITK_WRAPPING_PARSER)
185 Initialize()
override;
194 return m_EdgeCellsContainer;
196 const CellsContainer *
199 return m_EdgeCellsContainer;
204 m_EdgeCellsContainer = edgeCells;
209 m_EdgeCellsContainer->InsertElement(cellId, cellPointer.ReleaseOwnership());
236 #if !defined(ITK_WRAPPING_PARSER)
247 BoundaryAssignmentsContainerPointer
256 const BoundaryAssignmentsContainerPointer
326 std::set<CellIdentifier> * cellSet)
360 SetCell(CellIdentifier cId, CellAutoPointer & cell);
363 virtual PointIdentifier
364 FindFirstUnusedPointIndex();
366 virtual CellIdentifier
367 FindFirstUnusedCellIndex();
370 PushOnContainer(EdgeCellType * newEdge);
373 virtual PointIdentifier
378 AddEdge(
const PointIdentifier & orgPid,
const PointIdentifier & destPid);
381 AddEdgeWithSecurePointList(
const PointIdentifier & orgPid,
const PointIdentifier & destPid);
385 AddFace(QEPrimal * entry);
392 AddFace(
const PointIdList & points);
395 AddFaceWithSecurePointList(
const PointIdList & points);
398 AddFaceWithSecurePointList(
const PointIdList & points,
bool CheckEdges);
402 AddFaceTriangle(
const PointIdentifier & aPid,
const PointIdentifier & bPid,
const PointIdentifier & cPid);
406 DeletePoint(
const PointIdentifier & pid);
409 DeleteEdge(
const PointIdentifier & orgPid,
const PointIdentifier & destPid);
412 DeleteEdge(QEPrimal *
e);
415 LightWeightDeleteEdge(EdgeCellType * edgeCell);
418 LightWeightDeleteEdge(QEPrimal *
e);
421 DeleteFace(FaceRefType faceToDelete);
427 return (Superclass::GetPoint(pid, pt));
431 GetPoint(
const PointIdentifier & pid)
const;
434 GetVector(
const PointIdentifier & pid)
const;
440 GetEdge(
const CellIdentifier & eid)
const;
443 FindEdge(
const PointIdentifier & pid0)
const;
446 FindEdge(
const PointIdentifier & pid0,
const PointIdentifier & pid1)
const;
448 virtual EdgeCellType *
449 FindEdgeCell(
const PointIdentifier & pid0,
const PointIdentifier & pid1)
const;
453 ComputeEdgeLength(QEPrimal *
e);
456 ComputeNumberOfPoints()
const;
459 ComputeNumberOfFaces()
const;
462 ComputeNumberOfEdges()
const;
465 Splice(QEPrimal * a, QEPrimal * b);
467 #ifdef ITK_USE_CONCEPT_CHECKING
476 while (!this->m_FreePointIndexes.empty())
478 this->m_FreePointIndexes.pop();
480 while (!this->m_FreeCellIndexes.empty())
482 this->m_FreeCellIndexes.pop();
489 return (m_NumberOfFaces);
494 return (m_NumberOfEdges);
505 ClearCellsContainer();
519 #ifndef ITK_MANUAL_INSTANTIATION
520 # include "itkQuadEdgeMesh.hxx"
typename Superclass::PointType PointType
CellIdentifier GetCellBoundaryFeatureNeighbors(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, std::set< CellIdentifier > *cellSet)
typename Superclass::CellMultiVisitorType CellMultiVisitorType
CellIdentifier m_NumberOfEdges
typename Superclass::BoundaryAssignmentsContainer BoundaryAssignmentsContainer
typename Superclass::PointDataContainerIterator PointDataContainerIterator
bool GetAssignedCellBoundaryIfOneExists(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellAutoPointer &cellAP) const
typename Traits::FaceRefType FaceRefType
typename Superclass::RegionType RegionType
typename Superclass::CellsContainerPointer CellsContainerPointer
bool RequestedRegionIsOutsideOfTheBufferedRegion() override
typename Traits::DualDataType DualDataType
CellIdentifier GetCellNeighbors(CellIdentifier, std::set< CellIdentifier > *)
typename Traits::PrimalDataType PrimalDataType
FreePointIndexesType m_FreePointIndexes
typename Superclass::CellLinksContainer CellLinksContainer
typename Superclass::PointsContainer PointsContainer
typename Superclass::PointsContainerPointer PointsContainerPointer
void SetEdgeCell(CellIdentifier cellId, CellAutoPointer &cellPointer)
ImageBaseType::SpacingType VectorType
ImageBaseType::PointType PointType
typename Traits::QEDual QEDual
typename Superclass::CellLinksContainerPointer CellLinksContainerPointer
typename Superclass::BoundaryAssignmentsContainerVector BoundaryAssignmentsContainerVector
typename Superclass::PointCellLinksContainerIterator PointCellLinksContainerIterator
typename Superclass::PointCellLinksContainer PointCellLinksContainer
typename Superclass::CellDataContainerPointer CellDataContainerPointer
typename Superclass::CellType CellType
typename CellsContainer::Pointer CellsContainerPointer
typename Superclass::CellDataContainer CellDataContainer
bool GetCellBoundaryFeature(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellAutoPointer &cellAP) const
typename Traits::QEPrimal QEPrimal
typename Superclass::PointDataContainerPointer PointDataContainerPointer
static const CellIdentifier m_NoFace
FreeCellIndexesType m_FreeCellIndexes
typename Superclass::CellsContainerIterator CellsContainerIterator
bool RemoveBoundaryAssignment(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId)
typename Superclass::CellTraits CellTraits
std::queue< PointIdentifier > FreePointIndexesType
CellsContainerPointer m_EdgeCellsContainer
typename MeshTraits::CellIdentifier CellIdentifier
CellIdentifier GetNumberOfFaces() const
typename Traits::VertexRefType VertexRefType
typename Superclass::CellsContainerConstIterator CellsContainerConstIterator
MeshClassCellsAllocationMethod
std::list< QEPrimal * > EdgeListType
void BuildCellLinks() const
typename CellTraits::PointIdIterator PointIdIterator
const CellsContainer * GetEdgeCells() const
BoundaryAssignmentsContainerPointer GetBoundaryAssignments(int dimension)
void SetBoundaryAssignments(int dimension, BoundaryAssignmentsContainer *container)
typename Superclass::PointsContainerIterator PointsContainerIterator
typename Superclass::PointDataContainer PointDataContainer
Mesh class for 2D manifolds embedded in ND space.
std::vector< PointIdentifier > PointIdList
typename Superclass::CellLinksContainerIterator CellLinksContainerIterator
bool GetPoint(PointIdentifier pid, PointType *pt) const
ImageBaseType::RegionType RegionType
typename CellTraits::PointIdInternalIterator PointIdInternalIterator
CellsContainer * GetEdgeCells()
Class that connects the QuadEdgeMesh with the Mesh.
typename Superclass::PointIdentifier PointIdentifier
typename Superclass::CellsContainer CellsContainer
typename Superclass::CellPixelType CellPixelType
const BoundaryAssignmentsContainerPointer GetBoundaryAssignments(int dimension) const
static const PointIdentifier m_NoPoint
typename Superclass::CellFeatureIdentifier CellFeatureIdentifier
void SetBoundaryAssignment(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellIdentifier boundaryId)
CellIdentifier m_NumberOfFaces
typename Superclass::CellDataContainerIterator CellDataContainerIterator
CoordRepType[Self::PointDimension] CoordRepArrayType
typename Traits::VectorType VectorType
typename Superclass::InterpolationWeightType InterpolationWeightType
std::queue< CellIdentifier > FreeCellIndexesType
EdgeListType * EdgeListPointerType
CellIdentifier GetNumberOfEdges() const
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Implements the N-dimensional mesh structure.
void SetEdgeCells(CellsContainer *edgeCells)
typename Superclass::CoordRepType CoordRepType
Base class for most ITK classes.
typename Superclass::BoundingBoxPointer BoundingBoxPointer
static constexpr double e
typename Superclass::CellAutoPointer CellAutoPointer
typename Superclass::PointHashType PointHashType
typename Superclass::CellFeatureCount CellFeatureCount
bool GetBoundaryAssignment(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellIdentifier *boundaryId) const
typename Superclass::PointsContainerConstIterator PointsContainerConstIterator
#define itkQEDefineFrontIteratorMethodsMacro(MeshTypeArg)
typename Superclass::CellIdentifier CellIdentifier
typename Traits::QEPrimal QEType
typename Superclass::BoundaryAssignmentsContainerPointer BoundaryAssignmentsContainerPointer
void CopyInformation(const DataObject *data) override
void ClearFreePointAndCellIndexesLists()
Base class for all data objects in ITK.
typename Superclass::BoundingBoxType BoundingBoxType