#include <itkAutomaticTopologyMeshSource.h>
Inheritance diagram for itk::AutomaticTopologyMeshSource< TOutputMesh >:


This generates an N-dimensional mesh consisting of some combination of vertices, line segments, triangles, quadrilaterals, tetrahedra, and hexahedra. Identifiers for the cells are automatically added, and topological connectivity is automatically computed. When a cell is added, all of its boundary features are determined and added as well.
The main methods are of the form AddThing, where Thing can be Point, Vertex, Triangle, Quadrilateral, Tetrahedron, or Hexahedron. Each of these methods has several overloaded forms, permitting multiple ways to specify the object being added. When called, each of these methods first checks to see if the object has already been added. If it has not, then a new identifier is generated (the smallest one so far unused), the object is added with that identifier, and the ID is returned. If the object has already been added, then the ID it already has is returned and nothing else is done.
When a cell is added, all of its boundary elements are also added, and boundary assignments are set. A cell can be specified using IDs of points already added, or using Point objects that may or may not already be in the mesh. If a cell is specified using Point objects, then the points are added to the mesh if necessary.
The different ways of specifying a cell are
this->AddLine(0, 1), if 0 and 1 are point identifiers).For meshes generated using this filter, only one cell can be added for any given set of vertices. If a, b, c, and d are identifiers for four points in R^3, then (a, b, c, d) and (a, c, d, b) determine two different quadrilaterals (at least one of which is either degenerate or nonplanar). If you call AddQuadrilateral(a, b, c, d); AddQuadrilateral(a, c, d, b); then only the first quadrilateral will actually be added.
To add the topological information to an already constructed mesh (for efficiency of traversal), use this class to generate a copy of the original mesh.
Example: The following code generates a mesh consisting of two triangles sharing an edge.
typedef itk::AutomaticTopologyMeshSource< MeshType > MeshSourceType; MeshSourceType::Pointer meshSource = MeshSourceType::New(); meshSource->AddTriangle( meshSource->AddPoint(0, 0, 0), meshSource->AddPoint(1, 0, 0), meshSource->AddPoint(0, 1, 0) ); meshSource->AddTriangle( meshSource->AddPoint(0, 0, 0), meshSource->AddPoint(1, 0, 0), meshSource->AddPoint(0, 0, 1) );
This class inherits from itk::MeshSource so it fits conveniently into a pipeline, but GetOutput() is always valid after every Add[Something]() call, and Update() is a no-op. It is not thread safe.
Definition at line 111 of file itkAutomaticTopologyMeshSource.h.
| typedef CellType::CellAutoPointer itk::AutomaticTopologyMeshSource< TOutputMesh >::CellAutoPointer |
Definition at line 126 of file itkAutomaticTopologyMeshSource.h.
| typedef MeshType::CellType itk::AutomaticTopologyMeshSource< TOutputMesh >::CellType |
Definition at line 123 of file itkAutomaticTopologyMeshSource.h.
| typedef SmartPointer<const Self> itk::AutomaticTopologyMeshSource< TOutputMesh >::ConstPointer |
Reimplemented from itk::MeshSource< TOutputMesh >.
Definition at line 118 of file itkAutomaticTopologyMeshSource.h.
| typedef PointType::CoordRepType itk::AutomaticTopologyMeshSource< TOutputMesh >::CoordinateType |
Definition at line 125 of file itkAutomaticTopologyMeshSource.h.
typedef DataObject::Pointer itk::MeshSource< TOutputMesh >::DataObjectPointer [inherited] |
Some convenient typedefs.
Reimplemented from itk::ProcessObject.
Reimplemented in itk::SpatialObjectToPointSetFilter< TInputSpatialObject, TOutputPointSet >.
Definition at line 56 of file itkMeshSource.h.
typedef std::vector<DataObjectPointer> itk::ProcessObject::DataObjectPointerArray [inherited] |
STL Array of SmartPointers to DataObjects
Definition at line 103 of file itkProcessObject.h.
typedef DataObjectPointerArray::size_type itk::ProcessObject::DataObjectPointerArraySizeType [inherited] |
Size type of an std::vector
Definition at line 112 of file itkProcessObject.h.
| typedef HexahedronCell< CellType > itk::AutomaticTopologyMeshSource< TOutputMesh >::HexahedronCell |
Definition at line 134 of file itkAutomaticTopologyMeshSource.h.
| typedef Array< IdentifierType > itk::AutomaticTopologyMeshSource< TOutputMesh >::IdentifierArrayType |
Array of IdentifierType objects used to specify cells.
Definition at line 141 of file itkAutomaticTopologyMeshSource.h.
| typedef unsigned long itk::AutomaticTopologyMeshSource< TOutputMesh >::IdentifierType |
This class requires that the mesh being built use unsigned long as the identifier type for all its elements.
Definition at line 138 of file itkAutomaticTopologyMeshSource.h.
| typedef LineCell< CellType > itk::AutomaticTopologyMeshSource< TOutputMesh >::LineCell |
Definition at line 130 of file itkAutomaticTopologyMeshSource.h.
| typedef MeshType::Pointer itk::AutomaticTopologyMeshSource< TOutputMesh >::MeshPointer |
Definition at line 124 of file itkAutomaticTopologyMeshSource.h.
| typedef TOutputMesh itk::AutomaticTopologyMeshSource< TOutputMesh >::MeshType |
Hold on to the type information specified by the template parameters.
Definition at line 121 of file itkAutomaticTopologyMeshSource.h.
typedef OutputMeshType::Pointer itk::MeshSource< TOutputMesh >::OutputMeshPointer [inherited] |
Reimplemented in itk::BalloonForceFilter< TInputMesh, TOutputMesh >, itk::BinaryMask3DMeshSource< TInputImage, TOutputMesh >, itk::ConnectedRegionsMeshFilter< TInputMesh, TOutputMesh >, itk::DeformableMesh3DFilter< TInputMesh, TOutputMesh >, itk::DeformableSimplexMesh3DBalloonForceFilter< TInputMesh, TOutputMesh >, itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >, itk::DeformableSimplexMesh3DGradientConstraintForceFilter< TInputMesh, TOutputMesh >, itk::RegularSphereMeshSource< TOutputMesh >, itk::SphereMeshSource< TOutputMesh >, itk::BinaryMaskToNarrowBandPointSetFilter< TInputImage, TOutputMesh >, itk::ImageToMeshFilter< TInputImage, TOutputMesh >, itk::ImageToParametricSpaceFilter< TInputImage, TOutputMesh >, itk::InteriorExteriorMeshFilter< TInputMesh, TOutputMesh, TSpatialFunction >, itk::ParametricSpaceToImageSpaceMeshFilter< TInputMesh, TOutputMesh >, itk::SimplexMeshAdaptTopologyFilter< TInputMesh, TOutputMesh >, itk::TransformMeshFilter< TInputMesh, TOutputMesh, TTransform >, itk::TriangleMeshToSimplexMeshFilter< TInputMesh, TOutputMesh >, itk::WarpMeshFilter< TInputMesh, TOutputMesh, TDeformationField >, itk::ConformalFlatteningMeshFilter< TPixelType >, itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh >, and itk::VTKPolyDataReader< TOutputMesh >.
Definition at line 61 of file itkMeshSource.h.
typedef TOutputMesh itk::MeshSource< TOutputMesh >::OutputMeshType [inherited] |
Reimplemented in itk::BalloonForceFilter< TInputMesh, TOutputMesh >, itk::BinaryMask3DMeshSource< TInputImage, TOutputMesh >, itk::ConnectedRegionsMeshFilter< TInputMesh, TOutputMesh >, itk::DeformableMesh3DFilter< TInputMesh, TOutputMesh >, itk::DeformableSimplexMesh3DBalloonForceFilter< TInputMesh, TOutputMesh >, itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >, itk::DeformableSimplexMesh3DGradientConstraintForceFilter< TInputMesh, TOutputMesh >, itk::RegularSphereMeshSource< TOutputMesh >, itk::SphereMeshSource< TOutputMesh >, itk::BinaryMaskToNarrowBandPointSetFilter< TInputImage, TOutputMesh >, itk::ImageToMeshFilter< TInputImage, TOutputMesh >, itk::ImageToParametricSpaceFilter< TInputImage, TOutputMesh >, itk::InteriorExteriorMeshFilter< TInputMesh, TOutputMesh, TSpatialFunction >, itk::ParametricSpaceToImageSpaceMeshFilter< TInputMesh, TOutputMesh >, itk::SimplexMeshAdaptTopologyFilter< TInputMesh, TOutputMesh >, itk::TransformMeshFilter< TInputMesh, TOutputMesh, TTransform >, itk::WarpMeshFilter< TInputMesh, TOutputMesh, TDeformationField >, itk::ConformalFlatteningMeshFilter< TPixelType >, itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh >, and itk::VTKPolyDataReader< TOutputMesh >.
Definition at line 60 of file itkMeshSource.h.
| typedef SmartPointer<Self> itk::AutomaticTopologyMeshSource< TOutputMesh >::Pointer |
Reimplemented from itk::MeshSource< TOutputMesh >.
Definition at line 117 of file itkAutomaticTopologyMeshSource.h.
| typedef itk::hash_map< PointType, IdentifierType, StructHashFunction< PointType > > itk::AutomaticTopologyMeshSource< TOutputMesh >::PointHashMap |
hash_map typedefs.
Definition at line 148 of file itkAutomaticTopologyMeshSource.h.
| typedef MeshType::PointType itk::AutomaticTopologyMeshSource< TOutputMesh >::PointType |
Definition at line 122 of file itkAutomaticTopologyMeshSource.h.
| typedef QuadrilateralCell< CellType > itk::AutomaticTopologyMeshSource< TOutputMesh >::QuadrilateralCell |
Definition at line 132 of file itkAutomaticTopologyMeshSource.h.
| typedef AutomaticTopologyMeshSource itk::AutomaticTopologyMeshSource< TOutputMesh >::Self |
Standard "Self" typedef.
Reimplemented from itk::MeshSource< TOutputMesh >.
Definition at line 115 of file itkAutomaticTopologyMeshSource.h.
| typedef MeshSource<TOutputMesh> itk::AutomaticTopologyMeshSource< TOutputMesh >::Superclass |
Reimplemented from itk::MeshSource< TOutputMesh >.
Definition at line 116 of file itkAutomaticTopologyMeshSource.h.
| typedef TetrahedronCell< CellType > itk::AutomaticTopologyMeshSource< TOutputMesh >::TetrahedronCell |
Definition at line 133 of file itkAutomaticTopologyMeshSource.h.
| typedef TriangleCell< CellType > itk::AutomaticTopologyMeshSource< TOutputMesh >::TriangleCell |
Definition at line 131 of file itkAutomaticTopologyMeshSource.h.
| typedef VertexCell< CellType > itk::AutomaticTopologyMeshSource< TOutputMesh >::VertexCell |
Different kinds of cells.
Definition at line 129 of file itkAutomaticTopologyMeshSource.h.
| itk::AutomaticTopologyMeshSource< TOutputMesh >::AutomaticTopologyMeshSource | ( | ) | [protected] |
| itk::AutomaticTopologyMeshSource< TOutputMesh >::~AutomaticTopologyMeshSource | ( | ) | [protected] |
| virtual void itk::ProcessObject::AbortGenerateDataOff | ( | ) | [virtual, inherited] |
| virtual void itk::ProcessObject::AbortGenerateDataOn | ( | ) | [virtual, inherited] |
Turn on and off the AbortGenerateData flag.
| IdentifierType itk::AutomaticTopologyMeshSource< TOutputMesh >::AddHexahedron | ( | const CoordinateType * | p0, | |
| const CoordinateType * | p1, | |||
| const CoordinateType * | p2, | |||
| const CoordinateType * | p3, | |||
| const CoordinateType * | p4, | |||
| const CoordinateType * | p5, | |||
| const CoordinateType * | p6, | |||
| const CoordinateType * | p7 | |||
| ) |
| IdentifierType itk::AutomaticTopologyMeshSource< TOutputMesh >::AddHexahedron | ( | const PointType & | p0, | |
| const PointType & | p1, | |||
| const PointType & | p2, | |||
| const PointType & | p3, | |||
| const PointType & | p4, | |||
| const PointType & | p5, | |||
| const PointType & | p6, | |||
| const PointType & | p7 | |||
| ) |
| IdentifierType itk::AutomaticTopologyMeshSource< TOutputMesh >::AddHexahedron | ( | IdentifierType | pointId0, | |
| IdentifierType | pointId1, | |||
| IdentifierType | pointId2, | |||
| IdentifierType | pointId3, | |||
| IdentifierType | pointId4, | |||
| IdentifierType | pointId5, | |||
| IdentifierType | pointId6, | |||
| IdentifierType | pointId7 | |||
| ) |
| IdentifierType itk::AutomaticTopologyMeshSource< TOutputMesh >::AddHexahedron | ( | const IdentifierArrayType & | pointIds | ) |
Add the hexahedron specified by the four points, and return its ID. If the points are p0, p1, p2, and p3, then the following additional cells (represented here as ordered tuples) are created (if they don't already exist) and associated as boundaries, in the order given:
Vertices: (p0), (p1), (p2), (p3), (p4), (p5), (p6), (p7).
Lines: (p0, p1), (p2, p3), (p4, p5), (p6, p7), (p0, p2), (p1, p3), (p4, p6), (p5, p7), (p0, p4), (p1, p5), (p2, p6), (p3, p7).
Quadrilaterals: (0, 1, 2, 3), (4, 5, 6, 7), (0, 1, 4, 5), (2, 3, 6, 7), (0, 2, 4, 6), (1, 3, 5, 7),
In particular, if the points are connected topologically as follows
p4------------p5
| \ / |
| p0------p1 |
| | | |
| | | |
| p2------p3 |
| / \ |
p6------------p7
meshSource->AddQuadrilateral(p0, p1, p2, p3, p4, p5, p6, p7).
| virtual void itk::ProcessObject::AddInput | ( | DataObject * | input | ) | [protected, virtual, inherited] |
| IdentifierType itk::AutomaticTopologyMeshSource< TOutputMesh >::AddLine | ( | const CoordinateType * | p0, | |
| const CoordinateType * | p1 | |||
| ) |
| IdentifierType itk::AutomaticTopologyMeshSource< TOutputMesh >::AddLine | ( | const PointType & | p0, | |
| const PointType & | p1 | |||
| ) |
| IdentifierType itk::AutomaticTopologyMeshSource< TOutputMesh >::AddLine | ( | IdentifierType | pointId0, | |
| IdentifierType | pointId1 | |||
| ) |
| IdentifierType itk::AutomaticTopologyMeshSource< TOutputMesh >::AddLine | ( | const IdentifierArrayType & | pointIds | ) |
Add the line specified by the two points, and return its ID. The endpoints and their associated vertices are associated to the line in the order that they are specified the first time the function is called.
| unsigned long itk::Object::AddObserver | ( | const EventObject & | event, | |
| Command * | ||||
| ) | const [inherited] |
| unsigned long itk::Object::AddObserver | ( | const EventObject & | event, | |
| Command * | ||||
| ) | [inherited] |
Allow people to add/remove/invoke observers (callbacks) to any ITK object. This is an implementation of the subject/observer design pattern. An observer is added by specifying an event to respond to and an itk::Command to execute. It returns an unsigned long tag which can be used later to remove the event or retrieve the command. The memory for the Command becomes the responsibility of this object, so don't pass the same instance of a command to two different objects
| virtual void itk::ProcessObject::AddOutput | ( | DataObject * | output | ) | [protected, virtual, inherited] |
| IdentifierType itk::AutomaticTopologyMeshSource< TOutputMesh >::AddPoint | ( | CoordinateType | x0 = 0, |
|
| CoordinateType | x1 = 0, |
|||
| CoordinateType | x2 = 0, |
|||
| CoordinateType | x3 = 0, |
|||
| CoordinateType | x4 = 0, |
|||
| CoordinateType | x5 = 0 | |||
| ) |
Add the point with coordinates (x0, ..., xN) where N = PointDimension - 1. If N < 5, then any parameters after xN are ignored. If PointDimension > 6, then a point is generated with the first six coordinates equal to x0, ..., x5, and the rest set to 0.
| IdentifierType itk::AutomaticTopologyMeshSource< TOutputMesh >::AddPoint | ( | const CoordinateType * | p0 | ) |