www

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

commit bacf9446849125d4cb91e224bdcacdd9c5431526
parent d764489f305ba5d174ddd25a80272d26db0abe7f
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Thu, 19 Jan 2012 08:13:39 +0100

Ajout d'un modèle de toit.

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

diff --git a/rules/architecture/batiment.cpp b/rules/architecture/batiment.cpp @@ -6,7 +6,7 @@ BatimentQuad_::BatimentQuad_(Quad _c, bool _isSub, bool _we, bool _ws, bool _ww, } bool BatimentQuad_::split() { - int minSurface = 100 * 100 * 10; + int minSurface = 100 * 100 * 100; Quad q = c; //Quad q = c << c.maxLengthSide(); if(c.maxLengthNS() < c.maxLengthEW()) { diff --git a/rules/architecture/toit.cpp b/rules/architecture/toit.cpp @@ -12,12 +12,12 @@ void ToitQuad::getBoundingBoxPoints() { } void ToitQuad::triangulation() { - switch (hash2(seed, -1) % 4) { + switch (hash2(seed, -1) % 5) { case 0: pointCentral(); break; - // TODO : deuxPoints() et deuxPointsVerticaux() ne génèrent pas des quad où les 4 points sont sur le même plan. - case 1: deuxPoints(); break; - case 2: deuxPointsVerticaux(); break; - case 3: + case 1: quatrePoints(); break; + case 2: deuxPoints(); break; + case 3: deuxPointsVerticaux(); break; + case 4: default: plat(); break; } } @@ -29,6 +29,13 @@ void ToitQuad::pointCentral() { addGPUTriangle(c[SE+i], center, c[NE+i], Couleurs::toit); } +void ToitQuad::quatrePoints() { + Quad ch = c.offsetNormal(height).insetNESW(c.minLength() / 3.f); // TODO : insetProportional + addGPUQuad(ch, Couleurs::toit); + for (int i = 0; i < 4; i++) + addGPUQuad(ch[NE+i], c[NE+i], c[SE+i], ch[SE+i], Couleurs::toit); +} + void ToitQuad::deuxPoints() { // Orienter c dans le sens de la longueur d'est en ouest. Quad q = c >> ((c.maxLengthNS() > c.maxLengthEW()) ? 1 : 0); @@ -111,7 +118,7 @@ void ToitTri::troisPoints() { Triangle th = c.offsetNormal(height).insetLTR(c.minLength() / 3.f); addGPUTriangle(th, Couleurs::toit); for (int i = 0; i < 3; i++) - addGPUQuad(c[LEFT], c[TOP], th[TOP], th[LEFT], Couleurs::toit); + addGPUQuad(c[LEFT+i], c[TOP+i], th[TOP+i], th[LEFT+i], Couleurs::toit); } void ToitTri::unPointVertical() { diff --git a/rules/architecture/toit.hh b/rules/architecture/toit.hh @@ -13,6 +13,7 @@ public: virtual void getBoundingBoxPoints(); private: void pointCentral(); + void quatrePoints(); void deuxPoints(); void deuxPointsVerticaux(); void plat();