subidivision de batiment sans routes.

This commit is contained in:
Yoann 2012-01-18 16:57:35 +01:00
parent 876fe13a48
commit c4aea33ba9
2 changed files with 34 additions and 4 deletions

View File

@ -5,11 +5,37 @@ BatimentQuad_::BatimentQuad_(Quad _c) : Chose(), c(_c) {
}
bool BatimentQuad_::split() {
Quad ch = c.offsetNormal(Dimensions::hauteurEtage);
addChild(new ToitQuad(ch, Dimensions::hauteurToit));
Quad q;
if(!isSub)
q = c >> ((c.maxLengthNS() < c.maxLengthEW()) ? 1 : 0);
else
q = c;
int minSurface = 1000000;
if(q.surface() > 2* minSurface) {
Vertex c1 = q[NW] + Vertex(q[NE] - q[NW])/2;
Vertex c2 = q[SW] + Vertex(q[SE] - q[SW])/2;
Quad q1 = Quad(c1,c2,q[SW],q[NW]).inset(E,30);
Quad q2 = Quad(q[NE],q[SE],c2,c1).inset(W,30);
addChild((new BatimentQuad_(q1))->isSubdivision(true));
addChild((new BatimentQuad_(q2))->isSubdivision(true));
}
else {
Quad ch = c.offsetNormal(Dimensions::hauteurEtage);
addChild(new ToitQuad(ch, Dimensions::hauteurToit));
}
return true;
}
BatimentQuad_* BatimentQuad_::isSubdivision(bool val) {
this->isSub = val;
return this;
}
void BatimentQuad_::triangulation() {
Quad ch = c.offsetNormal(Dimensions::hauteurEtage + Dimensions::hauteurToit);
addGPUQuad(ch, Couleurs::toit);

View File

@ -5,16 +5,20 @@
class BatimentQuad_ : public Chose {
Quad c;
public:
bool isSub;
public:
BatimentQuad_(Quad _c);
virtual bool split();
virtual void triangulation();
virtual void getBoundingBoxPoints();
BatimentQuad_* isSubdivision(bool val);
};
class BatimentTri_ : public Chose {
Triangle c;
public:
public:
BatimentTri_(Triangle _c);
virtual bool split();
virtual void triangulation();