Blame model.cpp

8ee194
8ee194
#include <gl gl.h=""></gl>
8ee194
8ee194
#include "model.h"
8ee194
8ee194
8ee194
void Model::transform(const Vector3 &scale, const Vector3 &move) {
8ee194
    for(TriangleList::iterator i = triangles.begin(); i != triangles.end(); ++i) {
8ee194
        for(int j = 0; j < 3; ++j) {
8ee194
            i->normal.c[j] *= scale.c[j];
8ee194
            for(int k = 0; k < 3; ++k) {
8ee194
                i->vertices[k].c[j] *= scale.c[j];
8ee194
                i->vertices[k].c[j] += move.c[j];
8ee194
            }
8ee194
        }
8ee194
        Real nl = i->normal.len();
8ee194
        nl = nl > 1e-5 ? 1/nl : 0.0;
8ee194
        i->normal = i->normal * nl;
8ee194
    }
8ee194
}
8ee194
8ee194
8ee194
void Model::draw() const {
8ee194
    glEnable(GL_LIGHTING);
8ee194
    
8ee194
    glColor4dv(color.c);
8ee194
    glBegin(GL_TRIANGLES);
8ee194
    for(TriangleList::const_iterator i = triangles.begin(); i != triangles.end(); ++i) {
8ee194
        glNormal3dv(i->normal.c);
8ee194
        glVertex3dv(i->vertices[0].c);
8ee194
        glVertex3dv(i->vertices[1].c);
8ee194
        glVertex3dv(i->vertices[2].c);
8ee194
    }
8ee194
    glEnd();
8ee194
8ee194
    glDisable(GL_LIGHTING);
8ee194
}
8ee194