/* 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, color and a detail flag Triangle(math::Vector3f const &v0, math::Vector3f const &v1, math::Vector3f const &v2, math::Vector3f const &normal, bool detail); /// 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 1 inline math::Vector3f & v1() { return triangle_v1; } /// triangle vertex 2 inline math::Vector3f & v2() { return triangle_v2; } private: math::Vector3f triangle_v0; math::Vector3f triangle_v1; math::Vector3f triangle_v2; math::Vector3f triangle_normal; bool triangle_detail; }; } #endif // __INCLUDED_MODEL_TRIANGLE_H__