#include <GL/gl.h>
#include "model.h"
void Model::transform(const Vector3 &scale, const Vector3 &move) {
for(TriangleList::iterator i = triangles.begin(); i != triangles.end(); ++i) {
for(int j = 0; j < 3; ++j) {
i->normal.c[j] *= scale.c[j];
for(int k = 0; k < 3; ++k) {
i->vertices[k].c[j] *= scale.c[j];
i->vertices[k].c[j] += move.c[j];
}
}
Real nl = i->normal.len();
nl = nl > 1e-5 ? 1/nl : 0.0;
i->normal = i->normal * nl;
}
}
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);
}