16 #ifndef SURGSIM_DATASTRUCTURES_TETRAHEDRONMESH_INL_H 17 #define SURGSIM_DATASTRUCTURES_TETRAHEDRONMESH_INL_H 22 namespace DataStructures
25 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
31 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
37 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
42 m_edges.push_back(edge);
43 return m_edges.size() - 1;
46 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
51 m_triangles.push_back(triangle);
52 return m_triangles.size() - 1;
55 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
60 m_tetrahedrons.push_back(tetrahedron);
61 return m_tetrahedrons.size() - 1;
64 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
69 return m_edges.size();
72 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
77 return m_triangles.size();
80 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
85 return m_tetrahedrons.size();
88 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
89 const std::vector<typename TetrahedronMesh<VertexData, EdgeData, TriangleData, TetrahedronData>::EdgeType>&
96 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
97 std::vector<typename TetrahedronMesh<VertexData, EdgeData, TriangleData, TetrahedronData>::EdgeType>&
104 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
105 const std::vector<typename TetrahedronMesh<VertexData, EdgeData, TriangleData, TetrahedronData>::TriangleType>&
112 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
113 std::vector<typename TetrahedronMesh<VertexData, EdgeData, TriangleData, TetrahedronData>::TriangleType>&
120 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
121 const std::vector<typename TetrahedronMesh<VertexData, EdgeData, TriangleData, TetrahedronData>::TetrahedronType>&
125 return m_tetrahedrons;
128 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
129 std::vector<typename TetrahedronMesh<VertexData, EdgeData, TriangleData, TetrahedronData>::TetrahedronType>&
133 return m_tetrahedrons;
136 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
144 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
152 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
157 return m_triangles[id];
160 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
165 return m_triangles[id];
168 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
173 return m_tetrahedrons[id];
176 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
181 return m_tetrahedrons[id];
184 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
199 for (
typename std::vector<EdgeType>::const_iterator it = m_edges.begin();
203 for (
size_t vertexId = 0; vertexId < 2; vertexId++)
205 if (it->verticesId[vertexId] >= numVertices)
213 for (
typename std::vector<TriangleType>::const_iterator it = m_triangles.begin();
214 it != m_triangles.end();
217 for (
size_t vertexId = 0; vertexId < 3; vertexId++)
219 if (it->verticesId[vertexId] >= numVertices)
227 for (
typename std::vector<TetrahedronType>::const_iterator it = m_tetrahedrons.begin();
228 it != m_tetrahedrons.end();
231 for (
size_t vertexId = 0; vertexId < 4; vertexId++)
233 if (it->verticesId[vertexId] >= numVertices)
243 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
251 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
259 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
264 m_tetrahedrons.clear();
267 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
277 template <
class VertexData,
class EdgeData,
class TriangleData,
class TetrahedronData>
282 doClearTetrahedrons();
292 #endif // SURGSIM_DATASTRUCTURES_TETRAHEDRONMESH_INL_H const std::vector< EdgeType > & getEdges() const
Returns a vector containing the position of each edge.
Definition: TetrahedronMesh-inl.h:91
Wraps glewInit() to separate the glew opengl definitions from the osg opengl definitions only imgui n...
Definition: AddRandomSphereBehavior.cpp:36
size_t getNumVertices() const
Returns the number of vertices in this mesh.
Definition: Vertices-inl.h:99
Basic class for storing Tetrahedron Meshes, handling basic vertex, edge, triangle and tetrahedron fun...
Definition: TetrahedronMesh.h:60
bool isValid() const
Test if the TetrahedronMesh is valid (valid vertex Ids used in all MeshElements)
Definition: TetrahedronMesh-inl.h:187
virtual void doClearEdges()
Remove all edges from the mesh.
Definition: TetrahedronMesh-inl.h:246
size_t getNumEdges() const
Returns the number of edges in this mesh.
Definition: TetrahedronMesh-inl.h:67
size_t addTriangle(const TriangleType &triangle)
Adds a triangle to the mesh.
Definition: TetrahedronMesh-inl.h:49
virtual void doClearTriangles()
Remove all triangles from the mesh.
Definition: TetrahedronMesh-inl.h:254
size_t getNumTetrahedrons() const
Returns the number of tetrahedrons in this mesh.
Definition: TetrahedronMesh-inl.h:83
const std::vector< TetrahedronType > & getTetrahedrons() const
Returns a vector containing the position of each tetrahedron.
Definition: TetrahedronMesh-inl.h:123
virtual bool isEqual(const Vertices< VertexData > &mesh) const
Internal comparison of meshes of the same type: returns true if equal, false if not equal...
Definition: TetrahedronMesh-inl.h:270
size_t addEdge(const EdgeType &edge)
Adds an edge to the mesh.
Definition: TetrahedronMesh-inl.h:40
virtual void doClearTetrahedrons()
Remove all tetrahedrons from the mesh.
Definition: TetrahedronMesh-inl.h:262
size_t addTetrahedron(const TetrahedronType &tetrahedron)
Adds a tetrahedron to the mesh.
Definition: TetrahedronMesh-inl.h:58
virtual ~TetrahedronMesh()
Destructor.
Definition: TetrahedronMesh-inl.h:33
TetrahedronMesh()
Constructor. The mesh is initially empty (no vertices, no edges, no triangles, no tetrahedrons)...
Definition: TetrahedronMesh-inl.h:27
Element structure for meshes.
Definition: MeshElement.h:44
const TetrahedronType & getTetrahedron(size_t id) const
Returns the specified tetrahedron.
Definition: TetrahedronMesh-inl.h:171
virtual bool isEqual(const Vertices &mesh) const
Internal comparison of meshes of the same type: returns true if equal, false if not equal...
Definition: Vertices-inl.h:184
const TriangleType & getTriangle(size_t id) const
Returns the specified triangle.
Definition: TetrahedronMesh-inl.h:155
virtual void doClearVertices()
Remove all vertices from the mesh.
Definition: Vertices-inl.h:178
const std::vector< TriangleType > & getTriangles() const
Returns a vector containing the position of each triangle.
Definition: TetrahedronMesh-inl.h:107
const EdgeType & getEdge(size_t id) const
Returns the specified edge.
Definition: TetrahedronMesh-inl.h:139
Base class for mesh structures, handling basic vertex functionality.
Definition: Vertices.h:51
size_t getNumTriangles() const
Returns the number of triangles in this mesh.
Definition: TetrahedronMesh-inl.h:75