diff --git a/geometry/quad.cpp b/geometry/quad.cpp index 2708091..f1d74b6 100644 --- a/geometry/quad.cpp +++ b/geometry/quad.cpp @@ -54,6 +54,19 @@ Quad Quad::makeParallelogram() { return Quad(c[0],c[1],c[2],c[3]); } +float Quad::length(Cardinal cn) { + if(cn == N) + return Segment(c[NW],c[NE]).length(); + else if(cn == S) + return Segment(c[SW],c[SE]).length(); + else if(cn == E) + return Segment(c[NE],c[SE]).length(); + else if(cn == W) + return Segment(c[SW],c[NW]).length(); + + return 0; +} + float Quad::minLengthNS() { return std::min( Segment(c[NW],c[NE]).length(), diff --git a/geometry/quad.hh b/geometry/quad.hh index 2514a7e..37d1ca0 100644 --- a/geometry/quad.hh +++ b/geometry/quad.hh @@ -27,6 +27,7 @@ class Quad { Quad inset(Cardinal side, float offset) const; Quad insetNESW(float offsetN, float offsetE, float offsetS, float offsetW) const; Quad insetNESW(float offset) const; + float length(Cardinal c); float minLengthNS(); float minLengthEW(); float maxLengthNS(); diff --git a/rules/batiment/batimentquadblock.cpp b/rules/batiment/batimentquadblock.cpp index e5dec12..5e6d8d7 100644 --- a/rules/batiment/batimentquadblock.cpp +++ b/rules/batiment/batimentquadblock.cpp @@ -9,6 +9,17 @@ void BatimentQuadBlock::getBoundingBoxPoints() { addBBPoints(c + Vertex(0,0,height)); // TODO } +bool BatimentQuadBlock::split() { + Quad me = c; + Quad ms = c; + Quad mw = c; + Quad mn = c; + + me[NW] = me[NE] + ((me[NW] - me[NW]) / me.length(N))*150; + //TODO les autres côtés. + return false; +} + void BatimentQuadBlock::triangulation() { addGPUOcto(c, c + Vertex(0,0,height), 0xF1, 0xE0, 0xE0); } diff --git a/rules/batiment/batimentquadblock.hh b/rules/batiment/batimentquadblock.hh index c73e639..e1e9cc9 100644 --- a/rules/batiment/batimentquadblock.hh +++ b/rules/batiment/batimentquadblock.hh @@ -11,6 +11,7 @@ class BatimentQuadBlock : public Chose { public : BatimentQuadBlock(Quad c, int height); + virtual bool split(); virtual void triangulation(); virtual void getBoundingBoxPoints(); };