.. _program_listing_file_SPlisHSPlasH_TriangleMesh.h: Program Listing for File TriangleMesh.h ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``SPlisHSPlasH/TriangleMesh.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef __TriangleMesh_h__ #define __TriangleMesh_h__ #include #include "SPlisHSPlasH/Common.h" namespace SPH { class TriangleMesh { public: typedef std::vector Faces; typedef std::vector Normals; typedef std::vector Vertices; protected: Vertices m_x0; Vertices m_x; Faces m_indices; Normals m_normals; Normals m_vertexNormals; public: TriangleMesh(); ~TriangleMesh(); void release(); void initMesh(const unsigned int nPoints, const unsigned int nFaces); void addFace(const unsigned int * const indices); void addFace(const int * const indices); void addVertex(const Vector3r &vertex); const Faces& getFaces() const { return m_indices; } Faces& getFaces(){ return m_indices; } const Normals& getFaceNormals() const { return m_normals; } Normals& getFaceNormals(){ return m_normals; } const Normals& getVertexNormals() const { return m_vertexNormals; } Normals& getVertexNormals(){ return m_vertexNormals; } const Vertices& getVertices() const { return m_x; } Vertices& getVertices() { return m_x; } const Vertices& getVertices0() const { return m_x0; } Vertices& getVertices0() { return m_x0; } unsigned int numVertices() const { return static_cast(m_x.size()); } unsigned int numFaces() const { return (unsigned int)m_indices.size() / 3; } void updateMeshTransformation(const Vector3r& x, const Matrix3r& R); void updateNormals(); void updateVertexNormals(); }; } #endif