/* model/triangle.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_MODEL_TRIANGLE_H__ #define __INCLUDED_MODEL_TRIANGLE_H__ #include "math/color.h" #include "math/vector3f.h" namespace model { /// a model triangle class Triangle { public: /// a new triangle with 3 vertices, a normal and detail flag Triangle(math::Vector3f const &v0, math::Vector3f const &v1, math::Vector3f const &v2, math::Vector3f const &normal, bool detail); /** * @brief a new triangle with 3 vertices with normals and a face normal * this constructor sets the detail flag to false */ Triangle( math::Vector3f const &v0, math::Vector3f const &n0, math::Vector3f const &v1, math::Vector3f const &n1, math::Vector3f const &v2, math::Vector3f const &n2, math::Vector3f const &normal); /// delete triangle ~Triangle(); /// normal of the triangle inline math::Vector3f const & normal() const { return triangle_normal; } /// indidcates if this triangle was generated from a detail brush inline bool detail() const { return triangle_detail; } /// triangle vertex 0 inline math::Vector3f & v0() { return triangle_v0; } /// triangle vertex 0 normal inline math::Vector3f & n0() { return triangle_n0; } /// triangle vertex 1 inline math::Vector3f & v1() { return triangle_v1; } /// triangle vertex 1 normal inline math::Vector3f & n1() { return triangle_n1; } /// triangle vertex 2 inline math::Vector3f & v2() { return triangle_v2; } /// triangle vertex 0 normal inline math::Vector3f & n2() { return triangle_n2; } private: math::Vector3f triangle_v0; math::Vector3f triangle_n0; math::Vector3f triangle_v1; math::Vector3f triangle_n1; math::Vector3f triangle_v2; math::Vector3f triangle_n2; math::Vector3f triangle_normal; bool triangle_detail; }; } #endif // __INCLUDED_MODEL_TRIANGLE_H__