sofa::component::topology::TriangleSetTopologyContainer Class Reference

Object that stores a set of triangles and provides access to each triangle and its edges and vertices. More...

#include <TriangleSetTopologyContainer.h>

Inheritance diagram for sofa::component::topology::TriangleSetTopologyContainer:

Inheritance graph
[legend]
Collaboration diagram for sofa::component::topology::TriangleSetTopologyContainer:

Collaboration graph
[legend]

Public Member Functions

 TriangleSetTopologyContainer ()
 TriangleSetTopologyContainer (const sofa::helper::vector< Triangle > &triangles)
virtual ~TriangleSetTopologyContainer ()
virtual void init ()
 Initialization method called at graph modification, during bottom-up traversal.
virtual bool checkTopology () const
 Checks if the topology is coherent.
const sofa::helper::vector
< Triangle > & 
getTriangleArray ()
 Returns the Triangle array.
const sofa::helper::vector
< sofa::helper::vector
< unsigned int > > & 
getTriangleVertexShellArray ()
 Returns the Triangle Vertex Shells array.
const sofa::helper::vector
< TriangleEdges > & 
getTriangleEdgeArray ()
 Returns the TriangleEdges array (ie provide the 3 edge indices for each triangle).
const sofa::helper::vector
< sofa::helper::vector
< unsigned int > > & 
getTriangleEdgeShellArray ()
 Returns the Triangle Edge Shells array (ie provides the triangles adjacent to each edge).
unsigned int getNumberOfTriangles () const
 Returns the number of triangles in this topology.
const TriangleEdges & getTriangleEdge (const unsigned int i)
 Returns the 3 edges adjacent to a given triangle.
virtual void clear ()
 Procedural creation methods.
virtual void addTriangle (int a, int b, int c)
const SeqTriangles & getTriangles ()
 BaseMeshTopology API.
virtual int getTriangleIndex (PointID v1, PointID v2, PointID v3)
 Returns the indices of a triangle given three vertex indices : returns -1 if none.
const TriangleEdges & getEdgeTriangleShell (TriangleID i)
 Returns the set of edges adjacent to a given triangle.
virtual const VertexTriangles & getTriangleVertexShell (PointID i)
 Returns the set of triangles adjacent to a given vertex.
virtual const EdgeTriangles & getTriangleEdgeShell (EdgeID i)
 Returns the set of triangles adjacent to a given edge.
virtual int getVertexIndexInTriangle (const Triangle &t, PointID vertexIndex) const
 returns the index (either 0, 1 ,2) of the vertex whose global index is vertexIndex.
virtual int getEdgeIndexInTriangle (const TriangleEdges &t, EdgeID edgeIndex) const
 returns the index (either 0, 1 ,2) of the edge whose global index is edgeIndex.

Protected Member Functions

virtual void createTriangleSetArray ()
 Creates the TriangleSet array.
virtual void createEdgeSetArray ()
 Creates the EdgeSet array.
bool hasTriangles () const
bool hasTriangleEdges () const
bool hasTriangleVertexShell () const
bool hasTriangleEdgeShell () const
void clearTriangles ()
void clearTriangleEdges ()
void clearTriangleVertexShell ()
void clearTriangleEdgeShell ()
virtual void loadFromMeshLoader (sofa::component::MeshLoader *loader)

Protected Attributes

sofa::helper::vector< Triangle > m_triangle
 provides the set of triangles
sofa::helper::vector
< TriangleEdges > 
m_triangleEdge
 provides the 3 edges in each triangle
sofa::helper::vector
< sofa::helper::vector
< unsigned int > > 
m_triangleVertexShell
 for each vertex provides the set of triangles adjacent to that vertex
sofa::helper::vector
< sofa::helper::vector
< unsigned int > > 
m_triangleEdgeShell
 for each edge provides the set of triangles adjacent to that edge

Private Member Functions

void createTriangleEdgeArray ()
 Creates the array of edge indices for each triangle.
void createTriangleVertexShellArray ()
 Creates the Triangle Vertex Shell Array.
void createTriangleEdgeShellArray ()
 Creates the Triangle Edge Shell Array.
sofa::helper::vector< unsigned
int > & 
getTriangleVertexShellForModification (const unsigned int vertexIndex)
 Returns a non-const triangle vertex shell given a vertex index for subsequent modification.
sofa::helper::vector< unsigned
int > & 
getTriangleEdgeShellForModification (const unsigned int edgeIndex)
 Returns a non-const triangle edge shell given the index of an edge for subsequent modification.

