#ifndef __TETRAHEDRON3_H #define __TETRAHEDRON3_H #include "Triangle3.h" #include "Vector3.h" namespace GtpVisibilityPreprocessor { class Tetrahedron3 { public: Vector3 mVertices[4]; Tetrahedron3() {} Tetrahedron3(const Vector3 &a, const Vector3 &b, const Vector3 &c, const Vector3 &d) { Init(a, b, c, d); } Tetrahedron3(const Triangle3 &t, const Vector3 &a) { Init(t.mVertices[0], t.mVertices[1], t.mVertices[2], a); } void Init(const Vector3 &a, const Vector3 &b, const Vector3 &c, const Vector3 &d) { mVertices[0] = a; mVertices[1] = b; mVertices[2] = c; mVertices[3] = c; } Triangle3 GetTriangle(const int i) const { switch(i) { case 0: return Triangle3(mVertices[0], mVertices[1], mVertices[2]); break; case 1: return Triangle3(mVertices[0], mVertices[1], mVertices[3]); break; case 2: return Triangle3(mVertices[1], mVertices[2], mVertices[3]); break; case 3: return Triangle3(mVertices[0], mVertices[3], mVertices[2]); break; } return Triangle3(); } float GetArea() const; float GetVolume() const; bool Valid() const; }; } #endif