All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
SurgSim::DataStructures::Vertices< VertexData > Class Template Reference

Base class for mesh structures, handling basic vertex functionality. More...

#include <SurgSim/DataStructures/Vertices.h>

Inheritance diagram for SurgSim::DataStructures::Vertices< VertexData >:
Inheritance graph
[legend]
Collaboration diagram for SurgSim::DataStructures::Vertices< VertexData >:
Collaboration graph
[legend]

Public Types

typedef Vertex< VertexData > VertexType
 Vertex type for convenience. More...
 

Public Member Functions

 Vertices ()
 Constructor. The mesh is initially empty (no vertices). More...
 
virtual ~Vertices ()
 Destructor. More...
 
void clear ()
 Clear mesh to return to an empty state (no vertices). More...
 
void update ()
 Performs any updates that are required when the vertices are modified. More...
 
size_t addVertex (const VertexType &vertex)
 Adds a vertex to the mesh. More...
 
size_t getNumVertices () const
 Returns the number of vertices in this mesh. More...
 
const VertexTypegetVertex (size_t id) const
 Returns the specified vertex. More...
 
VertexTypegetVertex (size_t id)
 Returns the specified vertex (non const version). More...
 
const std::vector< VertexType > & getVertices () const
 Returns a vector containing the position of each vertex. More...
 
std::vector< VertexType > & getVertices ()
 Returns a vector containing the position of each vertex (non const version). More...
 
void setVertexPosition (size_t id, const SurgSim::Math::Vector3d &position)
 Sets the position of a vertex. More...
 
const SurgSim::Math::Vector3dgetVertexPosition (size_t id) const
 Returns the position of a vertex. More...
 
void setVertexPositions (const std::vector< SurgSim::Math::Vector3d > &positions, bool doUpdate=true)
 Sets the position of each vertex. More...
 
bool operator== (const Vertices &mesh) const
 Compares the mesh with another one (equality) More...
 
bool operator!= (const Vertices &mesh) const
 Compares the mesh with another one (inequality) More...
 

Protected Member Functions

virtual void doClearVertices ()
 Remove all vertices from the mesh. More...
 
virtual bool isEqual (const Vertices &mesh) const
 Internal comparison of meshes of the same type: returns true if equal, false if not equal. More...
 

Private Member Functions

virtual void doClear ()
 Clear mesh to return to an empty state (no vertices). More...
 
virtual void doUpdate ()
 Performs any updates that are required when the vertices are modified. More...
 

Private Attributes

std::vector< VertexTypem_vertices
 Vertices. More...
 

Detailed Description

template<class VertexData>
class SurgSim::DataStructures::Vertices< VertexData >

Base class for mesh structures, handling basic vertex functionality.

Vertices is to be used purely as a data structure and not provide implementation of algorithms. For example, a physics FEM is not a subclass of Vertices, but may use a Mesh for storing the structure of the FEM.

Subclasses of this class should handle the elements required for a specific type of mesh (as simple as just a generic triangle mesh or as specific as a triangle mesh for collision detection, which might also specify the data types for the vertex and elements).

It is recommended that subclasses of this class also provide convenience methods for creation of vertices and elements, and the data each contains. A method such as createVertex(position, other data...) simplifies the creation of vertices and the data required. This method would use the addVertex() method to add the created vertices to the Mesh.

Template Parameters
VertexDataType of extra data stored in each vertex (void for no data)
See also
Vertex
MeshElement

Member Typedef Documentation

template<class VertexData>
typedef Vertex<VertexData> SurgSim::DataStructures::Vertices< VertexData >::VertexType

Vertex type for convenience.

Constructor & Destructor Documentation

template<class VertexData>
SurgSim::DataStructures::Vertices< VertexData >::Vertices ( )
inline

Constructor. The mesh is initially empty (no vertices).

template<class VertexData>
virtual SurgSim::DataStructures::Vertices< VertexData >::~Vertices ( )
inlinevirtual

Destructor.

Member Function Documentation

template<class VertexData>
size_t SurgSim::DataStructures::Vertices< VertexData >::addVertex ( const VertexType vertex)
inline

Adds a vertex to the mesh.

Recommend that subclasses with a specific purpose (such as for use in collision detection), have a createVertex(position, other data...) method which performs any checking desired and sets up the vertex data based on the other parameters.

