Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions

OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F > Class Template Reference

#include <polymesh_list_kernel.h>

Inheritance diagram for OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >:
OpenTissue::polymesh::detail::PMesh< M, OBBTreeVertexTraits< M >, OBBTreeHalfEdgeTraits, OBBTreeEdgeTraits, OBBTreeFaceTraits< M >, polymesh::PolyMeshListKernel > OpenTissue::polymesh::detail::PMesh< M, VoronoiClipVertexTraits< M >, VoronoiClipHalfEdgeTraits< M >, VoronoiClipEdgeTraits, VoronoiClipFaceTraits< M >, polymesh::PolyMeshListKernel >

List of all members.

Classes

class  edge_handle
class  face_handle
class  halfedge_handle
class  Handle
class  vertex_handle

Public Types

typedef V vertex_type
typedef H halfedge_type
typedef E edge_type
typedef F face_type
typedef PolyMeshListKernel< V,
H, E, F
kernel_type
typedef std::size_t index_type
typedef std::list< vertex_type >
::size_type 
size_type
typedef std::list< vertex_type >
::iterator 
vertex_iterator
typedef std::list
< halfedge_type >::iterator 
halfedge_iterator
typedef std::list< edge_type >
::iterator 
edge_iterator
typedef std::list< face_type >
::iterator 
face_iterator
typedef std::list< vertex_type >
::const_iterator 
const_vertex_iterator
typedef std::list
< halfedge_type >
::const_iterator 
const_halfedge_iterator
typedef std::list< edge_type >
::const_iterator 
const_edge_iterator
typedef std::list< face_type >
::const_iterator 
const_face_iterator
typedef boost::optional
< vertex_iterator
opt_vertex_iter
typedef boost::optional
< halfedge_iterator
opt_halfedge_iter
typedef boost::optional
< edge_iterator
opt_edge_iter
typedef boost::optional
< face_iterator
opt_face_iter

Public Member Functions

vertex_iterator vertex_begin ()
vertex_iterator vertex_end ()
halfedge_iterator halfedge_begin ()
halfedge_iterator halfedge_end ()
edge_iterator edge_begin ()
edge_iterator edge_end ()
face_iterator face_begin ()
face_iterator face_end ()
const_vertex_iterator vertex_begin () const
const_vertex_iterator vertex_end () const
const_halfedge_iterator halfedge_begin () const
const_halfedge_iterator halfedge_end () const
const_edge_iterator edge_begin () const
const_edge_iterator edge_end () const
const_face_iterator face_begin () const
const_face_iterator face_end () const
size_type size_faces () const
size_type size_halfedges () const
size_type size_edges () const
size_type size_vertices () const
 PolyMeshListKernel ()
 PolyMeshListKernel (PolyMeshListKernel const &other_kernel)
PolyMeshListKerneloperator= (PolyMeshListKernel const &rhs)
vertex_handle get_vertex_handle (index_type idx) const
halfedge_handle get_halfedge_handle (index_type idx) const
edge_handle get_edge_handle (index_type idx) const
face_handle get_face_handle (index_type idx) const
vertex_iterator get_vertex_iterator (vertex_handle const &v)
halfedge_iterator get_halfedge_iterator (halfedge_handle const &h)
edge_iterator get_edge_iterator (edge_handle const &e)
face_iterator get_face_iterator (face_handle const &f)
void clear ()
bool is_valid_vertex_handle (vertex_handle const &v) const
bool is_valid_halfedge_handle (halfedge_handle const &h) const
bool is_valid_edge_handle (edge_handle const &e) const
bool is_valid_face_handle (face_handle const &f) const

Static Public Member Functions

static vertex_handle const & null_vertex_handle ()
static halfedge_handle const & null_halfedge_handle ()
static edge_handle const & null_edge_handle ()
static face_handle const & null_face_handle ()

Protected Member Functions

vertex_handle create_vertex ()
halfedge_handle create_halfedge ()
edge_handle create_edge ()
face_handle create_face ()
void erase_vertex (vertex_handle const &v)
void erase_halfedge (halfedge_handle const &h)
void erase_edge (edge_handle const &e)
void erase_face (face_handle const &f)

Detailed Description

template<typename V, typename H, typename E, typename F>
class OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >

A PolyMesh kernel is the basic storage of a polygon mesh. It is responsible for defining types such as vertices, edges and faces, but also iterators and handles.

Iterators should at very least be forward traversal iterators or at best a bidirectional iterator.

Handles is an identifier like concept. It uniquely identifies are vertex, edge or face. Handles should be persistent, which means that old handles are still valid upon deletion or insertion of new vertices, edges or faces. This is different from iterators which may all become invalid upon insertion or deletion. In fact a handle is more or less identical to an unique index.

Handles are thus very efficient for copying and identifying features in the mesh.

The kernel can be seen as a multi index table, users can retrieve information based on either iterators or handles, or make conversions between the two.

Notice, when deleting an entity identified by a handle, one can query if the handle is still valid.


Member Typedef Documentation

template<typename V, typename H, typename E, typename F>
typedef std::size_t OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::index_type
template<typename V, typename H, typename E, typename F>
typedef boost::optional<edge_iterator> OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::opt_edge_iter
template<typename V, typename H, typename E, typename F>
typedef boost::optional<face_iterator> OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::opt_face_iter
template<typename V, typename H, typename E, typename F>
typedef std::list<vertex_type>::size_type OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::size_type

Constructor & Destructor Documentation

template<typename V, typename H, typename E, typename F>
OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::PolyMeshListKernel (  )  [inline]
template<typename V, typename H, typename E, typename F>
OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::PolyMeshListKernel ( PolyMeshListKernel< V, H, E, F > const &  other_kernel  )  [inline, explicit]

