add Normals to meshes
This commit is contained in:
@@ -60,5 +60,18 @@ void QuadMesh::AddQuad(const Vector4i &id)
|
||||
this->m_Quads.push_back(id);
|
||||
}
|
||||
|
||||
Vector3f QuadMesh::GetNormal(const Id_t id) const
|
||||
{
|
||||
const Vector4i &quad = m_Quads.at(id);
|
||||
const Vector3f &v0 = m_Points.at(quad(0));
|
||||
const Vector3f &v1 = m_Points.at(quad(1));
|
||||
const Vector3f &v3 = m_Points.at(quad(3));
|
||||
|
||||
Vector3f edge1 = v1 - v0;
|
||||
Vector3f edge2 = v3 - v0;
|
||||
|
||||
return edge1.cross(edge2).normalized();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -45,6 +45,9 @@ public:
|
||||
inline std::vector<Vector3f> & Points() { return this->m_Points; }
|
||||
inline std::vector<Vector4i> & Quads() { return this->m_Quads; }
|
||||
|
||||
const Vector4i & GetQuad(const Id_t id) const { return m_Quads.at(id); }
|
||||
Vector3f GetNormal(const Id_t id) const;
|
||||
|
||||
private:
|
||||
std::vector<Vector3f> m_Points;
|
||||
std::vector<Vector4i> m_Quads;
|
||||
|
||||
@@ -24,8 +24,6 @@
|
||||
//////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
|
||||
|
||||
#include "TriangleMesh.h"
|
||||
|
||||
|
||||
@@ -65,5 +63,18 @@ void TriangleMesh::AddTriangle(const Vector3i &id)
|
||||
this->m_Triangles.push_back(id);
|
||||
}
|
||||
|
||||
Vector3f TriangleMesh::GetNormal(const Id_t id) const
|
||||
{
|
||||
const Vector3i &trg = m_Triangles.at(id);
|
||||
const Vector3f &v0 = m_Points.at(trg(0));
|
||||
const Vector3f &v1 = m_Points.at(trg(1));
|
||||
const Vector3f &v2 = m_Points.at(trg(2));
|
||||
|
||||
Vector3f edge1 = v1 - v0;
|
||||
Vector3f edge2 = v2 - v0;
|
||||
|
||||
return edge1.cross(edge2).normalized();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -47,6 +47,9 @@ public:
|
||||
inline std::vector<Vector3f> & Points() { return this->m_Points; }
|
||||
inline std::vector<Vector3i> & Triangles() { return this->m_Triangles; }
|
||||
|
||||
const Vector3i & GetTriangle(const Id_t id) const { return m_Triangles.at(id); }
|
||||
Vector3f GetNormal(const Id_t id) const;
|
||||
|
||||
private:
|
||||
std::vector<Vector3f> m_Points;
|
||||
std::vector<Vector3i> m_Triangles;
|
||||
|
||||
Reference in New Issue
Block a user