#include <mitkHEMesh.h>
Inherits mitkMesh.
Inherited by mitkHETriangleMesh.
Inheritance diagram for mitkHEMesh:
Public Types | |
typedef VertexVertexIterT< mitkHEMesh > | VertexVertexIterator |
typedef VertexOHalfedgeIterT< mitkHEMesh > | VertexOHalfedgeIterator |
typedef VertexIHalfedgeIterT< mitkHEMesh > | VertexIHalfedgeIterator |
typedef VertexEdgeIterT< mitkHEMesh > | VertexEdgeIterator |
typedef VertexFaceIterT< mitkHEMesh > | VertexFaceIterator |
typedef FaceVertexIterT< mitkHEMesh > | FaceVertexIterator |
typedef FaceHalfedgeIterT< mitkHEMesh > | FaceHalfedgeIterator |
typedef FaceEdgeIterT< mitkHEMesh > | FaceEdgeIterator |
typedef FaceFaceIterT< mitkHEMesh > | FaceFaceIterator |
typedef VertexIterT< mitkHEMesh > | VertexIterator |
typedef EdgeIterT< mitkHEMesh > | EdgeIterator |
typedef FaceIterT< mitkHEMesh > | FaceIterator |
Public Member Functions | |
virtual void | PrintSelf (ostream &os) |
mitkHEMesh () | |
virtual int | GetDataObjectType () const |
virtual void | Initialize () |
virtual void | ShallowCopy (mitkDataObject *src) |
virtual void | DeepCopy (mitkDataObject *src) |
virtual size_type | GetVertexNumber () const |
virtual size_type | GetFaceNumber () const |
size_type | GetEdgeNumber () const |
void | ClearGarbage () |
VertexHandle | AddVertex (Vertex const &vert) |
VertexHandle | AddVertex (Point3f const &point, Point3f const &normal) |
VertexHandle | AddVertex (float x, float y, float z, float nx=0.0f, float ny=0.0f, float nz=0.0f) |
VertexHandle | AddVertex (float v[6]) |
FaceHandle | AddFace (unsigned int n, VertexHandle *vertices) |
void | DeleteVertex (VertexHandle vert) |
void | DeleteEdge (EdgeHandle edge, bool deleteIsolatedVertices) |
void | DeleteFace (FaceHandle face, bool deleteIsolatedVertices) |
HalfEdgeHandle | FindHalfEdge (VertexHandle vert0, VertexHandle vert1) |
bool | IsBoundary (HalfEdgeHandle halfedge) const |
bool | IsBoundary (VertexHandle vert) const |
bool | IsBoundary (EdgeHandle edge) const |
bool | IsManifold (VertexHandle vert) |
virtual Vertex & | GetVertex (VertexHandle v) const =0 |
virtual Edge & | GetEdge (EdgeHandle e) const =0 |
virtual Edge & | GetEdge (HalfEdgeHandle he) const =0 |
virtual HalfEdge & | GetHalfEdge (HalfEdgeHandle he) const =0 |
virtual Face & | GetFace (FaceHandle f) const =0 |
virtual VertexHandle | GetHandle (Vertex const &vert) const =0 |
virtual EdgeHandle | GetHandle (Edge const &edge) const =0 |
virtual HalfEdgeHandle | GetHandle (HalfEdge const &he) const =0 |
virtual FaceHandle | GetHandle (Face const &face) const =0 |
EdgeHandle | GetEdgeHandle (HalfEdgeHandle he) const |
HalfEdgeHandle | PairHalfEdge (HalfEdgeHandle he) const |
HalfEdgeHandle | NextHalfEdge (HalfEdgeHandle he) const |
HalfEdgeHandle | PrevHalfEdge (HalfEdgeHandle he) const |
VertexHandle | EndVertex (HalfEdgeHandle he) const |
FaceHandle | AdjFace (HalfEdgeHandle he) const |
HalfEdgeHandle | OutHalfEdge (VertexHandle v) const |
HalfEdgeHandle | OneHalfEdge (FaceHandle f) const |
bool | IsValid (VertexHandle v) const |
bool | IsValid (EdgeHandle e) const |
bool | IsValid (HalfEdgeHandle he) const |
bool | IsValid (FaceHandle f) const |
size_type | GetValidVertexNumber () const |
size_type | GetValidEdgeNumber () const |
size_type | GetValidFaceNumber () const |
virtual bool | TestClockwise () |
void | ClearFlags () |
mitkHEMesh is a concrete class for polygon meshes which are represented by Half Edge Type. This implementation of half edge references to OpenMesh written by Computer Graphics Group, RWTH Aachen.
struct HEVertex : public _flag_base { union { Vertex3f vert; struct { Point3f point; Point3f normal; }; }; HEHalfEdgeHandle outHalfEdge; // handle of outgoing half edge };
struct HEHalfEdge { HEVertexHandle endVertex; // handle of end vertex HEHalfEdgeHandle pairHalfEdge; // handle of opposite half edge HEHalfEdgeHandle nextHalfEdge; // handle of next half edge HEHalfEdgeHandle prevHalfEdge; // handle of previous half edge HEFaceHandle face; };
struct HEEdge : public _flag_base { HEHalfEdge halfEdge[2]; };
struct _face : public _flag_base { HEHalfEdgeHandle oneHalfEdge; // handle of one half edge };
|
EdgeIterator is an iterator class for iterating over all edges of a mitkHEMesh object. The code snippet for using this class: // mesh is a pointer to an object of mitkHEMesh mitkHEMesh::EdgeIterator iter(mesh); for ( ; iter; ++iter) { // iter is the pointer to current edge // *iter is the reference to current edge // iter.Handle() returns the handle of current edge do something with iter, *iter or iter.Handle(); } |
|
FaceEdgeIterator is an iterator class for iterating over a face's edges. The code snippet for using this class: // mesh is a pointer to an object of mitkHEMesh // center is the handle of the face mitkHEMesh::FaceEdgeIterator iter(mesh, center); for ( ; iter; ++iter) { // iter is the pointer to current edge // *iter is the reference to current edge // iter.Handle() returns the handle of current edge do something with iter, *iter or iter.Handle(); } |
|
FaceFaceIterator is an iterator class for iterating over a face's all edge-neighboring faces. The code snippet for using this class: // mesh is a pointer to an object of mitkHEMesh // center is the handle of the face mitkHEMesh::FaceFaceIterator iter(mesh, center); for ( ; iter; ++iter) { // iter is the pointer to current edge-neighboring face // *iter is the reference to current edge-neighboring face // iter.Handle() returns the handle of current edge-neighboring face do something with iter, *iter or iter.Handle(); } |
|
FaceHalfedgeIterator is an iterator class for iterating over a face's half edges. The code snippet for using this class: // mesh is a pointer to an object of mitkHEMesh // center is the handle of the face mitkHEMesh::FaceHalfedgeIterator iter(mesh, center); for ( ; iter; ++iter) { // iter is the pointer to current half edge // *iter is the reference to current half edge // iter.Handle() returns the handle of current half edge do something with iter, *iter or iter.Handle(); } |
|
FaceIterator is an iterator class for iterating over all faces of a mitkHEMesh object. The code snippet for using this class: // mesh is a pointer to an object of mitkHEMesh mitkHEMesh::FaceIterator iter(mesh); for ( ; iter; ++iter) { // iter is the pointer to current face // *iter is the reference to current face // iter.Handle() returns the handle of current face do something with iter, *iter or iter.Handle(); } |
|
FaceVertexIterator is an iterator class for iterating over a face's vertices. The code snippet for using this class: // mesh is a pointer to an object of mitkHEMesh // center is the handle of the face mitkHEMesh::FaceVertexIterator iter(mesh, center); for ( ; iter; ++iter) { // iter is the pointer to current vertex // *iter is the reference to current vertex // iter.Handle() returns the handle of current vertex do something with iter, *iter or iter.Handle(); } |
|
VertexEdgeIterator is an iterator class for iterating over all incident edges around a vertex. The code snippet for using this class: // mesh is a pointer to an object of mitkHEMesh // center is the handle of the center vertex mitkHEMesh::VertexEdgeIterator iter(mesh, center); for ( ; iter; ++iter) { // iter is the pointer to current incident edge // *iter is the reference to current incident edge // iter.Handle() returns the handle of current incident edge do something with iter, *iter or iter.Handle(); } |
|
VertexFaceIterator is an iterator class for iterating over all adjacent faces around a vertex. The code snippet for using this class: // mesh is a pointer to an object of mitkHEMesh // center is the handle of the center vertex mitkHEMesh::VertexFaceIterator iter(mesh, center); for ( ; iter; ++iter) { // iter is the pointer to current adjacent face // *iter is the reference to current adjacent face // iter.Handle() returns the handle of current adjacent face do something with iter, *iter or iter.Handle(); } |
|
VertexIHalfedgeIterator is an iterator class for iterating over all incoming half edges around a vertex. The code snippet for using this class: // mesh is a pointer to an object of mitkHEMesh // center is the handle of the center vertex mitkHEMesh::VertexIHalfedgeIterator iter(mesh, center); for ( ; iter; ++iter) { // iter is the pointer to current incoming half edge // *iter is the reference to current incoming half edge // iter.Handle() returns the handle of current incoming half edge do something with iter, *iter or iter.Handle(); } |
|
VertexIterator is an iterator class for iterating over all vertices of a mitkHEMesh object. The code snippet for using this class: // mesh is a pointer to an object of mitkHEMesh mitkHEMesh::VertexIterator iter(mesh); for ( ; iter; ++iter) { // iter is the pointer to current vertex // *iter is the reference to current vertex // iter.Handle() returns the handle of current vertex do something with iter, *iter or iter.Handle(); } |
|
VertexOHalfedgeIterator is an iterator class for iterating over all outgoing half edges around a vertex. The code snippet for using this class: // mesh is a pointer to an object of mitkHEMesh // center is the handle of the center vertex mitkHEMesh::VertexOHalfedgeIterator iter(mesh, center); for ( ; iter; ++iter) { // iter is the pointer to current outgoing half edge // *iter is the reference to current outgoing half edge // iter.Handle() returns the handle of current outgoing half edge do something with iter, *iter or iter.Handle(); } |
|
VertexVertexIterator is an iterator class for iterating over all neighboring vertices around a vertex. The code snippet for using this class: // mesh is a pointer to an object of mitkHEMesh // center is the handle of the center vertex mitkHEMesh::VertexVertexIterator iter(mesh, center); for ( ; iter; ++iter) { // iter is the pointer to current neighboring vertex // *iter is the reference to current neighboring vertex // iter.Handle() returns the handle of current neighboring vertex do something with iter, *iter or \e r.Handle(); } |
|
Default constructor. |
|
Add Face.
|
|
Add vertex.
|
|
Add vertex.
|
|
Add vertex.
|
|
Add vertex.
|
|
Get the handle of one half edge's adjacent face.
|
|
Clear all the user-set flags except MITK_FLAG_DELETED. |
|
Clear the garbage generated by deletion.
|
|
Deep copy.
Reimplemented from mitkMesh. Reimplemented in mitkHEICTriangleMesh, and mitkHEOoCTriangleMesh. |
|
Delete edge.
|
|
Delete face.
|
|
Delete vertex.
|
|
Get the handle of one half edge's end vertex.
|
|
Find halfedge from vert0 to vert1.
|
|
Return what type of data object this is.
Reimplemented from mitkMesh. Reimplemented in mitkHEICTriangleMesh, and mitkHEOoCTriangleMesh. |
|
Get edge by half edge handle.
|
|
Get edge by handle.
|
|
Get the handle of an edge by one of its half edge's handle.
|
|
Get edge number.
|
|
Get face by handle.
|
|
Get face number.
Implements mitkMesh. |
|
Get half edge by handle.
|
|
Get the handle of a face.
|
|
Get the handle of a half edge.
|
|
Get the handle of an edge.
|
|
Get the handle of a vertex.
|
|
Get the number of current valid edges in this mesh.
|
|
Get the number of current valid faces in this mesh.
|
|
Get the number of current valid vertices in this mesh.
|
|
Get vertex by handle.
|
|
Get vertex number.
Implements mitkMesh. |
|
Make the output data ready for new data to be inserted. Reimplemented from mitkMesh. Reimplemented in mitkHEICTriangleMesh, mitkHEOoCTriangleMesh, and mitkHETriangleMesh. |
|
Boundary test for edge.
|
|
Boundary test for vertex.
|
|
Boundary test for half edge.
|
|
Manifold test for vertex. The vertex is non-manifold if more than one gap exists, i.e. more than one outgoing boundary halfedge. If one boundary halfedge exists, the vertex' halfedge must be a boundary halfedge. If iterating around the vertex finds another boundary halfedge, the vertex is non-manifold.
|
|
Test the validity of one face handle.
|
|
Test the validity of one half edge handle.
|
|
Test the validity of one edge handle.
|
|
Test the validity of one vertex handle.
|
|
Get the handle of one half edge's next half edge.
|
|
Get the handle of one half edge in one face.
|
|
Get the handle of one vertex's out half edge.
|
|
Get the handle of one half edge's opposite.
|
|
Get the handle of one half edge's previous half edge.
|
|
Print the necessary information about this object for the debugging purpose.
Reimplemented from mitkMesh. Reimplemented in mitkHEICTriangleMesh, mitkHEOoCTriangleMesh, and mitkHETriangleMesh. |
|
Shallowcopy.
Reimplemented from mitkMesh. Reimplemented in mitkHEICTriangleMesh, and mitkHEOoCTriangleMesh. |
|
Test the orientation of front-facing polygons.
Implements mitkMesh. |