Program Listing for File TriangleMesh.h
↰ Return to documentation for file (SPlisHSPlasH/TriangleMesh.h)
#ifndef __TriangleMesh_h__
#define __TriangleMesh_h__
#include <vector>
#include "SPlisHSPlasH/Common.h"
namespace SPH
{
class TriangleMesh
{
public:
typedef std::vector<unsigned int> Faces;
typedef std::vector<Vector3r> Normals;
typedef std::vector<Vector3r> 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<unsigned int>(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