#include <itkMesh.h>
Implements the N-dimensional mesh structure.
Mesh is an adaptive, evolving structure. Typically points and cells are created, with the cells referring to their defining points. If additional topological information is required, then BuildCellLinks() is called and links from the points back to the cells that use them are created. This allows implicit topological information about the faces and edges of the cells to be determined. (For example, a "face" neighbor to a cell can be determined by intersection the sets of cells that use the points defining the face. This is an inherent assumption on the manifold relationship of the cells in the mesh.) In some cases, either because the mesh is non-manifold, because we wish to explicitly store information with the faces and edges of the mesh, or because performance requirements demand that boundaries are explicitly represented (the set intersection does not need to be performed); then Mesh can be further extended by adding explicit boundary assignments.
One of the most important parts of using this mesh is how to create cells to insert into it. The cells for the mesh take two template parameters. The first is the pixel type, and should correspond exactly to that type given to the mesh. The second is a "CellTraits" which holds a sub-set of the "MeshTraits" structure definitions, and is also a member of them. Any cell which is to be inserted to a mesh should have MeshTraits::CellTraits as its second template parameter.
Template parameters for Mesh:
TPixelType = The type stored as data for an entity (cell, point, or boundary).
TMeshTraits = Type information structure for the mesh.
Classes | |
class | BoundaryAssignmentIdentifier |
Public Types | |
using | BoundaryAssignmentsContainer = MapContainer<BoundaryAssignmentIdentifier, CellIdentifier> |
using | BoundaryAssignmentsContainerPointer = typename BoundaryAssignmentsContainer::Pointer |
using | BoundaryAssignmentsContainerVector = std::vector<BoundaryAssignmentsContainerPointer> |
using | BoundingBoxPointer = typename BoundingBoxType::Pointer |
using | BoundingBoxType = BoundingBox<PointIdentifier, Self::PointDimension, CoordinateType, PointsContainer> |
using | CellAutoPointer = typename CellType::CellAutoPointer |
using | CellDataContainer = typename MeshTraits::CellDataContainer |
using | CellDataContainerConstPointer = typename CellDataContainer::ConstPointer |
using | CellDataContainerIterator = typename CellDataContainer::ConstIterator |
using | CellDataContainerPointer = typename CellDataContainer::Pointer |
using | CellFeatureCount = CellFeatureIdentifier |
using | CellFeatureIdentifier = typename MeshTraits::CellFeatureIdentifier |
using | CellIdentifier = typename MeshTraits::CellIdentifier |
using | CellLinksContainer = typename MeshTraits::CellLinksContainer |
using | CellLinksContainerConstPointer = typename CellLinksContainer::ConstPointer |
using | CellLinksContainerIterator = typename CellLinksContainer::ConstIterator |
using | CellLinksContainerPointer = typename CellLinksContainer::Pointer |
using | CellMultiVisitorType = typename CellType::MultiVisitor |
using | CellPixelType = typename MeshTraits::CellPixelType |
using | CellsContainer = typename MeshTraits::CellsContainer |
using | CellsContainerConstIterator = typename CellsContainer::ConstIterator |
using | CellsContainerConstPointer = typename CellsContainer::ConstPointer |
using | CellsContainerIterator = typename CellsContainer::Iterator |
using | CellsContainerPointer = typename CellsContainer::Pointer |
using | CellsVectorContainer = typename itk::VectorContainer<IdentifierType> |
using | CellsVectorContainerPointer = typename CellsVectorContainer::Pointer |
using | CellTraits = typename MeshTraits::CellTraits |
using | CellType = CellInterface<CellPixelType, CellTraits> |
using | ConstPointer = SmartPointer<const Self> |
using | CoordinateType = typename MeshTraits::CoordinateType |
using | InterpolationWeightType = typename MeshTraits::InterpolationWeightType |
using | MeshClassCellsAllocationMethodEnum = MeshEnums::MeshClassCellsAllocationMethod |
using | MeshTraits = TMeshTraits |
using | OutputHexahedronCellType = itk::HexahedronCell<CellType> |
using | OutputLineCellType = itk::LineCell<CellType> |
using | OutputPolygonCellType = itk::PolygonCell<CellType> |
using | OutputPolyLineCellType = itk::PolyLineCell<CellType> |
using | OutputQuadraticEdgeCellType = itk::QuadraticEdgeCell<CellType> |
using | OutputQuadraticTriangleCellType = itk::QuadraticTriangleCell<CellType> |
using | OutputQuadrilateralCellType = itk::QuadrilateralCell<CellType> |
using | OutputTetrahedronCellType = itk::TetrahedronCell<CellType> |
using | OutputTriangleCellType = itk::TriangleCell<CellType> |
using | OutputVertexCellType = itk::VertexCell<CellType> |
using | PixelType = typename MeshTraits::PixelType |
using | PointCellLinksContainer = typename MeshTraits::PointCellLinksContainer |
using | PointCellLinksContainerIterator = typename PointCellLinksContainer::const_iterator |
using | PointDataContainer = typename MeshTraits::PointDataContainer |
using | PointDataContainerIterator = typename PointDataContainer::ConstIterator |
using | PointDataContainerPointer = typename PointDataContainer::Pointer |
using | Pointer = SmartPointer<Self> |
using | PointHashType = typename MeshTraits::PointHashType |
using | PointIdentifier = typename MeshTraits::PointIdentifier |
using | PointsContainer = typename MeshTraits::PointsContainer |
using | PointsContainerConstIterator = typename PointsContainer::ConstIterator |
using | PointsContainerIterator = typename PointsContainer::Iterator |
using | PointsContainerPointer = typename PointsContainer::Pointer |
using | PointType = typename MeshTraits::PointType |
using | Self = Mesh |
using | Superclass = PointSet<TPixelType, VDimension, TMeshTraits> |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | MeshTraits = TMeshTraits |
using | PixelType = typename MeshTraits::PixelType |
using | PointDataContainer = typename MeshTraits::PointDataContainer |
using | PointDataContainerConstPointer = typename PointDataContainer::ConstPointer |
using | PointDataContainerIterator = typename PointDataContainer::ConstIterator |
using | PointDataContainerPointer = typename PointDataContainer::Pointer |
using | Pointer = SmartPointer<Self> |
using | PointIdentifier = typename MeshTraits::PointIdentifier |
using | PointType = typename MeshTraits::PointType |
using | Self = PointSet |
using | Superclass = PointSetBase<typename TMeshTraits::PointsContainer> |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | CoordinateType = typename PointType::CoordinateType |
using | Pointer = SmartPointer<Self> |
using | PointIdentifier = typename TPointsContainer::ElementIdentifier |
using | PointsContainer = TPointsContainer |
using | PointsContainerConstIterator = typename PointsContainer::ConstIterator |
using | PointsContainerConstPointer = typename PointsContainer::ConstPointer |
using | PointsContainerIterator = typename PointsContainer::Iterator |
using | PointsContainerPointer = typename PointsContainer::Pointer |
using | PointsVectorContainer = typename itk::VectorContainer<PointIdentifier, CoordinateType> |
using | PointsVectorContainerPointer = typename PointsVectorContainer::Pointer |
using | PointType = typename TPointsContainer::Element |
using | RegionType = long |
using | Self = PointSetBase |
using | Superclass = DataObject |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | DataObjectIdentifierType = std::string |
using | DataObjectPointerArraySizeType = std::vector<Pointer>::size_type |
using | Pointer = SmartPointer<Self> |
using | Self = DataObject |
using | Superclass = Object |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | Pointer = SmartPointer<Self> |
using | Self = Object |
using | Superclass = LightObject |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | Pointer = SmartPointer<Self> |
using | Self = LightObject |
Static Public Member Functions | |
static Pointer | New () |
![]() | |
static Pointer | New () |
![]() | |
static constexpr unsigned int | GetPointDimension () |
![]() | |
static bool | GetGlobalReleaseDataFlag () |
static void | GlobalReleaseDataFlagOff () |
static void | GlobalReleaseDataFlagOn () |
static Pointer | New () |
static void | SetGlobalReleaseDataFlag (bool val) |
![]() | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool val) |
![]() | |
static void | BreakOnError () |
static Pointer | New () |
Static Public Attributes | |
static constexpr unsigned int | MaxTopologicalDimension = TMeshTraits::MaxTopologicalDimension |
static constexpr unsigned int | PointDimension = TMeshTraits::PointDimension |
![]() | |
static constexpr unsigned int | PointDimension = PointType::PointDimension |
Protected Member Functions | |
void | ReleaseCellsMemory () |
Mesh () | |
~Mesh () override | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
![]() | |
LightObject::Pointer | InternalClone () const override |
PointSet ()=default | |
~PointSet () override=default | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
![]() | |
LightObject::Pointer | InternalClone () const override |
PointSetBase ()=default | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
~PointSetBase () override=0 | |
![]() | |
DataObject () | |
virtual void | PropagateResetPipeline () |
~DataObject () override | |
![]() | |
Object () | |
bool | PrintObservers (std::ostream &os, Indent indent) const |
virtual void | SetTimeStamp (const TimeStamp &timeStamp) |
~Object () override | |
![]() | |
LightObject () | |
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
virtual | ~LightObject () |
Protected Attributes | |
CellsVectorContainerPointer | cellOutputVectorContainer |
BoundaryAssignmentsContainerVector | m_BoundaryAssignmentsContainers {} |
BoundingBoxPointer | m_BoundingBox {} |
CellDataContainerPointer | m_CellDataContainer {} |
CellLinksContainerPointer | m_CellLinksContainer {} |
CellsContainerPointer | m_CellsContainer {} |
![]() | |
PointDataContainerPointer | m_PointDataContainer {} |
![]() | |
RegionType | m_BufferedRegion { -1 } |
RegionType | m_MaximumNumberOfRegions { 1 } |
RegionType | m_NumberOfRegions { 1 } |
PointsContainerPointer | m_PointsContainer {} |
RegionType | m_RequestedNumberOfRegions {} |
RegionType | m_RequestedRegion { -1 } |
![]() | |
std::atomic< int > | m_ReferenceCount {} |
Private Member Functions | |
void | CreateCell (int cellType, CellAutoPointer &) |
Private Attributes | |
MeshClassCellsAllocationMethodEnum | m_CellsAllocationMethod {} |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::BoundaryAssignmentsContainer = MapContainer<BoundaryAssignmentIdentifier, CellIdentifier> |
Used for manipulating boundaries and boundary attributes. A BoundaryAssignmentsContainerVector is indexed by dimension. For each dimension, it points to a MapContainer indexed by a BoundaryAssignmentIdentifier, which encapsulates a cell identifier and a boundary feature identifier. The boundary feature identifier distinguishes different boundary features for a given cell at a given dimension.
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::BoundaryAssignmentsContainerPointer = typename BoundaryAssignmentsContainer::Pointer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::BoundaryAssignmentsContainerVector = std::vector<BoundaryAssignmentsContainerPointer> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::BoundingBoxPointer = typename BoundingBoxType::Pointer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::BoundingBoxType = BoundingBox<PointIdentifier, Self::PointDimension, CoordinateType, PointsContainer> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellAutoPointer = typename CellType::CellAutoPointer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellDataContainer = typename MeshTraits::CellDataContainer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellDataContainerConstPointer = typename CellDataContainer::ConstPointer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellDataContainerIterator = typename CellDataContainer::ConstIterator |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellDataContainerPointer = typename CellDataContainer::Pointer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellFeatureCount = CellFeatureIdentifier |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellFeatureIdentifier = typename MeshTraits::CellFeatureIdentifier |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellIdentifier = typename MeshTraits::CellIdentifier |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellLinksContainer = typename MeshTraits::CellLinksContainer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellLinksContainerConstPointer = typename CellLinksContainer::ConstPointer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellLinksContainerIterator = typename CellLinksContainer::ConstIterator |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellLinksContainerPointer = typename CellLinksContainer::Pointer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellMultiVisitorType = typename CellType::MultiVisitor |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellPixelType = typename MeshTraits::CellPixelType |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellsContainer = typename MeshTraits::CellsContainer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellsContainerConstIterator = typename CellsContainer::ConstIterator |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellsContainerConstPointer = typename CellsContainer::ConstPointer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellsContainerIterator = typename CellsContainer::Iterator |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellsContainerPointer = typename CellsContainer::Pointer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellsVectorContainer = typename itk::VectorContainer<IdentifierType> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellsVectorContainerPointer = typename CellsVectorContainer::Pointer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellTraits = typename MeshTraits::CellTraits |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CellType = CellInterface<CellPixelType, CellTraits> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::ConstPointer = SmartPointer<const Self> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::CoordinateType = typename MeshTraits::CoordinateType |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::InterpolationWeightType = typename MeshTraits::InterpolationWeightType |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::MeshClassCellsAllocationMethodEnum = MeshEnums::MeshClassCellsAllocationMethod |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::MeshTraits = TMeshTraits |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::OutputHexahedronCellType = itk::HexahedronCell<CellType> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::OutputLineCellType = itk::LineCell<CellType> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::OutputPolygonCellType = itk::PolygonCell<CellType> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::OutputPolyLineCellType = itk::PolyLineCell<CellType> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::OutputQuadraticEdgeCellType = itk::QuadraticEdgeCell<CellType> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::OutputQuadraticTriangleCellType = itk::QuadraticTriangleCell<CellType> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::OutputQuadrilateralCellType = itk::QuadrilateralCell<CellType> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::OutputTetrahedronCellType = itk::TetrahedronCell<CellType> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::OutputTriangleCellType = itk::TriangleCell<CellType> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::OutputVertexCellType = itk::VertexCell<CellType> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PixelType = typename MeshTraits::PixelType |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PointCellLinksContainer = typename MeshTraits::PointCellLinksContainer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PointCellLinksContainerIterator = typename PointCellLinksContainer::const_iterator |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PointDataContainer = typename MeshTraits::PointDataContainer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PointDataContainerIterator = typename PointDataContainer::ConstIterator |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PointDataContainerPointer = typename PointDataContainer::Pointer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::Pointer = SmartPointer<Self> |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PointHashType = typename MeshTraits::PointHashType |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PointIdentifier = typename MeshTraits::PointIdentifier |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PointsContainer = typename MeshTraits::PointsContainer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PointsContainerConstIterator = typename PointsContainer::ConstIterator |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PointsContainerIterator = typename PointsContainer::Iterator |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PointsContainerPointer = typename PointsContainer::Pointer |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::PointType = typename MeshTraits::PointType |
using itk::Mesh< TPixelType, VDimension, TMeshTraits >::Superclass = PointSet<TPixelType, VDimension, TMeshTraits> |
|
protected |
Constructor for use by New() method.
|
overrideprotected |
Constructor for use by New() method.
|
virtual |
Iterate over all the cells in the mesh and has each cell Accept the MultiVisitor. See MultiVisitor for more information. (Note, this follows the Visitor Design Pattern.)
void itk::Mesh< TPixelType, VDimension, TMeshTraits >::BuildCellLinks | ( | ) | const |
Dynamically build the links from points back to their using cells. This information is stored in the cell links container, not in the points.
|
overridevirtual |
Methods for managing Mesh filters that have internal mini-pipelines
Reimplemented from itk::DataObject.
Reimplemented in itk::QuadEdgeMesh< TPixel, VDimension, TTraits >, and itk::SimplexMesh< TPixelType, VDimension, TMeshTraits >.
|
virtual |
Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.
Reimplemented from itk::LightObject.
Reimplemented in itk::QuadEdgeMesh< TPixel, VDimension, TTraits >, itk::SimplexMesh< TPixelType, VDimension, TMeshTraits >, itk::VoronoiDiagram2D< TCoordinate >, itk::VoronoiDiagram2D< double >, and itk::VoronoiDiagram2D< double >.
|
private |
Create a new cell of a given type.
void itk::Mesh< TPixelType, VDimension, TMeshTraits >::DeleteUnusedCellData | ( | ) |
Delete entries in m_CellDataContainer which do not have a corresponding entry in m_CellsContainer.
bool itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetAssignedCellBoundaryIfOneExists | ( | int | dimension, |
CellIdentifier | , | ||
CellFeatureIdentifier | , | ||
CellAutoPointer & | ) const |
Check if there is an explicitly assigned boundary feature for the given dimension and cell- and cell-feature-identifiers. If there is, a pointer to it is given back through boundary (if boundary != nullptr) and true
is returned. Otherwise, false
is returned.
bool itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetBoundaryAssignment | ( | int | dimension, |
CellIdentifier | cellId, | ||
CellFeatureIdentifier | featureId, | ||
CellIdentifier * | boundaryId ) const |
For the given cellId, get the identifier of a particular boundary feature of the given dimension. The featureId determines which boundary feature of the specified dimension is returned. For instance, if dimension is 1 and featureId is 0, then GetBoundaryAssignment finds the 0th edge of the given cell. The return value indicates whether a feature of the appropriate dimension and featureId exists. If it does not, the BoundaryIdentifier pointer is left unchanged.
BoundaryAssignmentsContainerPointer itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetBoundaryAssignments | ( | int | dimension | ) |
Get the boundary assignment container for a given dimension.
const BoundaryAssignmentsContainerPointer itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetBoundaryAssignments | ( | int | dimension | ) | const |
Get the boundary assignment container for a given dimension.
const BoundingBoxType * itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetBoundingBox | ( | ) | const |
Get the bounding box of the mesh. The methods return a pointer to the user-supplied bounding box as a convenience.
bool itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetCell | ( | CellIdentifier | , |
CellAutoPointer & | ) const |
Check if a cell exists for a given cell identifier. If a spot for the cell identifier exists, the cell is set, and true is returned. Otherwise, false is returned, and the cell is not modified. If the cell is nullptr, then it is never set, but the existence of the cell is still returned.
bool itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetCellBoundaryFeature | ( | int | dimension, |
CellIdentifier | , | ||
CellFeatureIdentifier | , | ||
CellAutoPointer & | ) const |
Get the boundary feature of the given dimension of the given cell corresponding to the given feature identifier. If the boundary feature has been explicitly assigned, then boundary will be left pointing to the appropriate cell in the mesh. If the boundary has not been explicitly assigned, then a boundary cell will be constructed and placed in boundary. The constructed cell will not be added to the mesh or somehow cached.
CellIdentifier itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetCellBoundaryFeatureNeighbors | ( | int | dimension, |
CellIdentifier | , | ||
CellFeatureIdentifier | , | ||
std::set< CellIdentifier > * | cellSet ) |
Get the set of cells neighboring the given cell across the given boundary feature. Returns the number of neighbors found. If cellSet is not nullptr, the set of cell pointers is filled in with identifiers of the neighboring cells.
CellDataContainer * itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetCellData | ( | ) |
Get the cell data container.
const CellDataContainer * itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetCellData | ( | ) | const |
Get the cell data container.
bool itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetCellData | ( | CellIdentifier | , |
CellPixelType * | ) const |
Check if cell data exists for a given cell identifier. If a spot for the cell identifier exists, the data is set, and true is returned. Otherwise, false is returned, and the data is not modified. If the data is nullptr, then it is never set, but the existence of the cell data is still returned.
CellLinksContainer * itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetCellLinks | ( | ) |
Get the cell links container.
const CellLinksContainer * itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetCellLinks | ( | ) | const |
Get the cell links container.
CellIdentifier itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetCellNeighbors | ( | CellIdentifier | cellId, |
std::set< CellIdentifier > * | cellSet ) |
Get the set of cells having the given cell as part of their boundary. Returns the number of neighbors found. If cellSet is not nullptr, the set of cell pointers is filled in with identifiers of the neighboring cells.
CellsContainer * itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetCells | ( | ) |
Get the cells container.
const CellsContainer * itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetCells | ( | ) | const |
Get the cells container.
|
virtual |
Set/Get the identification of the method used to allocate cells
|
virtual |
Get the cells container as a vector. The first element of the vector is the cell type and next elements are the point ids for that cell.
|
overridevirtual |
Reimplemented from itk::DataObject.
Reimplemented in itk::QuadEdgeMesh< TPixel, VDimension, TTraits >, itk::SimplexMesh< TPixelType, VDimension, TMeshTraits >, itk::VoronoiDiagram2D< TCoordinate >, itk::VoronoiDiagram2D< double >, and itk::VoronoiDiagram2D< double >.
CellFeatureCount itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetNumberOfCellBoundaryFeatures | ( | int | dimension, |
CellIdentifier | ) const |
Get the number of cell boundary features of the given topological dimension on the cell with the given identifier.
CellIdentifier itk::Mesh< TPixelType, VDimension, TMeshTraits >::GetNumberOfCells | ( | ) | const |
Get the number of cells in the cells container.
|
overridevirtual |
Method for grafting the content of one data object into another one. This method is intended to be overloaded by derived classes. Each one of them should use dynamic_casting in order to verify that the grafted object is actually of the same type as the class on which the Graft() method was invoked.
Reimplemented from itk::DataObject.
Reimplemented in itk::QuadEdgeMesh< TPixel, VDimension, TTraits >.
|
overridevirtual |
Restore the Mesh to its initial state. Useful for data pipeline updates without memory re-allocation.
Reimplemented from itk::DataObject.
Reimplemented in itk::QuadEdgeMesh< TPixel, VDimension, TTraits >.
|
static |
Method for creation through the object factory.
void itk::Mesh< TPixelType, VDimension, TMeshTraits >::PassStructure | ( | Self * | inputMesh | ) |
Copy the geometric and topological structure of the given input mesh. The copying is done via reference counting.
|
overrideprotectedvirtual |
Constructor for use by New() method.
Reimplemented from itk::DataObject.
Reimplemented in itk::SimplexMesh< TPixelType, VDimension, TMeshTraits >, itk::VoronoiDiagram2D< TCoordinate >, itk::VoronoiDiagram2D< double >, and itk::VoronoiDiagram2D< double >.
|
protected |
Release the memory allocated for the cells pointers. This is done based on information provided by the user through the method SetCellsAllocationMethod().
bool itk::Mesh< TPixelType, VDimension, TMeshTraits >::RemoveBoundaryAssignment | ( | int | dimension, |
CellIdentifier | cellId, | ||
CellFeatureIdentifier | featureId ) |
Remove an explicit boundary assignment if it exists. Returns whether the assignment was found at all.
void itk::Mesh< TPixelType, VDimension, TMeshTraits >::SetBoundaryAssignment | ( | int | dimension, |
CellIdentifier | cellId, | ||
CellFeatureIdentifier | featureId, | ||
CellIdentifier | boundaryId ) |
Explicitly assign boundaryId as a part of the boundary of cellId. The identifiers boundaryId and cellId must identify cell objects already in the mesh. The dimension of boundaryId must be specified by dimension, and a unique CellFeatureIdentifier featureId must be assigned for each distinct boundary feature of a given dimension. CellFeatureIdentifier is equivalent to IdentifierType
by default, and this type alias will not typically need to be changed. The UsingCells list of boundaryId is automatically updated to include cellId.
void itk::Mesh< TPixelType, VDimension, TMeshTraits >::SetBoundaryAssignments | ( | int | dimension, |
BoundaryAssignmentsContainer * | ) |
Set/get the boundary assignment container for a given dimension. The BoundaryAssignmentsContainer is a MapContainer indexed by a BoundaryAssignmentIdentifier, which encapsulates a cell identifier and a boundary feature identifier. The boundary feature identifier distinguishes different boundary features for a given cell at a given dimension.
void itk::Mesh< TPixelType, VDimension, TMeshTraits >::SetCell | ( | CellIdentifier | , |
CellAutoPointer & | ) |
Assign a cell to a cell identifier. If a spot for the cell identifier does not exist, it will be created automatically. If used to overwrite a cell currently in the mesh, it is the caller's responsibility to release the memory for the cell currently at the CellIdentifier position prior to calling this method.
void itk::Mesh< TPixelType, VDimension, TMeshTraits >::SetCellData | ( | CellDataContainer * | ) |
Set the cell data container, which contains data associated with the mesh's cells. Optionally, this can be nullptr, indicating that no data are associated with the cells. The data for a cell can be accessed through its cell identifier.
void itk::Mesh< TPixelType, VDimension, TMeshTraits >::SetCellData | ( | CellIdentifier | , |
CellPixelType | ) |
Assign data to a cell identifier. If a spot for the cell identifier does not exist, it will be created automatically. There is no check if a cell with the same identifier exists.
void itk::Mesh< TPixelType, VDimension, TMeshTraits >::SetCellLinks | ( | CellLinksContainer * | ) |
Set the cell links container, which contains parent cell links for each point. Since a point can be used by multiple cells, each point identifier accesses another container which holds the cell identifiers
void itk::Mesh< TPixelType, VDimension, TMeshTraits >::SetCells | ( | CellsContainer * | ) |
Set the cells container, which holds cells used by the mesh. Individual cells are accessed through cell identifiers.
|
virtual |
Set/Get the identification of the method used to allocate cells
|
virtual |
Set the cells container using a 1D vector. The first element of the vector is the cell type and next is number of points in the cell followed by the point ids in that cell. Can cause exception if input cell array isn't of right dimension.
|
virtual |
Set the cells container using a 1D vector. To be used when all the cells are of same type. Takes as argument the cell point ids and the cell type.
|
protected |
|
protected |
A vector of objects containing explicit cell boundary assignments. The vector is indexed by the topological dimension of the cell boundary. The container for each topological dimension holds boundary identifiers of the assigned boundaries. The containers are keyed by BoundaryAssignmentIdentifier objects (see above). The boundary identifiers can be used to access the boundaries themselves in the containers stored in the Boundaries vector. They can also be used to access the data stored by a particular boundary through the containers in the BoundaryData vector.
|
protected |
|
protected |
|
mutableprotected |
|
private |
|
protected |
|
staticconstexpr |
|
staticconstexpr |