www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 8d2ac728738df983cf55d9c607c4c40a7457a49b
parent c87e38b4bb5d8de6626c28aa837d6d52b25e6683
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Fri, 13 Jan 2012 16:07:37 +0100

Triangulation correcte des quartiers concaves.

Diffstat:
Mrules/architecture/batiment.cpp | 2++
Mrules/architecture/quartier.cpp | 15++++++++++++---
Mrules/architecture/quartier.hh | 1+
3 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/rules/architecture/batiment.cpp b/rules/architecture/batiment.cpp @@ -0,0 +1,2 @@ +#include "all_includes.hh" + diff --git a/rules/architecture/quartier.cpp b/rules/architecture/quartier.cpp @@ -34,10 +34,9 @@ bool QuartierQuad::split() { void QuartierQuad::triangulation() { if (c.isConcave()) { - // TODO Quad q = c << c.concaveCorner(); - addGPUTriangle(Triangle(q[NE], q[SE], q[SW]), Couleurs::route); - addGPUTriangle(Triangle(q[SW], q[NW], q[NE]), Couleurs::route); + triangulationConcave(Triangle(q[NE], q[SE], q[SW])); + triangulationConcave(Triangle(q[SW], q[NW], q[NE])); } else { Quad ci = c.insetNESW(250 + 140); // TODO : factoriser cette longueur (largeur route + largeur trottoir). Quad cih = ci.offsetNormal(600); // TODO : factoriser cette longueur (hauteur max des bâtiments). @@ -48,6 +47,16 @@ void QuartierQuad::triangulation() { } } +void QuartierQuad::triangulationConcave(Triangle t) { + // Même code que QuartierTri::triangulation. + Triangle ci = t.insetLTR(250 + 140); // TODO : factoriser cette longueur (largeur route + largeur trottoir). + Triangle cih = ci.offsetNormal(600); // TODO : factoriser cette longueur (hauteur max des bâtiments). + addGPUTriangle(t, Couleurs::route); + addGPUTriangle(cih, Couleurs::toit); + for (int i = 0; i < 3; i++) + addGPUQuad(Quad(ci[LEFT+i], ci[TOP+i], cih[TOP+i], cih[LEFT+i]), Couleurs::mur); +} + void QuartierQuad::concave() { Quad q = c << c.concaveCorner(); addChild(new QuartierTri(Triangle(q[NE], q[SE], q[SW]))); diff --git a/rules/architecture/quartier.hh b/rules/architecture/quartier.hh @@ -12,6 +12,7 @@ public: virtual bool split(); virtual void triangulation(); private: + void triangulationConcave(Triangle t); void concave(); void angleAngle(); void angleCote();