diff --git a/all_includes.hh b/all_includes.hh index a878044..32e0db1 100644 --- a/all_includes.hh +++ b/all_includes.hh @@ -44,6 +44,8 @@ class Chose; #include "rules/batiment/batimentquadblock.hh" #include "rules/batiment/batimentquadtoit.hh" #include "rules/batiment/batimenttri.hh" +#include "rules/batiment/batimentquadmur.hh" +#include "rules/batiment/batimentquadfenetre.hh" #include "rules/quartier/quartierquad.hh" #include "rules/quartier/quartierquadangle.hh" diff --git a/main.cpp b/main.cpp index 34fdcfe..d526814 100644 --- a/main.cpp +++ b/main.cpp @@ -11,7 +11,7 @@ int main() { Chose* c = QuartierQuad::factory(Chose::initialSeed, 0, Quad(ne, se, sw, nw)); c->triangulation(); c->updateAABB(); - + new View(c); return 0; } diff --git a/rules/batiment/batimentquadfenetre.cpp b/rules/batiment/batimentquadfenetre.cpp new file mode 100644 index 0000000..d41d88f --- /dev/null +++ b/rules/batiment/batimentquadfenetre.cpp @@ -0,0 +1,14 @@ +#include "all_includes.hh" + +BatimentQuadFenetre::BatimentQuadFenetre(Quad c, int height) : Chose(), c(c), height(height) { + addEntropy(c); +} + +void BatimentQuadFenetre::getBoundingBoxPoints() { + addBBPoints(c); + addBBPoints(c + Vertex(0,0,height)); +} + +void BatimentQuadFenetre::triangulation() { + // Vide laisse un trou Ă  la place de la fenĂȘtre. +} diff --git a/rules/batiment/batimentquadfenetre.hh b/rules/batiment/batimentquadfenetre.hh new file mode 100644 index 0000000..0b57f68 --- /dev/null +++ b/rules/batiment/batimentquadfenetre.hh @@ -0,0 +1,18 @@ +#ifndef _RULES_BATIMENT_BATIMENTQUADFENETRE_HH_ +#define _RULES_BATIMENT_BATIMENTQUADFENETRE_HH_ + +#include "all_includes.hh" + +class BatimentQuadFenetre: public Chose { + private : + Quad c; + int height; + + public : + + BatimentQuadFenetre(Quad c, int height); + virtual void triangulation(); + virtual void getBoundingBoxPoints(); +}; + +#endif diff --git a/rules/batiment/batimentquadmaisonpont.cpp b/rules/batiment/batimentquadmaisonpont.cpp index eb8231f..66edeea 100644 --- a/rules/batiment/batimentquadmaisonpont.cpp +++ b/rules/batiment/batimentquadmaisonpont.cpp @@ -10,9 +10,9 @@ void BatimentQuadMaisonPont::getBoundingBoxPoints() { } bool BatimentQuadMaisonPont::split() { - Quad q = Quad(c[NE],c[SE],c[SW],c[NW]); + Quad q = c; q.makeParallelogram(); - if(Segment(q[NE],q[NW]).length() < Segment(q[NE],q[SE]).length()) + if(Segment(q[NE],q[NW]).length() < Segment(q[NE],q[SE]).length()) q = q << 1; float partLength = Segment(q[NE],q[NW]).length() / 3; int partHeight = 2.5*height/3.; @@ -25,10 +25,10 @@ bool BatimentQuadMaisonPont::split() { qc.offset(E, -partLength); qc.offset(W, -partLength); - addChild(new BatimentQuadJardin(c << 1)); - addChild(new BatimentQuadBlock(qa >> 1,partHeight)); - addChild(new BatimentQuadBlock(qb >> 1,partHeight)); - addChild(new BatimentQuadBlock((qh + Vertex(0,0,partHeight)) >> 1,partHeight)); + addChild(new BatimentQuadJardin(c)); + addChild(new BatimentQuadBlock(qa,partHeight)); + addChild(new BatimentQuadBlock(qb,partHeight)); + addChild(new BatimentQuadBlock((qh + Vertex(0,0,partHeight)),partHeight)); addChild(new BatimentQuadPont(qc,partHeight)); addChild(new BatimentQuadToit(qh + Vertex(0,0,2*partHeight),150)); diff --git a/rules/batiment/batimentquadmur.cpp b/rules/batiment/batimentquadmur.cpp new file mode 100644 index 0000000..ca620d8 --- /dev/null +++ b/rules/batiment/batimentquadmur.cpp @@ -0,0 +1,14 @@ +#include "all_includes.hh" + +BatimentQuadMur::BatimentQuadMur(Quad c, int height) : Chose(), c(c), height(height) { + addEntropy(c); +} + +void BatimentQuadMur::getBoundingBoxPoints() { + addBBPoints(c); + addBBPoints(c + Vertex(0,0,height)); +} + +void BatimentQuadMur::triangulation() { + addGPUOcto(c, c + Vertex(0,0,height), 0xF1, 0xE0, 0xE0); +} diff --git a/rules/batiment/batimentquadmur.hh b/rules/batiment/batimentquadmur.hh new file mode 100644 index 0000000..3630ef6 --- /dev/null +++ b/rules/batiment/batimentquadmur.hh @@ -0,0 +1,18 @@ +#ifndef _RULES_BATIMENT_BATIMENTQUADMUR_HH_ +#define _RULES_BATIMENT_BATIMENTQUADMUR_HH_ + +#include "all_includes.hh" + +class BatimentQuadMur: public Chose { + private : + Quad c; + int height; + + public : + + BatimentQuadMur(Quad c, int height); + virtual void triangulation(); + virtual void getBoundingBoxPoints(); +}; + +#endif