#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 129 of file itkAutomaticTopologyMeshSource.h.
|
Definition at line 144 of file itkAutomaticTopologyMeshSource.h. |
|
Definition at line 141 of file itkAutomaticTopologyMeshSource.h. |
|
Reimplemented from itk::MeshSource< TOutputMesh >. Definition at line 136 of file itkAutomaticTopologyMeshSource.h. |
|
Definition at line 143 of file itkAutomaticTopologyMeshSource.h. |
|
Definition at line 152 of file itkAutomaticTopologyMeshSource.h. |
|
Array of IdentifierType objects used to specify cells. Definition at line 159 of file itkAutomaticTopologyMeshSource.h. |
|
This class requires that the mesh being built use unsigned long as the identifier type for all its elements. Definition at line 156 of file itkAutomaticTopologyMeshSource.h. Referenced by itk::AutomaticTopologyMeshSource< TOutputMesh >::Update(). |
|
Definition at line 148 of file itkAutomaticTopologyMeshSource.h. |
|
Definition at line 142 of file itkAutomaticTopologyMeshSource.h. Referenced by itk::AutomaticTopologyMeshSource< TOutputMesh >::Update(). |
|
Hold on to the type information specified by the template parameters. Definition at line 139 of file itkAutomaticTopologyMeshSource.h. |
|
Reimplemented from itk::MeshSource< TOutputMesh >. Definition at line 135 of file itkAutomaticTopologyMeshSource.h. |
|
hash_map typedefs. Definition at line 166 of file itkAutomaticTopologyMeshSource.h. Referenced by itk::AutomaticTopologyMeshSource< TOutputMesh >::Update(). |
|
Definition at line 140 of file itkAutomaticTopologyMeshSource.h. |
|
Definition at line 150 of file itkAutomaticTopologyMeshSource.h. |
|
Standard "Self" typedef. Reimplemented from itk::MeshSource< TOutputMesh >. Definition at line 133 of file itkAutomaticTopologyMeshSource.h. Referenced by itk::AutomaticTopologyMeshSource< TOutputMesh >::Update(). |
|
Reimplemented from itk::MeshSource< TOutputMesh >. Definition at line 134 of file itkAutomaticTopologyMeshSource.h. |
|
Definition at line 151 of file itkAutomaticTopologyMeshSource.h. |
|
Definition at line 149 of file itkAutomaticTopologyMeshSource.h. |
|
Different kinds of cells. Definition at line 147 of file itkAutomaticTopologyMeshSource.h. |
|
|
|
|
|
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) . |
|
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) . |
|
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) . |
|
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) . |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Add the point p0 if it's not already there, and return its ID. |
|
Add the point p0 if it's not already there, and return its ID. |
|
|
|
|
|
|
|
Add the quadrilateral 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). Lines: (p0, p1), (p2, p3), (p0, p2), (p1, p3). In particular, if the points are arranged geometrically as follows p0 p1 p2 p3
then you would call, for instance, |
|
Add the tetrahedron specified by the three points, and return its ID. If the points are p0, p1, and p2, 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). Lines: (p0, p1), (p0, p2), (p0, p3), (p1, p2), (p1, p3), (p2, p3). Triangles: (p0, p1, p2), (p0, p1, p3), (p0, p2, p3), (p1, p2, * p3). |
|
Add the tetrahedron specified by the three points, and return its ID. If the points are p0, p1, and p2, 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). Lines: (p0, p1), (p0, p2), (p0, p3), (p1, p2), (p1, p3), (p2, p3). Triangles: (p0, p1, p2), (p0, p1, p3), (p0, p2, p3), (p1, p2, * p3). |
|
Add the tetrahedron specified by the three points, and return its ID. If the points are p0, p1, and p2, 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). Lines: (p0, p1), (p0, p2), (p0, p3), (p1, p2), (p1, p3), (p2, p3). Triangles: (p0, p1, p2), (p0, p1, p3), (p0, p2, p3), (p1, p2, * p3). |
|
Add the tetrahedron specified by the three points, and return its ID. If the points are p0, p1, and p2, 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). Lines: (p0, p1), (p0, p2), (p0, p3), (p1, p2), (p1, p3), (p2, p3). Triangles: (p0, p1, p2), (p0, p1, p3), (p0, p2, p3), (p1, p2, * p3). |
|
Add the triangle specified by the three points, and return its ID. If the points are p0, p1, and p2, 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). Lines: (p0, p1), (p1, p2), (p2, p0). |
|
Add the triangle specified by the three points, and return its ID. If the points are p0, p1, and p2, 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). Lines: (p0, p1), (p1, p2), (p2, p0). |
|
Add the triangle specified by the three points, and return its ID. If the points are p0, p1, and p2, 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). Lines: (p0, p1), (p1, p2), (p2, p0). |
|
Add the triangle specified by the three points, and return its ID. If the points are p0, p1, and p2, 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). Lines: (p0, p1), (p1, p2), (p2, p0). |
|
Add a vertex located at the given point, and return its ID. |
|
Add a vertex located at the given point, and return its ID. |
|
Add a vertex located at the given point, and return its ID. |
|
Add a vertex located at the given point, and return its ID. |
|
Run-time type information (and related methods). Reimplemented from itk::MeshSource< TOutputMesh >.
|
|
The dimension of the output mesh. |
|
The dimension of the output mesh. |
|
Method for creation through the object factory. Reimplemented from itk::MeshSource< TOutputMesh >.
|
|
The update method is a no-op for this source. The value of the output only changes in response to calls of the Add[object]() methods above. Reimplemented from itk::ProcessObject. Definition at line 342 of file itkAutomaticTopologyMeshSource.h. References itk::AutomaticTopologyMeshSource< TOutputMesh >::IdentifierType, itk::AutomaticTopologyMeshSource< TOutputMesh >::MeshPointer, itk::AutomaticTopologyMeshSource< TOutputMesh >::PointHashMap, and itk::AutomaticTopologyMeshSource< TOutputMesh >::Self. |