Friends

class TriangleSetTopologyModifier
std::ostream & operator<< (std::ostream &out, const TriangleSetTopologyContainer &t)
std::istream & operator>> (std::istream &in, TriangleSetTopologyContainer &t)
 Needed to be compliant with Datas.

Detailed Description

Object that stores a set of triangles and provides access to each triangle and its edges and vertices.

Definition at line 54 of file TriangleSetTopologyContainer.h.


Constructor & Destructor Documentation

sofa::component::topology::TriangleSetTopologyContainer::TriangleSetTopologyContainer (  ) 

Definition at line 48 of file TriangleSetTopologyContainer.cpp.

sofa::component::topology::TriangleSetTopologyContainer::TriangleSetTopologyContainer ( const sofa::helper::vector< Triangle > &  triangles  ) 

virtual sofa::component::topology::TriangleSetTopologyContainer::~TriangleSetTopologyContainer (  )  [inline, virtual]

Definition at line 64 of file TriangleSetTopologyContainer.h.


Member Function Documentation

void sofa::component::topology::TriangleSetTopologyContainer::addTriangle ( int  a,
int  b,
int  c 
) [virtual]

bool sofa::component::topology::TriangleSetTopologyContainer::checkTopology (  )  const [virtual]

void sofa::component::topology::TriangleSetTopologyContainer::clear (  )  [virtual]

void sofa::component::topology::TriangleSetTopologyContainer::clearTriangleEdges (  )  [protected]

void sofa::component::topology::TriangleSetTopologyContainer::clearTriangleEdgeShell (  )  [protected]

void sofa::component::topology::TriangleSetTopologyContainer::clearTriangles (  )  [protected]

void sofa::component::topology::TriangleSetTopologyContainer::clearTriangleVertexShell (  )  [protected]

Definition at line 526 of file TriangleSetTopologyContainer.cpp.

References clear(), and m_triangleVertexShell.

Referenced by clear(), and createTriangleVertexShellArray().

void sofa::component::topology::TriangleSetTopologyContainer::createEdgeSetArray (  )  [protected, virtual]

void sofa::component::topology::TriangleSetTopologyContainer::createTriangleEdgeArray (  )  [private]

void sofa::component::topology::TriangleSetTopologyContainer::createTriangleEdgeShellArray (  )  [private]

void sofa::component::topology::TriangleSetTopologyContainer::createTriangleSetArray (  )  [protected, virtual]

Creates the TriangleSet array.

This function must be implemented by derived classes to create a list of triangles from a set of tetrahedra for instance

Reimplemented in sofa::component::topology::TetrahedronSetTopologyContainer.

Definition at line 87 of file TriangleSetTopologyContainer.cpp.

Referenced by createEdgeSetArray(), createTriangleEdgeArray(), createTriangleEdgeShellArray(), createTriangleVertexShellArray(), and getTriangleArray().

void sofa::component::topology::TriangleSetTopologyContainer::createTriangleVertexShellArray (  )  [private]

int sofa::component::topology::TriangleSetTopologyContainer::getEdgeIndexInTriangle ( const TriangleEdges &  t,
EdgeID  edgeIndex 
) const [virtual]

returns the index (either 0, 1 ,2) of the edge whose global index is edgeIndex.

Returns -1 if none

Definition at line 403 of file TriangleSetTopologyContainer.cpp.

Referenced by sofa::component::topology::TriangleSetTopologyModifier::removeEdgesProcess().

const TriangleEdges& sofa::component::topology::TriangleSetTopologyContainer::getEdgeTriangleShell ( TriangleID  i  )  [inline]

Returns the set of edges adjacent to a given triangle.

Definition at line 86 of file TriangleSetTopologyContainer.h.

References getTriangleEdge().

unsigned int sofa::component::topology::TriangleSetTopologyContainer::getNumberOfTriangles (  )  const

const sofa::helper::vector< Triangle > & sofa::component::topology::TriangleSetTopologyContainer::getTriangleArray (  ) 

const TriangleEdges & sofa::component::topology::TriangleSetTopologyContainer::getTriangleEdge ( const unsigned int  i  ) 

const sofa::helper::vector< TriangleEdges > & sofa::component::topology::TriangleSetTopologyContainer::getTriangleEdgeArray (  ) 

Returns the TriangleEdges array (ie provide the 3 edge indices for each triangle).

Definition at line 327 of file TriangleSetTopologyContainer.cpp.

