#include <GL/gl.h>
#include "model.h"
void Model::normalize() {
for(TriangleList::iterator i = triangles.begin(); i != triangles.end(); ++i)
i->normalize();
}
void Model::transform(const Matrix4 &matrix) {
for(TriangleList::iterator i = triangles.begin(); i != triangles.end(); ++i)
for(int j = 0; j < 3; ++j)
i->vertices[j] = matrix.transform( i->vertices[j] );
normalize();
}
void Model::draw() const {
glEnable(GL_LIGHTING);
glColor4dv(color.c);
glBegin(GL_TRIANGLES);
for(TriangleList::const_iterator i = triangles.begin(); i != triangles.end(); ++i) {
glNormal3dv(i->normal.c);
glVertex3dv(i->vertices[0].c);
glVertex3dv(i->vertices[1].c);
glVertex3dv(i->vertices[2].c);
}
glEnd();
glDisable(GL_LIGHTING);
}