Simplification pour la création de faces avec l'ajout d'une fonction

addQuad() qui permet d'ajouter directement un quadrilatère et coupe le
coupe en deux triangles.
This commit is contained in:
Yoann 2011-12-19 08:55:33 +01:00
parent 01dd83e78f
commit 920d2c84bf
3 changed files with 10 additions and 4 deletions

View File

@ -51,10 +51,10 @@ void BatimentQuadMaison::triangulation() {
Vertex toit = (neh + seh + nwh + swh) / 4 + Vertex(0,0,htoit);
// 4 Murs
addTriangle(new Triangle(lctr+neh,lctr+seh,lctr+ne,0xf1,0xe3,0xad)); addTriangle(new Triangle(lctr+seh,lctr+se,lctr+ne,0xf1,0xe3,0xad)); // ne-se-seh-neh
addTriangle(new Triangle(lctr+seh,lctr+swh,lctr+se,0xf1,0xe3,0xad)); addTriangle(new Triangle(lctr+swh,lctr+sw,lctr+se,0xf1,0xe3,0xad)); // se-sw-swh-seh
addTriangle(new Triangle(lctr+swh,lctr+nwh,lctr+sw,0xf1,0xe3,0xad)); addTriangle(new Triangle(lctr+nwh,lctr+nw,lctr+sw,0xf1,0xe3,0xad)); // sw-nw-nwh-swh
addTriangle(new Triangle(lctr+nwh,lctr+neh,lctr+nw,0xf1,0xe3,0xad)); addTriangle(new Triangle(lctr+neh,lctr+ne,lctr+nw,0xf1,0xe3,0xad)); // nw-ne-neh-nwh
addQuad(lctr+neh,lctr+seh,lctr+se,lctr+ne,0xf1,0xe3,0xad);
addQuad(lctr+seh,lctr+swh,lctr+sw,lctr+se,0xf1,0xe3,0xad);
addQuad(lctr+swh,lctr+nwh,lctr+nw,lctr+sw,0xf1,0xe3,0xad);
addQuad(lctr+nwh,lctr+neh,lctr+ne,lctr+nw,0xf1,0xe3,0xad);
// 1 Toit
addTriangle(new Triangle(lctr+neh,lctr+toit,lctr+seh,0x9a,0x48,0x3c));

View File

@ -21,6 +21,11 @@ void Chose::addTriangle(Triangle* t) {
// TODO : Ajouter t dans la liste des triangles à envoyer au GPU.
}
void Chose::addQuad(Vertex u, Vertex v, Vertex w, Vertex x, char r, char g, char b) {
this->addTriangle(new Triangle(u,x,w,r,g,b));
this->addTriangle(new Triangle(w,v,u,r,g,b));
}
void Chose::display() {
if (children.size() > 0) {
std::vector<Chose*>::iterator it;

View File

@ -32,6 +32,7 @@ class Chose {
inline void addEntropy(Vertex v1, Vertex v2, Vertex v3, Vertex v4) { addEntropy(v1, v2); addEntropy(v3, v4); }
void addChild(Chose* c);
void addTriangle(Triangle* t);
void addQuad(Vertex u, Vertex v, Vertex w, Vertex x, char r, char g, char b);
virtual void triangulation() = 0;
virtual std::vector<Vertex*> getBoundingBoxPoints() const = 0;