Newer
Older
cg / sources / model.cpp
@ajaggi ajaggi on 28 Dec 2005 829 bytes Moved classes to their own files.
#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();
}