Parameters
vertexVertex to add to the mesh
Returns
Unique ID of the new vertex.
template<class VertexData>
void SurgSim::DataStructures::Vertices< VertexData >::clear ( )
inline

Clear mesh to return to an empty state (no vertices).

template<class VertexData>
virtual void SurgSim::DataStructures::Vertices< VertexData >::doClear ( )
inlineprivatevirtual
template<class VertexData>
virtual void SurgSim::DataStructures::Vertices< VertexData >::doClearVertices ( )
inlineprotectedvirtual

Remove all vertices from the mesh.

template<class VertexData>
virtual void SurgSim::DataStructures::Vertices< VertexData >::doUpdate ( )
inlineprivatevirtual

Performs any updates that are required when the vertices are modified.

Override this method to implement update functionality. For example, this could be overridden to calculate normals for each Vertex.

Reimplemented in SurgSim::DataStructures::TriangleMesh.

template<class VertexData>
size_t SurgSim::DataStructures::Vertices< VertexData >::getNumVertices ( ) const
inline

Returns the number of vertices in this mesh.

template<class VertexData>
const VertexType& SurgSim::DataStructures::Vertices< VertexData >::getVertex ( size_t  id) const
inline

Returns the specified vertex.

template<class VertexData>
VertexType& SurgSim::DataStructures::Vertices< VertexData >::getVertex ( size_t  id)
inline

Returns the specified vertex (non const version).

template<class VertexData>
const SurgSim::Math::Vector3d& SurgSim::DataStructures::Vertices< VertexData >::getVertexPosition ( size_t  id) const
inline

Returns the position of a vertex.

Parameters
idUnique ID of the vertex
Returns
Position of the vertex
template<class VertexData>
const std::vector<VertexType>& SurgSim::DataStructures::Vertices< VertexData >::getVertices ( ) const
inline

Returns a vector containing the position of each vertex.

template<class VertexData>
std::vector<VertexType>& SurgSim::DataStructures::Vertices< VertexData >::getVertices ( )
inline

Returns a vector containing the position of each vertex (non const version).

template<class VertexData>
virtual bool SurgSim::DataStructures::Vertices< VertexData >::isEqual ( const Vertices< VertexData > &  mesh) const
inlineprotectedvirtual

Internal comparison of meshes of the same type: returns true if equal, false if not equal.

Override this method to provide custom comparison. Base Mesh implementation compares vertices: the order of vertices must also match to be considered equal.

Parameters
meshMesh must be of the same type as that which it is compared against

Reimplemented in SurgSim::DataStructures::TetrahedronMesh< VertexData, EdgeData, TriangleData, TetrahedronData >, SurgSim::DataStructures::TriangleMeshBase< VertexData, EdgeData, TriangleData >, and SurgSim::DataStructures::TriangleMeshBase< VertexData, SurgSim::DataStructures::EmptyData, SurgSim::DataStructures::EmptyData >.

template<class VertexData>
bool SurgSim::DataStructures::Vertices< VertexData >::operator!= ( const Vertices< VertexData > &  mesh) const
inline

Compares the mesh with another one (inequality)

Parameters
meshThe Vertices to compare it to
Returns
False if the two vertices are equals, True otherwise
template<class VertexData>
bool SurgSim::DataStructures::Vertices< VertexData >::operator== ( const Vertices< VertexData > &  mesh) const
inline

Compares the mesh with another one (equality)

Parameters
meshThe Vertices to compare it to
Returns
True if the two vertices are equals, False otherwise
template<class VertexData>
void SurgSim::DataStructures::Vertices< VertexData >::setVertexPosition ( size_t  id,
const SurgSim::Math::Vector3d position 
)
inline

Sets the position of a vertex.

Parameters
idUnique ID of the vertex
positionPosition of the vertex
template<class VertexData>
void SurgSim::DataStructures::Vertices< VertexData >::setVertexPositions ( const std::vector< SurgSim::Math::Vector3d > &  positions,
bool  doUpdate = true 
)
inline

Sets the position of each vertex.

Parameters
positionsVector containing new position for each vertex
doUpdateTrue to perform an update after setting the vertices, false to skip update; default is true.
template<class VertexData>
void SurgSim::DataStructures::Vertices< VertexData >::update ( )
inline

Performs any updates that are required when the vertices are modified.

Calls doUpdate() to perform the updates.

Member Data Documentation

template<class VertexData>
std::vector<VertexType> SurgSim::DataStructures::Vertices< VertexData >::m_vertices
private

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