subidivision de batiment sans routes.
This commit is contained in:
parent
876fe13a48
commit
c4aea33ba9
|
@ -5,11 +5,37 @@ BatimentQuad_::BatimentQuad_(Quad _c) : Chose(), c(_c) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BatimentQuad_::split() {
|
bool BatimentQuad_::split() {
|
||||||
|
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);
|
Quad ch = c.offsetNormal(Dimensions::hauteurEtage);
|
||||||
addChild(new ToitQuad(ch, Dimensions::hauteurToit));
|
addChild(new ToitQuad(ch, Dimensions::hauteurToit));
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BatimentQuad_* BatimentQuad_::isSubdivision(bool val) {
|
||||||
|
this->isSub = val;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
void BatimentQuad_::triangulation() {
|
void BatimentQuad_::triangulation() {
|
||||||
Quad ch = c.offsetNormal(Dimensions::hauteurEtage + Dimensions::hauteurToit);
|
Quad ch = c.offsetNormal(Dimensions::hauteurEtage + Dimensions::hauteurToit);
|
||||||
addGPUQuad(ch, Couleurs::toit);
|
addGPUQuad(ch, Couleurs::toit);
|
||||||
|
|
|
@ -5,15 +5,19 @@
|
||||||
|
|
||||||
class BatimentQuad_ : public Chose {
|
class BatimentQuad_ : public Chose {
|
||||||
Quad c;
|
Quad c;
|
||||||
|
bool isSub;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BatimentQuad_(Quad _c);
|
BatimentQuad_(Quad _c);
|
||||||
virtual bool split();
|
virtual bool split();
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
virtual void getBoundingBoxPoints();
|
virtual void getBoundingBoxPoints();
|
||||||
|
BatimentQuad_* isSubdivision(bool val);
|
||||||
};
|
};
|
||||||
|
|
||||||
class BatimentTri_ : public Chose {
|
class BatimentTri_ : public Chose {
|
||||||
Triangle c;
|
Triangle c;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BatimentTri_(Triangle _c);
|
BatimentTri_(Triangle _c);
|
||||||
virtual bool split();
|
virtual bool split();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user