commit 920d2c84bf62c5c262d6e1209e90f51416ba863d
parent 01dd83e78f6cd37e4b4b40c781609f62b83e6c11
Author: Yoann <yoann.b87@voila.fr>
Date: Mon, 19 Dec 2011 08:55:33 +0100
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.
Diffstat:
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/rules/batiment/batimentquadmaison.cpp b/rules/batiment/batimentquadmaison.cpp
@@ -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));
diff --git a/rules/chose.cpp b/rules/chose.cpp
@@ -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;
diff --git a/rules/chose.hh b/rules/chose.hh
@@ -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;