diff --git a/rules/batiment/batimentquad.cpp b/rules/batiment/batimentquad.cpp index c8814bc..9930f8c 100644 --- a/rules/batiment/batimentquad.cpp +++ b/rules/batiment/batimentquad.cpp @@ -10,6 +10,11 @@ int BatimentQuad::width() { return this->ne.x - this->sw.x; } int BatimentQuad::height() { return this->ne.y - this->sw.y; } +std::vector BatimentQuad::getBoundingBoxPoints() const { + std::vector list; + return list; +} + bool BatimentQuad::subdivide() { factory(1,1,ne,se,sw,nw); return true; diff --git a/rules/batiment/batimentquad.hh b/rules/batiment/batimentquad.hh index 91ae867..4c77a2f 100644 --- a/rules/batiment/batimentquad.hh +++ b/rules/batiment/batimentquad.hh @@ -22,6 +22,7 @@ class BatimentQuad : public Chose { virtual bool subdivide(); virtual void triangulation(); Chose* factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw); + virtual std::vector getBoundingBoxPoints() const; }; #endif diff --git a/rules/batiment/batimentquadjardin.cpp b/rules/batiment/batimentquadjardin.cpp index cfaf14a..932a040 100644 --- a/rules/batiment/batimentquadjardin.cpp +++ b/rules/batiment/batimentquadjardin.cpp @@ -9,6 +9,11 @@ int BatimentQuadJardin::width() { return this->ne.x - this->sw.x; } int BatimentQuadJardin::height() { return this->ne.y - this->sw.y; } +std::vector BatimentQuadJardin::getBoundingBoxPoints() const { + std::vector list; + return list; +} + bool BatimentQuadJardin::subdivide() { return true; diff --git a/rules/batiment/batimentquadjardin.hh b/rules/batiment/batimentquadjardin.hh index d6f572f..4be7156 100644 --- a/rules/batiment/batimentquadjardin.hh +++ b/rules/batiment/batimentquadjardin.hh @@ -21,6 +21,7 @@ class BatimentQuadJardin : public Chose { virtual bool subdivide(); virtual void triangulation(); Chose* factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw); + virtual std::vector getBoundingBoxPoints() const; }; #endif diff --git a/rules/batiment/batimentquadmaison.cpp b/rules/batiment/batimentquadmaison.cpp index c553d03..49dca45 100644 --- a/rules/batiment/batimentquadmaison.cpp +++ b/rules/batiment/batimentquadmaison.cpp @@ -9,6 +9,11 @@ int BatimentQuadMaison::width() { return this->ne.x - this->sw.x; } int BatimentQuadMaison::height() { return this->ne.y - this->sw.y; } +std::vector BatimentQuadMaison::getBoundingBoxPoints() const { + std::vector list; + return list; +} + bool BatimentQuadMaison::subdivide() { return true; diff --git a/rules/batiment/batimentquadmaison.hh b/rules/batiment/batimentquadmaison.hh index cc13679..c9c69e9 100644 --- a/rules/batiment/batimentquadmaison.hh +++ b/rules/batiment/batimentquadmaison.hh @@ -21,6 +21,7 @@ class BatimentQuadMaison : public Chose { virtual bool subdivide(); virtual void triangulation(); Chose* factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw); + virtual std::vector getBoundingBoxPoints() const; }; #endif diff --git a/rules/chose.hh b/rules/chose.hh index 053665e..7f464ae 100644 --- a/rules/chose.hh +++ b/rules/chose.hh @@ -34,6 +34,7 @@ class Chose { void addChild(Chose* c); void addTriangle(Triangle* t); virtual void triangulation() = 0; + virtual std::vector getBoundingBoxPoints() const = 0; }; diff --git a/rules/quartier/quartierquad.cpp b/rules/quartier/quartierquad.cpp index 99dc274..c066cae 100644 --- a/rules/quartier/quartierquad.cpp +++ b/rules/quartier/quartierquad.cpp @@ -8,6 +8,11 @@ QuartierQuad::QuartierQuad(Vertex ne, Vertex se, Vertex sw, Vertex nw) : Chose() corner[NW] = nw; } +std::vector QuartierQuad::getBoundingBoxPoints() const { + std::vector list; + return list; +} + Chose* QuartierQuad::factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw) { Quad q = Quad(ne,se,sw,nw); bool small = q.minLength() < 2500; diff --git a/rules/quartier/quartierquad.hh b/rules/quartier/quartierquad.hh index cd25cb5..a527caf 100644 --- a/rules/quartier/quartierquad.hh +++ b/rules/quartier/quartierquad.hh @@ -12,6 +12,7 @@ public: virtual bool subdivide(); virtual void triangulation(); static Chose* factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw); + virtual std::vector getBoundingBoxPoints() const; }; #endif diff --git a/rules/quartier/quartierquadangle.cpp b/rules/quartier/quartierquadangle.cpp index b371ba3..a7eb863 100644 --- a/rules/quartier/quartierquadangle.cpp +++ b/rules/quartier/quartierquadangle.cpp @@ -4,6 +4,11 @@ QuartierQuadAngle::QuartierQuadAngle(Vertex ne, Vertex se, Vertex sw, Vertex nw) triangulation(); } +std::vector QuartierQuadAngle::getBoundingBoxPoints() const { + std::vector list; + return list; +} + bool QuartierQuadAngle::subdivide() { for (int i = 0; i < 4; i++) { if (Triangle(corner[NW+i], corner[NE+i], corner[SE+i]).angle() >= Angle::d2r(130)) { diff --git a/rules/quartier/quartierquadangle.hh b/rules/quartier/quartierquadangle.hh index f5a50cf..d6993e1 100644 --- a/rules/quartier/quartierquadangle.hh +++ b/rules/quartier/quartierquadangle.hh @@ -5,12 +5,15 @@ // QuadAngle est un quadrilatère avec des angles malfichus (< 90-40 ou > 90+40). class QuartierQuadAngle : public QuartierQuad { -private: + private : static const int hrw = 150; // half road width : 2,50m. -public: + + public : QuartierQuadAngle(Vertex ne, Vertex se, Vertex sw, Vertex nw); virtual bool subdivide(); -private: + virtual std::vector getBoundingBoxPoints() const; + + private : void cutAngle(); }; diff --git a/rules/quartier/quartierquadcarre.cpp b/rules/quartier/quartierquadcarre.cpp index 0aae1ea..8a4979a 100644 --- a/rules/quartier/quartierquadcarre.cpp +++ b/rules/quartier/quartierquadcarre.cpp @@ -3,10 +3,15 @@ QuartierQuadCarre::QuartierQuadCarre(Vertex ne, Vertex se, Vertex sw, Vertex nw) : QuartierQuad(ne, se, sw, nw) { } +std::vector QuartierQuadCarre::getBoundingBoxPoints() const { + std::vector list; + return list; +} + bool QuartierQuadCarre::subdivide() { Vertex middle[4]; Quad q[4]; - + Vertex cn = Segment(corner[NW], corner[NE]).randomPos(seed, -1, 25, 75); Vertex cs = Segment(corner[SE], corner[SW]).randomPos(seed, -2, 25, 75); Vertex c = Segment(cn, cs).randomPos(seed, -3, 25, 75); diff --git a/rules/quartier/quartierquadcarre.hh b/rules/quartier/quartierquadcarre.hh index 66ebc25..02ff970 100644 --- a/rules/quartier/quartierquadcarre.hh +++ b/rules/quartier/quartierquadcarre.hh @@ -5,11 +5,13 @@ // Quad est un quadrilatère class QuartierQuadCarre : public QuartierQuad { -private: + private : static const int hrw = 250; // half road width : 2,50m. -public: + + public : QuartierQuadCarre(Vertex ne, Vertex se, Vertex sw, Vertex nw); virtual bool subdivide(); + virtual std::vector getBoundingBoxPoints() const; }; #endif diff --git a/rules/quartier/quartierquadrect.cpp b/rules/quartier/quartierquadrect.cpp index c6e56bd..bc93d39 100644 --- a/rules/quartier/quartierquadrect.cpp +++ b/rules/quartier/quartierquadrect.cpp @@ -3,6 +3,11 @@ QuartierQuadRect::QuartierQuadRect(Vertex ne, Vertex se, Vertex sw, Vertex nw) : QuartierQuad(ne, se, sw, nw) { } +std::vector QuartierQuadRect::getBoundingBoxPoints() const { + std::vector list; + return list; +} + bool QuartierQuadRect::subdivide() { Vertex n = Segment(corner[NW], corner[NE]).randomPos(seed, 0, 33, 67); Vertex s = Segment(corner[SE], corner[SW]).randomPos(seed, 1, 33, 67); diff --git a/rules/quartier/quartierquadrect.hh b/rules/quartier/quartierquadrect.hh index feff741..28c2f9a 100644 --- a/rules/quartier/quartierquadrect.hh +++ b/rules/quartier/quartierquadrect.hh @@ -5,11 +5,13 @@ // Quad est un quadrilatère class QuartierQuadRect : public QuartierQuad { -private: + private : static const int hrw = 250; // half road width : 2,50m. -public: + + public : QuartierQuadRect(Vertex ne, Vertex se, Vertex sw, Vertex nw); virtual bool subdivide(); + virtual std::vector getBoundingBoxPoints() const; }; #endif diff --git a/rules/quartier/quartiertri.cpp b/rules/quartier/quartiertri.cpp index af5d0ac..41c669f 100644 --- a/rules/quartier/quartiertri.cpp +++ b/rules/quartier/quartiertri.cpp @@ -8,6 +8,11 @@ QuartierTri::QuartierTri(Vertex left, Vertex top, Vertex right) : Chose() { triangulation(); } +std::vector QuartierTri::getBoundingBoxPoints() const { + std::vector list; + return list; +} + Chose* QuartierTri::factory(int seed, int n, Vertex left, Vertex top, Vertex right) { (void)seed; (void)n; diff --git a/rules/quartier/quartiertri.hh b/rules/quartier/quartiertri.hh index a6dd863..dc12eb6 100644 --- a/rules/quartier/quartiertri.hh +++ b/rules/quartier/quartiertri.hh @@ -5,13 +5,15 @@ // RectangleRoutes est un quadrilatère de routes avec des angles aux coins égaux à 90°. class QuartierTri : public Chose { -public: + public : Vertex corner[3]; -public: + + public : QuartierTri(Vertex left, Vertex top, Vertex right); virtual bool subdivide(); virtual void triangulation(); static Chose* factory(int seed, int n, Vertex left, Vertex top, Vertex right); + virtual std::vector getBoundingBoxPoints() const; }; #endif diff --git a/rules/route/routequadcarrefour.cpp b/rules/route/routequadcarrefour.cpp index f18fa71..20503a5 100644 --- a/rules/route/routequadcarrefour.cpp +++ b/rules/route/routequadcarrefour.cpp @@ -5,6 +5,11 @@ RouteQuadCarrefour::RouteQuadCarrefour(Vertex ne, Vertex se, Vertex sw, Vertex n triangulation(); } +std::vector RouteQuadCarrefour::getBoundingBoxPoints() const { + std::vector list; + return list; +} + bool RouteQuadCarrefour::subdivide() { // TODO return false; diff --git a/rules/route/routequadcarrefour.hh b/rules/route/routequadcarrefour.hh index 2d1ed75..fed8082 100644 --- a/rules/route/routequadcarrefour.hh +++ b/rules/route/routequadcarrefour.hh @@ -14,6 +14,7 @@ class RouteQuadCarrefour : public Chose { RouteQuadCarrefour(Vertex ne, Vertex se, Vertex sw, Vertex nw); virtual bool subdivide(); virtual void triangulation(); + virtual std::vector getBoundingBoxPoints() const; }; #endif diff --git a/rules/route/routequadchaussee.cpp b/rules/route/routequadchaussee.cpp index 4efd24f..fc5e954 100644 --- a/rules/route/routequadchaussee.cpp +++ b/rules/route/routequadchaussee.cpp @@ -4,6 +4,11 @@ RouteQuadChaussee::RouteQuadChaussee(Vertex ne, Vertex se, Vertex sw, Vertex nw) triangulation(); } +std::vector RouteQuadChaussee::getBoundingBoxPoints() const { + std::vector list; + return list; +} + bool RouteQuadChaussee::subdivide() { // TODO return false; @@ -19,12 +24,12 @@ void RouteQuadChaussee::triangulation() { /*void RouteQuadChaussee::triangulation() { triangles.reserve(2); Vertex nne, nnw, nse, nsw; // Nouvel emplacement de la route. - + nnw = nw + ((ne - nw)/6); nsw = sw + ((se - sw)/6); nne = ne - ((ne - nw)/6); nse = se - ((se - sw)/6); - + addChild(new TrottoirRoute(nnw, nsw, sw, nw, 20)); addChild(new TrottoirRoute(ne, se, nse, nne,20)); }*/ diff --git a/rules/route/routequadchaussee.hh b/rules/route/routequadchaussee.hh index 7f4b023..65f769b 100644 --- a/rules/route/routequadchaussee.hh +++ b/rules/route/routequadchaussee.hh @@ -14,6 +14,7 @@ class RouteQuadChaussee : public Chose { RouteQuadChaussee(Vertex ne, Vertex se, Vertex sw, Vertex nw); virtual bool subdivide(); virtual void triangulation(); + virtual std::vector getBoundingBoxPoints() const; }; #endif diff --git a/rules/route/trottoirquadnormal.cpp b/rules/route/trottoirquadnormal.cpp index 194e6b6..74d0a9b 100644 --- a/rules/route/trottoirquadnormal.cpp +++ b/rules/route/trottoirquadnormal.cpp @@ -10,6 +10,11 @@ TrottoirQuadNormal::TrottoirQuadNormal(Vertex ne, Vertex se, Vertex sw, Vertex n triangulation(); } +std::vector TrottoirQuadNormal::getBoundingBoxPoints() const { + std::vector list; + return list; +} + bool TrottoirQuadNormal::subdivide() { // TODO return false; diff --git a/rules/route/trottoirquadnormal.hh b/rules/route/trottoirquadnormal.hh index 3653997..e1bf8a1 100644 --- a/rules/route/trottoirquadnormal.hh +++ b/rules/route/trottoirquadnormal.hh @@ -16,6 +16,7 @@ class TrottoirQuadNormal : public Chose { TrottoirQuadNormal(Vertex ne, Vertex se, Vertex sw, Vertex nw, int height, Cardinal border); virtual bool subdivide(); virtual void triangulation(); + virtual std::vector getBoundingBoxPoints() const; }; #endif diff --git a/rules/terrain/terrainquadherbe.cpp b/rules/terrain/terrainquadherbe.cpp index 1a92446..1a3252c 100644 --- a/rules/terrain/terrainquadherbe.cpp +++ b/rules/terrain/terrainquadherbe.cpp @@ -9,6 +9,11 @@ TerrainQuadHerbe::TerrainQuadHerbe(Vertex ne, Vertex se, Vertex sw, Vertex nw) : triangulation(); } +std::vector TerrainQuadHerbe::getBoundingBoxPoints() const { + std::vector list; + return list; +} + TerrainQuadHerbe::TerrainQuadHerbe(int red, Vertex ne, Vertex se, Vertex sw, Vertex nw) : Chose(), red(red) { addEntropy(ne, se, sw, nw); corner[NE] = ne; diff --git a/rules/terrain/terrainquadherbe.hh b/rules/terrain/terrainquadherbe.hh index f75fb53..0a4ddad 100644 --- a/rules/terrain/terrainquadherbe.hh +++ b/rules/terrain/terrainquadherbe.hh @@ -5,14 +5,16 @@ // Quad est un quadrilatère class TerrainQuadHerbe : public Chose { -private: + private : Vertex corner[4]; int red; // DEBUG -public: + + public : TerrainQuadHerbe(Vertex ne, Vertex se, Vertex sw, Vertex nw); TerrainQuadHerbe(int red, Vertex ne, Vertex se, Vertex sw, Vertex nw); // DEBUG virtual bool subdivide(); virtual void triangulation(); + virtual std::vector getBoundingBoxPoints() const; };