www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit eb9aa2a6b85cacdc4c4fa47fe66835660a253004
parent ae0b4241a1ae2b0269da34284a9452e847daa00b
Author: Yoann <yoann.b87@voila.fr>
Date:   Tue, 10 Jan 2012 16:50:17 +0100

Merge branch 'master' of https://github.com/jsmaniac/2011-m2s3-city-builder

Diffstat:
Mgeometry/quad.cpp | 4++++
Mgeometry/quad.hh | 1+
Mgeometry/triangle.cpp | 9+++++++++
Mgeometry/triangle.hh | 3++-
Mgputriangle.cpp | 13++++---------
Mgputriangle.hh | 7++-----
Mrules/quartier/quartiertri.cpp | 2+-
Mrules/route/routequadchaussee.hh | 2+-
Mrules/route/trottoirquadnormal.hh | 2+-
Mrules/terrain/terrainquadherbe.hh | 2+-
Mrules/terrain/terraintriherbe.hh | 2+-
11 files changed, 27 insertions(+), 20 deletions(-)

diff --git a/geometry/quad.cpp b/geometry/quad.cpp @@ -128,3 +128,7 @@ float Quad::surface() const { Triangle sw(c[SE], c[SW], c[NW]); return ne.surface() + sw.surface(); } + +Quad Quad::offsetNormal(float offset) const { + return ((*this) + Triangle(c[NE], c[SE], c[SW]).normal().setNorm(offset)); +} diff --git a/geometry/quad.hh b/geometry/quad.hh @@ -41,6 +41,7 @@ class Quad { float surface() const; //void cutCornerCorner(Coin from) const; Quad makeParallelogram() const; + Quad offsetNormal(float offset) const; }; diff --git a/geometry/triangle.cpp b/geometry/triangle.cpp @@ -61,3 +61,12 @@ float Triangle::surface() const { float base = Segment(c[LEFT], c[RIGHT]).length(); return (base * hauteur) / 2.f; } + +Vertex Triangle::normal() const { + return ((c[LEFT] - c[TOP]) * (c[RIGHT] - c[TOP])); +} + +Vertex Triangle::normalizedNormal() const { + Vertex v = normal(); + return v / v.norm(); +} diff --git a/geometry/triangle.hh b/geometry/triangle.hh @@ -33,7 +33,8 @@ class Triangle { Triangle inset(CoteTriangle side, float offset) const; Triangle insetLTR(float offset) const; Vertex randomPoint(int seed, int n) const; - void display(); + Vertex normal() const; + Vertex normalizedNormal() const; }; #endif diff --git a/gputriangle.cpp b/gputriangle.cpp @@ -1,19 +1,14 @@ #include "all_includes.hh" GPUTriangle::GPUTriangle(Vertex left, Vertex top, Vertex right, unsigned char _r, unsigned char _g, unsigned char _b) - : c(left, top, right), r(_r), g(_g), b(_b), vnormal(normal(left,top,right)) { + : c(left, top, right), r(_r), g(_g), b(_b), vnormal(c.normalizedNormal()) { } GPUTriangle::GPUTriangle(Triangle _c, unsigned char _r, unsigned char _g, unsigned char _b) - : c(_c), r(_r), g(_g), b(_b), vnormal(normal(c[LEFT], c[TOP], c[RIGHT])) { + : c(_c), r(_r), g(_g), b(_b), vnormal(c.normalizedNormal()) { } -Vertex GPUTriangle::normal(Vertex left, Vertex top, Vertex right) { - Vertex v = (left - top)*(right - top); - return v / v.norm(); -} - -void GPUTriangle::display() { +void GPUTriangle::display() const { View::setColor(r,g,b); glNormal3d(vnormal.x,vnormal.y,vnormal.z); glVertex3d(c[LEFT].x,c[LEFT].y,c[LEFT].z); @@ -21,7 +16,7 @@ void GPUTriangle::display() { glVertex3d(c[RIGHT].x,c[RIGHT].y,c[RIGHT].z); } -void GPUTriangle::displayNormal() { +void GPUTriangle::displayNormal() const { glColor3ub(255,255,0); // Vertex v = (c[0] + c[1] + c[2]) / 3; // glVertex3d(v.x,v.y,v.z); diff --git a/gputriangle.hh b/gputriangle.hh @@ -14,11 +14,8 @@ class GPUTriangle { public : GPUTriangle(Vertex left, Vertex top, Vertex right, unsigned char r, unsigned char g, unsigned char b); GPUTriangle(Triangle c, unsigned char r, unsigned char g, unsigned char b); - void display(); - void displayNormal(); - -private : - Vertex normal(Vertex left, Vertex top, Vertex right); + void display() const; + void displayNormal() const; }; #endif diff --git a/rules/quartier/quartiertri.cpp b/rules/quartier/quartiertri.cpp @@ -25,7 +25,7 @@ Chose* QuartierTri::factory(int seed, int n, Triangle c) { return new QuartierTriTrapeze(c); } } else { - return new TerrainTriHerbe(c); + return new BatimentTri(c); } } diff --git a/rules/route/routequadchaussee.hh b/rules/route/routequadchaussee.hh @@ -8,7 +8,7 @@ class RouteQuadChaussee : public Chose { Quad c; public : - RouteQuadChaussee(Quad c); + RouteQuadChaussee(Quad _c); virtual void triangulation(); virtual void getBoundingBoxPoints(); }; diff --git a/rules/route/trottoirquadnormal.hh b/rules/route/trottoirquadnormal.hh @@ -9,7 +9,7 @@ class TrottoirQuadNormal : public Chose { float height; public : - TrottoirQuadNormal(Quad c, float height); + TrottoirQuadNormal(Quad _c, float _height); virtual void triangulation(); virtual void getBoundingBoxPoints(); }; diff --git a/rules/terrain/terrainquadherbe.hh b/rules/terrain/terrainquadherbe.hh @@ -9,7 +9,7 @@ class TerrainQuadHerbe : public Chose { Quad c; public : - TerrainQuadHerbe(Quad c); + TerrainQuadHerbe(Quad _c); virtual void triangulation(); virtual void getBoundingBoxPoints(); }; diff --git a/rules/terrain/terraintriherbe.hh b/rules/terrain/terraintriherbe.hh @@ -9,7 +9,7 @@ class TerrainTriHerbe : public Chose { Triangle c; public : - TerrainTriHerbe(Triangle c); + TerrainTriHerbe(Triangle _c); virtual void triangulation(); virtual void getBoundingBoxPoints(); };