Ajout d'un modèle de toit.

This commit is contained in:
Georges Dupéron 2012-01-19 08:13:39 +01:00
parent d764489f30
commit bacf944684
3 changed files with 15 additions and 7 deletions

View File

@ -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()) {

View File

@ -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() {

View File

@ -13,6 +13,7 @@ public:
virtual void getBoundingBoxPoints();
private:
void pointCentral();
void quatrePoints();
void deuxPoints();
void deuxPointsVerticaux();
void plat();