From 070051b8759806873267cff46ceb2be7d6a3262f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Constantin=20Ri=C3=9F?= Date: Mon, 1 Mar 2010 23:30:40 +0100 Subject: initial commit --- Triangle.h | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Triangle.h (limited to 'Triangle.h') diff --git a/Triangle.h b/Triangle.h new file mode 100644 index 0000000..5e8a12c --- /dev/null +++ b/Triangle.h @@ -0,0 +1,59 @@ +#ifndef _TRIANGLE_H_ +#define _TRIANGLE_H_ + +#include "gl.h" +#include +#include + +class Triangle +{ + public: + Triangle() : c(vmml::vec4f::ONE) { + v[0] = v[1] = v[2] = vmml::vec3f::ZERO; + } + + Triangle(const vmml::vec3f &v1, const vmml::vec3f &v2, const vmml::vec3f &v3, const vmml::vec4f &c0) : c(c0) + { + v[0] = v1; + v[1] = v2; + v[2] = v3; + } + + const vmml::vec3f& getVertex(int i) const {return v[i];} + const vmml::vec4f& getColor() const {return c;} + + vmml::vec3f getNormal() const { + return v[0].compute_normal(v[1], v[2]); + } + + void render() const { + glColor4fv(c.array); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, c.array); + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (c/2).array); + + glNormal3fv(getNormal().array); + + for(int i = 0; i < 3; ++i) + { + glVertex3fv(v[i].array); + } + } + + void transform(const vmml::mat4f &m) { + for(int i = 0; i < 3; ++i) + { + v[i] = m*v[i]; + } + } + + vmml::vec3f getCenter() const { + return (v[0]+v[1]+v[2])/3; + } + + private: + vmml::vec3f v[3]; + vmml::vec4f c; +}; + +#endif /*_TRIANGLE_H_*/ + -- cgit v1.2.3