From 622f0ad3fc9f6a12da81568d921c6053c76bc267 Mon Sep 17 00:00:00 2001 From: Yoann Date: Fri, 6 Jan 2012 10:51:05 +0100 Subject: [PATCH 1/2] Ajout d'une fonction length dans quad qui permet d'avoir uniquement la longeur du segment N, E, S, W. --- geometry/quad.cpp | 13 +++++++++++++ geometry/quad.hh | 1 + 2 files changed, 14 insertions(+) diff --git a/geometry/quad.cpp b/geometry/quad.cpp index c231b40..dddd722 100644 --- a/geometry/quad.cpp +++ b/geometry/quad.cpp @@ -49,6 +49,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 8662dc1..de4e3d8 100644 --- a/geometry/quad.hh +++ b/geometry/quad.hh @@ -26,6 +26,7 @@ class Quad { friend Quad operator+(const Quad& t, const Vertex& v); void offset(Cardinal side, int offset); void offsetNESW(int offsetN, int offsetE, int offsetS, int offsetW); + float length(Cardinal c); float minLengthNS(); float minLengthEW(); float maxLengthNS(); From 8ff03fb150e718249a71a4cfb42f5cd630c75380 Mon Sep 17 00:00:00 2001 From: Yoann Date: Fri, 6 Jan 2012 10:52:10 +0100 Subject: [PATCH 2/2] =?UTF-8?q?D=C3=A9but=20de=20la=20d=C3=A9composition?= =?UTF-8?q?=20des=20blocks=20de=20maison=20en=20murs.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rules/batiment/batimentquadblock.cpp | 11 +++++++++++ rules/batiment/batimentquadblock.hh | 1 + 2 files changed, 12 insertions(+) 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(); };