From 7e95f5347a4b447516bb53224ef729207899e410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Mon, 12 Dec 2011 01:48:55 +0100 Subject: [PATCH] =?UTF-8?q?Corrections=20sur=20QuadAngle=20(les=20petits?= =?UTF-8?q?=20triangles=20de=20route=20qui=20manquaient=20ont=20=C3=A9t?= =?UTF-8?q?=C3=A9=20ajout=C3=A9s.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rules/chose.cpp | 2 +- rules/quadangle.cpp | 28 ++++++++++++++++++---------- rules/quadangle.hh | 2 ++ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/rules/chose.cpp b/rules/chose.cpp index 7f1c0c2..be0f9f2 100644 --- a/rules/chose.cpp +++ b/rules/chose.cpp @@ -35,4 +35,4 @@ void Chose::display() { } } -unsigned int Chose::initialSeed = 1814949558;//random_seed(); +unsigned int Chose::initialSeed = random_seed(); diff --git a/rules/quadangle.cpp b/rules/quadangle.cpp index b6feda6..88f589f 100644 --- a/rules/quadangle.cpp +++ b/rules/quadangle.cpp @@ -14,6 +14,8 @@ bool QuadAngle::subdivide() { addChild(TileTri::factory(seed, 0, t1.v1, t1.v2, t1.v3)); addChild(TileTri::factory(seed, 1, t2.v1, t2.v2, t2.v3)); addChild(new Route(t1.v1, t1.v3, t2.v1, t2.v3)); + addChild(new TileTri(t2.v3, corner[NE+i], t1.v1)); // TODO : new RouteTri + addChild(new TileTri(t1.v3, corner[SW+i], t2.v1)); // TODO : new RouteTri return true; } } @@ -21,24 +23,30 @@ bool QuadAngle::subdivide() { for (int i = 0; i < 4; i++) { if (Triangle(corner[NW+i], corner[NE+i], corner[SE+i]).angle() <= Angle::d2r(50)) { // "couper ce coin". - Vertex n = (corner[NW+i] + corner[NE+i]) / 2; - Vertex e = (corner[NE+i] + corner[SE+i]) / 2; + Vertex n = Segment(corner[NW+i], corner[NE+i]).randomPos(seed, 0, 40, 60); + Vertex e = Segment(corner[NE+i], corner[SE+i]).randomPos(seed, 1, 40, 60); Triangle tn = Triangle(n, corner[NE+i], corner[SE+i]); Triangle te = Triangle(corner[NW+i], corner[NE+i], e); - Triangle t; Quad q; if (tn.minAngle() > te.minAngle()) { - t = tn; q = Quad(n, corner[SE+i], corner[SW+i], corner[NW+i]); + Vertex oldv3 = tn.v3; + tn.offsetBase(-hrw); + q.offset(E, -hrw); + addChild(TileTri::factory(seed, 0, tn.v1, tn.v2, tn.v3)); + addChild(Quadrilatere::factory(seed, 1, q.corner[0], q.corner[1], q.corner[2], q.corner[3])); + addChild(new Route(tn.v1, tn.v3, q.corner[1], q.corner[0])); + addChild(new TileTri(tn.v3, oldv3, q.corner[1])); // TODO : new RouteTri } else { - t = te; q = Quad(corner[NW+i], e, corner[SE+i], corner[SW+i]); + Vertex oldv1 = te.v1; + te.offsetBase(-hrw); + q.offset(E, -hrw); + addChild(TileTri::factory(seed, 0, te.v1, te.v2, te.v3)); + addChild(Quadrilatere::factory(seed, 1, q.corner[0], q.corner[1], q.corner[2], q.corner[3])); + addChild(new Route(te.v1, te.v3, q.corner[1], q.corner[0])); + addChild(new TileTri(q.corner[0], oldv1, te.v1)); // TODO : new RouteTri } - t.offsetBase(-hrw); - addChild(TileTri::factory(seed, 0, t.v1, t.v2, t.v3)); - q.offset(E, -hrw); - addChild(Quadrilatere::factory(seed, 1, q.corner[0], q.corner[1], q.corner[2], q.corner[3])); - addChild(new Route(t.v1, t.v3, q.corner[1], q.corner[0])); return true; } } diff --git a/rules/quadangle.hh b/rules/quadangle.hh index d3e5c54..5ab47f2 100644 --- a/rules/quadangle.hh +++ b/rules/quadangle.hh @@ -10,6 +10,8 @@ private: public: QuadAngle(Vertex ne, Vertex se, Vertex sw, Vertex nw); virtual bool subdivide(); +private: + void cutAngle(); }; #endif