MEPP2 Project
|
This class represents an AIF structure. AIF structure can deal with both manifold and non-manifold surface meshes. The faces of the meshes are not limited in degree, thus, the structure also deals with polygonal meshes. To sum up, AIFMesh can handle every surface mesh (and can be easily extended to upper dimensions). The limitation of the structure is that the face with 0, 1 or 2 vertices are unoriented (not complying case). For faces with at least three vertices, orientation is deduced from its incident edge order. More...
#include <AIFMesh.hpp>
Public Types | |
typedef AIFMesh | Self |
typedef boost::shared_ptr< Self > | ptr |
typedef boost::shared_ptr< Self > | ptr_mesh |
typedef boost::shared_ptr< const Self > | ptr_cmesh |
typedef AIFVertex | vertex_type |
typedef AIFEdge | edge_type |
typedef AIFFace | face_type |
typedef AIFCellContainer< vertex_type::ptr > | VertexContainerType |
typedef AIFCellContainer< edge_type::ptr > | EdgeContainerType |
typedef AIFCellContainer< face_type::ptr > | FaceContainerType |
typedef AIFVertex::CoordinateType | CoordinateType |
typedef AIFPoint< CoordinateType, 3 > | Point |
typedef std::array< CoordinateType, 2 > | PointUV |
typedef AIFVector< CoordinateType, 3 > | Vector |
typedef AIFFace::NormalCoordinateType | NormalCoordinateType |
typedef AIFVector< NormalCoordinateType, 3 > | Normal |
Public Member Functions | |
AIFMesh (void) | |
AIFMesh (const Self &) | |
~AIFMesh () | |
Self & | operator= (const Self &) |
boost::iterator_range< VertexContainerType::const_iterator > | GetVertices () const |
boost::iterator_range< VertexContainerType::iterator > | GetVertices () |
VertexContainerType::iterator | vertices_begin () |
VertexContainerType::iterator | vertices_end () |
boost::iterator_range< EdgeContainerType::const_iterator > | GetEdges () const |
boost::iterator_range< EdgeContainerType::iterator > | GetEdges () |
boost::iterator_range< FaceContainerType::const_iterator > | GetFaces () const |
boost::iterator_range< FaceContainerType::iterator > | GetFaces () |
unsigned int | GetNumberOfVertices () const |
unsigned int | GetNumberOfEdges () const |
unsigned int | GetNumberOfFaces () const |
void | InsertIsolatedVertex (vertex_type::ptr vertex) |
void | InsertIsolatedEdge (edge_type::ptr edge) |
void | InsertIsolatedFace (face_type::ptr face) |
template<typename T > | |
void | EraseIsolatedCell (AIFCellContainer< T > &container, const T &cell) |
void | EraseIsolatedVertex (vertex_type::ptr vertex) |
void | EraseIsolatedEdge (edge_type::ptr edge) |
void | EraseIsolatedEdge (EdgeContainerType::iterator edge_iter) |
void | EraseIsolatedFace (face_type::ptr face) |
void | clear () |
void | Print () const |
template<typename CellType > | |
PropertyMapContainer * | GetPropertyMapContainer (void) |
template<typename CellType > | |
const PropertyMapContainer * | GetPropertyMapContainer (void) const |
template<typename CellType , typename T > | |
PropertyMap< T > * | AddPropertyMap (const std::string &mapName) |
template<typename CellType , typename T > | |
PropertyMap< T > * | GetPropertyMap (const std::string &mapName) |
template<typename CellType > | |
bool | isPropertyMap (const std::string &mapName) const |
template<typename CellType > | |
bool | isAPropertyMapStartingWithPrefix (const std::string &mapPrefixName) const |
template<typename CellType > | |
std::vector< std::string > | GetPropertyMapNamesStartingWithPrefix (const std::string &mapPrefixName) const |
template<typename CellType > | |
void | RemovePropertyMap (const std::string &mapName) |
template<typename CellType , typename T > | |
void | SetProperty (const std::string &mapName, std::size_t cellId, T value) |
template<typename CellType , typename T > | |
T & | GetProperty (const std::string &mapName, std::size_t cellId) |
template<typename CellType , typename T > | |
const T & | GetProperty (const std::string &mapName, std::size_t cellId) const |
template<typename KeyType , typename ValueType > | |
AssocPropertyMap< KeyType, ValueType > * | AddAssocPropertyMap (const std::string &mapName) |
template<typename KeyType , typename ValueType > | |
AssocPropertyMap< KeyType, ValueType > * | GetAssocPropertyMap (const std::string &mapName) |
void | RemoveAssocPropertyMap (const std::string &mapName) |
bool | isAssocPropertyMap (const std::string &mapName) |
template<> | |
const PropertyMapContainer * | GetPropertyMapContainer (void) const |
template<> | |
const PropertyMapContainer * | GetPropertyMapContainer (void) const |
template<> | |
const PropertyMapContainer * | GetPropertyMapContainer (void) const |
template<> | |
PropertyMapContainer * | GetPropertyMapContainer (void) |
template<> | |
PropertyMapContainer * | GetPropertyMapContainer (void) |
template<> | |
PropertyMapContainer * | GetPropertyMapContainer (void) |
template<> | |
const PropertyMapContainer * | GetPropertyMapContainer (void) const |
template<> | |
const PropertyMapContainer * | GetPropertyMapContainer (void) const |
template<> | |
const PropertyMapContainer * | GetPropertyMapContainer (void) const |
Static Public Member Functions | |
static ptr_mesh | New () |
This class represents an AIF structure. AIF structure can deal with both manifold and non-manifold surface meshes. The faces of the meshes are not limited in degree, thus, the structure also deals with polygonal meshes. To sum up, AIFMesh can handle every surface mesh (and can be easily extended to upper dimensions). The limitation of the structure is that the face with 0, 1 or 2 vertices are unoriented (not complying case). For faces with at least three vertices, orientation is deduced from its incident edge order.
Definition at line 46 of file AIFMesh.hpp.
Definition at line 62 of file AIFMesh.hpp.
Definition at line 55 of file AIFMesh.hpp.
Definition at line 59 of file AIFMesh.hpp.
Definition at line 56 of file AIFMesh.hpp.
Definition at line 60 of file AIFMesh.hpp.
Definition at line 69 of file AIFMesh.hpp.
Definition at line 68 of file AIFMesh.hpp.
typedef AIFPoint< CoordinateType, 3 > FEVV::DataStructures::AIF::AIFMesh::Point |
Definition at line 63 of file AIFMesh.hpp.
typedef std::array< CoordinateType, 2 > FEVV::DataStructures::AIF::AIFMesh::PointUV |
Definition at line 65 of file AIFMesh.hpp.
typedef boost::shared_ptr< Self > FEVV::DataStructures::AIF::AIFMesh::ptr |
Definition at line 50 of file AIFMesh.hpp.
typedef boost::shared_ptr< const Self > FEVV::DataStructures::AIF::AIFMesh::ptr_cmesh |
Definition at line 52 of file AIFMesh.hpp.
typedef boost::shared_ptr< Self > FEVV::DataStructures::AIF::AIFMesh::ptr_mesh |
Definition at line 51 of file AIFMesh.hpp.
Definition at line 49 of file AIFMesh.hpp.
Definition at line 66 of file AIFMesh.hpp.
Definition at line 54 of file AIFMesh.hpp.
typedef AIFCellContainer< vertex_type::ptr > FEVV::DataStructures::AIF::AIFMesh::VertexContainerType |
Definition at line 58 of file AIFMesh.hpp.
|
inline |
Default constructor
Definition at line 19 of file AIFMesh.inl.
|
inline |
Copy constructor (deep copy)
Definition at line 27 of file AIFMesh.inl.
|
inline |
|
inline |
Add an associative property map.
mapName | property map name |
Definition at line 495 of file AIFMesh.hpp.
|
inline |
Add a property map.
CellType | type of the cell the property map container is associated to (AIFVertex/AIFEdge/AIFFace) |
mapName | property map name |
Definition at line 370 of file AIFMesh.hpp.
|
inline |
Removes all vertices, faces and edges from a graph. Property maps associated with vertices, faces and edges are also cleared.
Definition at line 706 of file AIFMesh.inl.
|
inline |
Suppression function for a simple cell (vertex, edge, face...) without handling any topological relation.
cell | The isolate cell to erase from the mesh |
Definition at line 255 of file AIFMesh.hpp.
|
inline |
Suppression function for a simple edge (without handling any topological relation)
edge | The isolate edge to erase from the mesh |
Definition at line 299 of file AIFMesh.hpp.
|
inline |
Suppression function for a simple edge iterator (without handling any topological relation)
edge_iter | The edge iterator to erase its associated isolated edge from the mesh |
Definition at line 311 of file AIFMesh.hpp.
|
inline |
Suppression function for a simple face (without handling any topological relation)
face | The isolate face to erase from the mesh |
Definition at line 321 of file AIFMesh.hpp.
|
inline |
Suppression function for a simple vertex (without handling any topological relation)
vertex | The isolate vertex to erase from the mesh |
Definition at line 290 of file AIFMesh.hpp.
|
inline |
Get an associative property map.
mapName | property map name |
Definition at line 507 of file AIFMesh.hpp.
|
inline |
Mesh edges getter
Definition at line 180 of file AIFMesh.hpp.
|
inline |
Mesh edges getter
Definition at line 171 of file AIFMesh.hpp.
|
inline |
Mesh faces getter
Definition at line 198 of file AIFMesh.hpp.
|
inline |
Mesh faces getter
Definition at line 189 of file AIFMesh.hpp.
|
inline |
Edges count getter
Definition at line 214 of file AIFMesh.hpp.
|
inline |
Faces count getter
Definition at line 222 of file AIFMesh.hpp.
|
inline |
Vertices count getter
Definition at line 206 of file AIFMesh.hpp.
|
inline |
Get the property value of a given cell.
CellType | type of the cell the property map container is associated to (AIFVertex/AIFEdge/AIFFace) |
mapName | property map name |
cellId | cell (aka AIFVertex/AIFEdge/AIFFace) index |
Definition at line 465 of file AIFMesh.hpp.
|
inline |
Get the property value of a given cell.
CellType | type of the cell the property map container is associated to (AIFVertex/AIFEdge/AIFFace) |
mapName | property map name |
cellId | cell (aka AIFVertex/AIFEdge/AIFFace) index |
Definition at line 479 of file AIFMesh.hpp.
|
inline |
Get a property map.
CellType | type of the cell the property map container is associated to (AIFVertex/AIFEdge/AIFFace) |
mapName | property map name |
Definition at line 383 of file AIFMesh.hpp.
PropertyMapContainer* FEVV::DataStructures::AIF::AIFMesh::GetPropertyMapContainer | ( | void | ) |
Get a property map container. This function is specialized for each kown CellType in AIFMesh.cpp.
CellType | type of the cell the property map container is associated to (AIFVertex/AIFEdge/AIFFace) |
|
inline |
Definition at line 764 of file AIFMesh.inl.
|
inline |
Definition at line 772 of file AIFMesh.inl.
|
inline |
Definition at line 780 of file AIFMesh.inl.
const PropertyMapContainer* FEVV::DataStructures::AIF::AIFMesh::GetPropertyMapContainer | ( | void | ) | const |
Get a property map container. This function is specialized for each kown CellType in AIFMesh.cpp.
CellType | type of the cell the property map container is associated to (AIFVertex/AIFEdge/AIFFace) |
const PropertyMapContainer* FEVV::DataStructures::AIF::AIFMesh::GetPropertyMapContainer | ( | void | ) | const |
const PropertyMapContainer* FEVV::DataStructures::AIF::AIFMesh::GetPropertyMapContainer | ( | void | ) | const |
const PropertyMapContainer* FEVV::DataStructures::AIF::AIFMesh::GetPropertyMapContainer | ( | void | ) | const |
|
inline |
|
inline |
|
inline |
|
inline |
Get property map names starting with prefix.
CellType | type of the cell the property map container is associated to (AIFVertex/AIFEdge/AIFFace) |
mapPrefixName | property map prefix name |
Definition at line 423 of file AIFMesh.hpp.
|
inline |
Mesh vertices getter
Definition at line 143 of file AIFMesh.hpp.
|
inline |
Mesh vertices getter
Definition at line 134 of file AIFMesh.hpp.
|
inline |
Insertion function for a simple edge (without handling any topological relation)
edge | The isolate edge to add to the mesh |
Definition at line 240 of file AIFMesh.hpp.
|
inline |
Insertion function for a simple face (without handling any topological relation)
face | The isolate face to add to the mesh |
Definition at line 247 of file AIFMesh.hpp.
|
inline |
Insertion function for a simple vertex (without handling any topological relation)
vertex | The isolate vertex to add to the mesh |
Definition at line 233 of file AIFMesh.hpp.
|
inline |
Indicate if at least one property map with given prefix exists for the given cell type.
CellType | type of the cell the property map container is associated to (AIFVertex/AIFEdge/AIFFace) |
mapPrefixName | property map prefix name |
Definition at line 410 of file AIFMesh.hpp.
|
inline |
Indicate if an associative property map exists.
mapName | property map name |
Definition at line 526 of file AIFMesh.hpp.
|
inline |
Indicate if a property map exists for the given cell type.
CellType | type of the cell the property map container is associated to (AIFVertex/AIFEdge/AIFFace) |
mapName | property map name |
Definition at line 397 of file AIFMesh.hpp.
|
inlinestatic |
Static constructor method
Definition at line 720 of file AIFMesh.inl.
|
inline |
= operator (deep copy)
Definition at line 40 of file AIFMesh.inl.
|
inline |
Print the textual description of the involved mesh on the standard output.
Definition at line 728 of file AIFMesh.inl.
|
inline |
Remove an associative property map.
mapName | property map name |
Definition at line 517 of file AIFMesh.hpp.
|
inline |
Remove a property map.
CellType | type of the cell the property map container is associated to (AIFVertex/AIFEdge/AIFFace) |
mapName | property map name |
Definition at line 436 of file AIFMesh.hpp.
|
inline |
Set the property value for a given cell.
CellType | type of the cell the property map container is associated to (AIFVertex/AIFEdge/AIFFace) |
mapName | property map name |
cellId | cell (aka AIFVertex/AIFEdge/AIFFace) index |
value | value to set |
Definition at line 451 of file AIFMesh.hpp.
|
inline |
Mesh vertices begin iterator
Definition at line 152 of file AIFMesh.hpp.
|
inline |
Mesh vertices end iterator
Definition at line 161 of file AIFMesh.hpp.
|
private |
Associative property maps.
Definition at line 100 of file AIFMesh.hpp.
|
private |
Edges property maps.
Definition at line 92 of file AIFMesh.hpp.
|
private |
Edges (AIFEdge pointer) container of the mesh.
Definition at line 79 of file AIFMesh.hpp.
|
private |
Faces property maps.
Definition at line 96 of file AIFMesh.hpp.
|
private |
Faces (AIFFace pointer) container of the mesh.
Definition at line 83 of file AIFMesh.hpp.
|
private |
Vertices property maps.
Definition at line 88 of file AIFMesh.hpp.
|
private |
Vertices (AIFVertex pointer) container of the mesh.
Definition at line 75 of file AIFMesh.hpp.