References createTriangleEdgeArray(), and m_triangleEdge.

const EdgeTriangles & sofa::component::topology::TriangleSetTopologyContainer::getTriangleEdgeShell ( EdgeID  i  )  [virtual]

const sofa::helper::vector< sofa::helper::vector< unsigned int > > & sofa::component::topology::TriangleSetTopologyContainer::getTriangleEdgeShellArray (  ) 

sofa::helper::vector< unsigned int > & sofa::component::topology::TriangleSetTopologyContainer::getTriangleEdgeShellForModification ( const unsigned int  edgeIndex  )  [private]

Returns a non-const triangle edge shell given the index of an edge for subsequent modification.

Definition at line 415 of file TriangleSetTopologyContainer.cpp.

References createTriangleEdgeShellArray(), hasTriangleEdgeShell(), and m_triangleEdgeShell.

int sofa::component::topology::TriangleSetTopologyContainer::getTriangleIndex ( PointID  v1,
PointID  v2,
PointID  v3 
) [virtual]

const SeqTriangles& sofa::component::topology::TriangleSetTopologyContainer::getTriangles (  )  [inline, virtual]

BaseMeshTopology API.

Reimplemented from sofa::core::componentmodel::topology::TopologyContainer.

Definition at line 77 of file TriangleSetTopologyContainer.h.

References getTriangleArray().

const VertexTriangles & sofa::component::topology::TriangleSetTopologyContainer::getTriangleVertexShell ( PointID  i  )  [virtual]

Returns the set of triangles adjacent to a given vertex.

Definition at line 335 of file TriangleSetTopologyContainer.cpp.

References createTriangleVertexShellArray(), hasTriangleVertexShell(), and m_triangleVertexShell.

Referenced by getTriangleIndex().

const sofa::helper::vector< sofa::helper::vector< unsigned int > > & sofa::component::topology::TriangleSetTopologyContainer::getTriangleVertexShellArray (  ) 

sofa::helper::vector< unsigned int > & sofa::component::topology::TriangleSetTopologyContainer::getTriangleVertexShellForModification ( const unsigned int  vertexIndex  )  [private]

Returns a non-const triangle vertex shell given a vertex index for subsequent modification.

Definition at line 436 of file TriangleSetTopologyContainer.cpp.

References createTriangleVertexShellArray(), hasTriangleVertexShell(), and m_triangleVertexShell.

Referenced by sofa::component::topology::TriangleSetTopologyModifier::addTriangleProcess().

int sofa::component::topology::TriangleSetTopologyContainer::getVertexIndexInTriangle ( const Triangle &  t,
PointID  vertexIndex 
) const [virtual]

returns the index (either 0, 1 ,2) of the vertex whose global index is vertexIndex.

Returns -1 if none

Definition at line 391 of file TriangleSetTopologyContainer.cpp.

bool sofa::component::topology::TriangleSetTopologyContainer::hasTriangleEdges (  )  const [protected]

bool sofa::component::topology::TriangleSetTopologyContainer::hasTriangleEdgeShell (  )  const [protected]

bool sofa::component::topology::TriangleSetTopologyContainer::hasTriangles (  )  const [protected]

bool sofa::component::topology::TriangleSetTopologyContainer::hasTriangleVertexShell (  )  const [protected]

void sofa::component::topology::TriangleSetTopologyContainer::init ( void   )  [virtual]

Initialization method called at graph modification, during bottom-up traversal.

Reimplemented from sofa::component::topology::EdgeSetTopologyContainer.

Reimplemented in sofa::component::topology::TetrahedronSetTopologyContainer.

Definition at line 67 of file TriangleSetTopologyContainer.cpp.

void sofa::component::topology::TriangleSetTopologyContainer::loadFromMeshLoader ( sofa::component::MeshLoader *  loader  )  [protected, virtual]


Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  out,
const TriangleSetTopologyContainer &  t 
) [friend]

Definition at line 147 of file TriangleSetTopologyContainer.h.

std::istream& operator>> ( std::istream &  in,
TriangleSetTopologyContainer &  t 
) [friend]

Needed to be compliant with Datas.

Definition at line 168 of file TriangleSetTopologyContainer.h.

friend class TriangleSetTopologyModifier [friend]

Definition at line 56 of file TriangleSetTopologyContainer.h.


Field Documentation


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

Generated on Sun Nov 23 04:21:41 2008 for Sofa by  doxygen 1.5.7.1