#include "model.h"
Model::Model(Array* _faces) {
faces = new Array(*_faces);
Vec c = calcCenter();
setCenter(c);
rotation = new Vec(0,0,0);
}
Model::~Model() {
delete position;
delete rotation;
delete faces;
}
void Model::setCenter(Vec& c) {
delete position;
position = c.clone();
}
Vec Model::calcCenter() {
Vec s(0,0,0);
Poly* t;
faces->reset();
while ( t = (Poly*)faces->next() ) {
s = s + t->calcCenter();
}
return s/((float)faces->length());
}
void Model::rotate(Vec rot) {
rotation->add(rot);
faces->reset();
Poly* t;
while ( t = (Poly*)faces->next() ) {
t->rotate(rot);
}
}
void Model::draw() {
faces->reset();
Poly* t;
while ( t = (Poly*)faces->next() ) {
t->draw();
}
}
void Model::addFace(Poly* face) {
faces->push(face);
}
int Model::numberOfFaces() {
return faces->length();
}