Ajout de Quad::offsetNormal .
This commit is contained in:
parent
474ab3e706
commit
f73c270ce3
|
@ -128,3 +128,7 @@ float Quad::surface() const {
|
||||||
Triangle sw(c[SE], c[SW], c[NW]);
|
Triangle sw(c[SE], c[SW], c[NW]);
|
||||||
return ne.surface() + sw.surface();
|
return ne.surface() + sw.surface();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Quad Quad::offsetNormal(float offset) const {
|
||||||
|
return ((*this) + Triangle(c[NE], c[SE], c[SW]).normal().setNorm(offset));
|
||||||
|
}
|
||||||
|
|
|
@ -41,6 +41,7 @@ class Quad {
|
||||||
float surface() const;
|
float surface() const;
|
||||||
//void cutCornerCorner(Coin from) const;
|
//void cutCornerCorner(Coin from) const;
|
||||||
Quad makeParallelogram() const;
|
Quad makeParallelogram() const;
|
||||||
|
Quad offsetNormal(float offset) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -61,3 +61,12 @@ float Triangle::surface() const {
|
||||||
float base = Segment(c[LEFT], c[RIGHT]).length();
|
float base = Segment(c[LEFT], c[RIGHT]).length();
|
||||||
return (base * hauteur) / 2.f;
|
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();
|
||||||
|
}
|
||||||
|
|
|
@ -33,7 +33,8 @@ class Triangle {
|
||||||
Triangle inset(CoteTriangle side, float offset) const;
|
Triangle inset(CoteTriangle side, float offset) const;
|
||||||
Triangle insetLTR(float offset) const;
|
Triangle insetLTR(float offset) const;
|
||||||
Vertex randomPoint(int seed, int n) const;
|
Vertex randomPoint(int seed, int n) const;
|
||||||
void display();
|
Vertex normal() const;
|
||||||
|
Vertex normalizedNormal() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,19 +1,14 @@
|
||||||
#include "all_includes.hh"
|
#include "all_includes.hh"
|
||||||
|
|
||||||
GPUTriangle::GPUTriangle(Vertex left, Vertex top, Vertex right, unsigned char _r, unsigned char _g, unsigned char _b)
|
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)
|
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) {
|
void GPUTriangle::display() const {
|
||||||
Vertex v = (left - top)*(right - top);
|
|
||||||
return v / v.norm();
|
|
||||||
}
|
|
||||||
|
|
||||||
void GPUTriangle::display() {
|
|
||||||
View::setColor(r,g,b);
|
View::setColor(r,g,b);
|
||||||
glNormal3d(vnormal.x,vnormal.y,vnormal.z);
|
glNormal3d(vnormal.x,vnormal.y,vnormal.z);
|
||||||
glVertex3d(c[LEFT].x,c[LEFT].y,c[LEFT].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);
|
glVertex3d(c[RIGHT].x,c[RIGHT].y,c[RIGHT].z);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GPUTriangle::displayNormal() {
|
void GPUTriangle::displayNormal() const {
|
||||||
glColor3ub(255,255,0);
|
glColor3ub(255,255,0);
|
||||||
// Vertex v = (c[0] + c[1] + c[2]) / 3;
|
// Vertex v = (c[0] + c[1] + c[2]) / 3;
|
||||||
// glVertex3d(v.x,v.y,v.z);
|
// glVertex3d(v.x,v.y,v.z);
|
||||||
|
|
|
@ -14,11 +14,8 @@ class GPUTriangle {
|
||||||
public :
|
public :
|
||||||
GPUTriangle(Vertex left, Vertex top, Vertex right, unsigned char r, unsigned char g, unsigned char b);
|
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);
|
GPUTriangle(Triangle c, unsigned char r, unsigned char g, unsigned char b);
|
||||||
void display();
|
void display() const;
|
||||||
void displayNormal();
|
void displayNormal() const;
|
||||||
|
|
||||||
private :
|
|
||||||
Vertex normal(Vertex left, Vertex top, Vertex right);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -25,7 +25,7 @@ Chose* QuartierTri::factory(int seed, int n, Triangle c) {
|
||||||
return new QuartierTriTrapeze(c);
|
return new QuartierTriTrapeze(c);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return new TerrainTriHerbe(c);
|
return new BatimentTri(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ class RouteQuadChaussee : public Chose {
|
||||||
Quad c;
|
Quad c;
|
||||||
|
|
||||||
public :
|
public :
|
||||||
RouteQuadChaussee(Quad c);
|
RouteQuadChaussee(Quad _c);
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
virtual void getBoundingBoxPoints();
|
virtual void getBoundingBoxPoints();
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,7 +9,7 @@ class TrottoirQuadNormal : public Chose {
|
||||||
float height;
|
float height;
|
||||||
|
|
||||||
public :
|
public :
|
||||||
TrottoirQuadNormal(Quad c, float height);
|
TrottoirQuadNormal(Quad _c, float _height);
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
virtual void getBoundingBoxPoints();
|
virtual void getBoundingBoxPoints();
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,7 +9,7 @@ class TerrainQuadHerbe : public Chose {
|
||||||
Quad c;
|
Quad c;
|
||||||
|
|
||||||
public :
|
public :
|
||||||
TerrainQuadHerbe(Quad c);
|
TerrainQuadHerbe(Quad _c);
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
virtual void getBoundingBoxPoints();
|
virtual void getBoundingBoxPoints();
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,7 +9,7 @@ class TerrainTriHerbe : public Chose {
|
||||||
Triangle c;
|
Triangle c;
|
||||||
|
|
||||||
public :
|
public :
|
||||||
TerrainTriHerbe(Triangle c);
|
TerrainTriHerbe(Triangle _c);
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
virtual void getBoundingBoxPoints();
|
virtual void getBoundingBoxPoints();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user