Member Function Documentation

template<typename V, typename H, typename E, typename F>
void OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::clear (  )  [inline]
template<typename V, typename H, typename E, typename F>
edge_handle OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::create_edge (  )  [inline, protected]
template<typename V, typename H, typename E, typename F>
face_handle OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::create_face (  )  [inline, protected]
template<typename V, typename H, typename E, typename F>
halfedge_handle OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::create_halfedge (  )  [inline, protected]
template<typename V, typename H, typename E, typename F>
vertex_handle OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::create_vertex (  )  [inline, protected]
template<typename V, typename H, typename E, typename F>
const_edge_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::edge_begin (  )  const [inline]
template<typename V, typename H, typename E, typename F>
edge_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::edge_begin (  )  [inline]
template<typename V, typename H, typename E, typename F>
edge_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::edge_end (  )  [inline]
template<typename V, typename H, typename E, typename F>
const_edge_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::edge_end (  )  const [inline]
template<typename V, typename H, typename E, typename F>
void OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::erase_edge ( edge_handle const &  e  )  [inline, protected]
template<typename V, typename H, typename E, typename F>
void OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::erase_face ( face_handle const &  f  )  [inline, protected]
template<typename V, typename H, typename E, typename F>
void OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::erase_halfedge ( halfedge_handle const &  h  )  [inline, protected]
template<typename V, typename H, typename E, typename F>
void OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::erase_vertex ( vertex_handle const &  v  )  [inline, protected]
template<typename V, typename H, typename E, typename F>
const_face_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::face_begin (  )  const [inline]
template<typename V, typename H, typename E, typename F>
face_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::face_begin (  )  [inline]
template<typename V, typename H, typename E, typename F>
const_face_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::face_end (  )  const [inline]
template<typename V, typename H, typename E, typename F>
face_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::face_end (  )  [inline]
template<typename V, typename H, typename E, typename F>
edge_handle OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::get_edge_handle ( index_type  idx  )  const [inline]
template<typename V, typename H, typename E, typename F>
edge_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::get_edge_iterator ( edge_handle const &  e  )  [inline]
template<typename V, typename H, typename E, typename F>
face_handle OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::get_face_handle ( index_type  idx  )  const [inline]
template<typename V, typename H, typename E, typename F>
face_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::get_face_iterator ( face_handle const &  f  )  [inline]
template<typename V, typename H, typename E, typename F>
halfedge_handle OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::get_halfedge_handle ( index_type  idx  )  const [inline]
template<typename V, typename H, typename E, typename F>
halfedge_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::get_halfedge_iterator ( halfedge_handle const &  h  )  [inline]
template<typename V, typename H, typename E, typename F>
vertex_handle OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::get_vertex_handle ( index_type  idx  )  const [inline]
template<typename V, typename H, typename E, typename F>
vertex_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::get_vertex_iterator ( vertex_handle const &  v  )  [inline]
template<typename V, typename H, typename E, typename F>
halfedge_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::halfedge_begin (  )  [inline]
template<typename V, typename H, typename E, typename F>
const_halfedge_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::halfedge_begin (  )  const [inline]
template<typename V, typename H, typename E, typename F>
halfedge_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::halfedge_end (  )  [inline]
template<typename V, typename H, typename E, typename F>
const_halfedge_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::halfedge_end (  )  const [inline]
template<typename V, typename H, typename E, typename F>
bool OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::is_valid_edge_handle ( edge_handle const &  e  )  const [inline]
template<typename V, typename H, typename E, typename F>
bool OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::is_valid_face_handle ( face_handle const &  f  )  const [inline]
template<typename V, typename H, typename E, typename F>
bool OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::is_valid_halfedge_handle ( halfedge_handle const &  h  )  const [inline]
template<typename V, typename H, typename E, typename F>
bool OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::is_valid_vertex_handle ( vertex_handle const &  v  )  const [inline]
template<typename V, typename H, typename E, typename F>
static edge_handle const& OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::null_edge_handle (  )  [inline, static]
template<typename V, typename H, typename E, typename F>
static face_handle const& OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::null_face_handle (  )  [inline, static]
template<typename V, typename H, typename E, typename F>
static halfedge_handle const& OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::null_halfedge_handle (  )  [inline, static]
template<typename V, typename H, typename E, typename F>
static vertex_handle const& OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::null_vertex_handle (  )  [inline, static]
template<typename V, typename H, typename E, typename F>
PolyMeshListKernel& OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::operator= ( PolyMeshListKernel< V, H, E, F > const &  rhs  )  [inline]
template<typename V, typename H, typename E, typename F>
size_type OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::size_edges (  )  const [inline]
template<typename V, typename H, typename E, typename F>
size_type OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::size_faces (  )  const [inline]
template<typename V, typename H, typename E, typename F>
size_type OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::size_halfedges (  )  const [inline]
template<typename V, typename H, typename E, typename F>
size_type OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::size_vertices (  )  const [inline]
template<typename V, typename H, typename E, typename F>
vertex_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::vertex_begin (  )  [inline]
template<typename V, typename H, typename E, typename F>
const_vertex_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::vertex_begin (  )  const [inline]
template<typename V, typename H, typename E, typename F>
const_vertex_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::vertex_end (  )  const [inline]
template<typename V, typename H, typename E, typename F>
vertex_iterator OpenTissue::polymesh::PolyMeshListKernel< V, H, E, F >::vertex_end (  )  [inline]

The documentation for this class was generated from the following file: