diff --git a/all_includes.hh b/all_includes.hh index bc4b00c..d6c0d8a 100644 --- a/all_includes.hh +++ b/all_includes.hh @@ -51,6 +51,8 @@ class Chose; #include "rules/route/routequadcarrefour.hh" #include "rules/route/routequadchaussee.hh" +#include "rules/route/routetrichaussee.hh" + #include "rules/route/trottoirquadnormal.hh" #include "rules/terrain/terrainquadherbe.hh" diff --git a/main.cpp b/main.cpp index 6da9366..cc4beea 100644 --- a/main.cpp +++ b/main.cpp @@ -26,7 +26,6 @@ int main() { Vertex se(size, 0, 0); Vertex sw(0, 0, 0); Vertex nw(0, size, 0); - Chose::initialSeed = 1889676033; Chose* c = QuartierQuad::factory(Chose::initialSeed, 0, ne, se, sw, nw); c->triangulation(); c->updateAABB(); diff --git a/rules/chose.cpp b/rules/chose.cpp index e16aac4..349a6f6 100644 --- a/rules/chose.cpp +++ b/rules/chose.cpp @@ -101,4 +101,4 @@ void Chose::drawAABB() { ); } -unsigned int Chose::initialSeed = 779313522;//random_seed(); +unsigned int Chose::initialSeed = random_seed(); diff --git a/rules/quartier/quartierquadangle.cpp b/rules/quartier/quartierquadangle.cpp index 6af41b2..7f65b0d 100644 --- a/rules/quartier/quartierquadangle.cpp +++ b/rules/quartier/quartierquadangle.cpp @@ -18,8 +18,8 @@ bool QuartierQuadAngle::split() { addChild(QuartierTri::factory(seed, 0, t1.v1, t1.v2, t1.v3)); addChild(QuartierTri::factory(seed, 1, t2.v1, t2.v2, t2.v3)); addChild(new RouteQuadChaussee(t1.v1, t1.v3, t2.v1, t2.v3)); - addChild(new QuartierTri(t2.v3, corner[NE+i], t1.v1)); // TODO : new RouteTri - addChild(new QuartierTri(t1.v3, corner[SW+i], t2.v1)); // TODO : new RouteTri + addChild(new RouteTriChaussee(t1.v1, corner[NE+i], t2.v3)); + addChild(new RouteTriChaussee(t2.v1, corner[SW+i], t1.v3)); return true; } } @@ -40,7 +40,7 @@ bool QuartierQuadAngle::split() { addChild(QuartierTri::factory(seed, 0, tn.v1, tn.v2, tn.v3)); addChild(QuartierQuad::factory(seed, 1, q.corner[0], q.corner[1], q.corner[2], q.corner[3])); addChild(new RouteQuadChaussee(tn.v1, tn.v3, q.corner[1], q.corner[0])); - addChild(new QuartierTri(tn.v3, oldv3, q.corner[1])); // TODO : new RouteTri + addChild(new RouteTriChaussee(q.corner[1], oldv3, tn.v3)); } else { q = Quad(corner[NW+i], e, corner[SE+i], corner[SW+i]); Vertex oldv1 = te.v1; @@ -49,7 +49,7 @@ bool QuartierQuadAngle::split() { addChild(QuartierTri::factory(seed, 0, te.v1, te.v2, te.v3)); addChild(QuartierQuad::factory(seed, 1, q.corner[0], q.corner[1], q.corner[2], q.corner[3])); addChild(new RouteQuadChaussee(te.v1, te.v3, q.corner[1], q.corner[0])); - addChild(new QuartierTri(q.corner[0], oldv1, te.v1)); // TODO : new RouteTri + addChild(new RouteTriChaussee(te.v1, oldv1, q.corner[0])); } return true; } diff --git a/rules/route/routequadchaussee.cpp b/rules/route/routequadchaussee.cpp index 783a249..633eb3e 100644 --- a/rules/route/routequadchaussee.cpp +++ b/rules/route/routequadchaussee.cpp @@ -33,17 +33,3 @@ void RouteQuadChaussee::triangulation() { addTriangle(new Triangle(corner[NE], corner[NW], corner[SW], 0x36, 0x36, 0x36)); addTriangle(new Triangle(corner[SW], corner[SE], corner[NE], 0x36, 0x36, 0x36)); } - -// Version avec trottoirs. -/*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 2ca8196..a96fd41 100644 --- a/rules/route/routequadchaussee.hh +++ b/rules/route/routequadchaussee.hh @@ -1,5 +1,5 @@ -#ifndef _RULES_ROUTE_HH_ -#define _RULES_ROUTE_HH_ +#ifndef _RULES_ROUTE_QUAD_CHAUSSEE_HH_ +#define _RULES_ROUTE_QUAD_CHAUSSEE_HH_ #include "all_includes.hh" diff --git a/rules/route/routetrichaussee.cpp b/rules/route/routetrichaussee.cpp new file mode 100644 index 0000000..371a894 --- /dev/null +++ b/rules/route/routetrichaussee.cpp @@ -0,0 +1,26 @@ +#include "all_includes.hh" + +RouteTriChaussee::RouteTriChaussee(Vertex left, Vertex top, Vertex right) : Chose() { + addEntropy(left, top, right); + corner[0] = left; + corner[1] = top; + corner[2] = right; +} + +void RouteTriChaussee::getBoundingBoxPoints() { + addBBPoint(corner[0]); + addBBPoint(corner[1]); + addBBPoint(corner[2]); + addBBPoint(corner[0] + Vertex(0,0,1000)); // TODO + addBBPoint(corner[1] + Vertex(0,0,1000)); + addBBPoint(corner[2] + Vertex(0,0,1000)); +} + +bool RouteTriChaussee::split() { + return false; +} + +void RouteTriChaussee::triangulation() { + triangles.reserve(1); + addTriangle(new Triangle(corner[0], corner[1], corner[2], 0x36, 0x36, 0x36)); +} diff --git a/rules/route/routetrichaussee.hh b/rules/route/routetrichaussee.hh new file mode 100644 index 0000000..65dbe11 --- /dev/null +++ b/rules/route/routetrichaussee.hh @@ -0,0 +1,17 @@ +#ifndef _RULES_ROUTE_TRI_CHAUSSEE_HH_ +#define _RULES_ROUTE_TRI_CHAUSSEE__HH_ + +#include "all_includes.hh" + +class RouteTriChaussee : public Chose { + private : + Vertex corner[3]; + + public : + RouteTriChaussee(Vertex left, Vertex top, Vertex right); + virtual bool split(); + virtual void triangulation(); + virtual void getBoundingBoxPoints(); +}; + +#endif