Renomage de la fonction subdivide en split et ajout de la fonction de
merge.
This commit is contained in:
parent
d171be9892
commit
80aad0bd14
4
main.cpp
4
main.cpp
|
@ -10,7 +10,7 @@
|
||||||
// -> bâtiment dans le "bout" le plus "étroit", et lignes dans une seule direction dans le reste.
|
// -> bâtiment dans le "bout" le plus "étroit", et lignes dans une seule direction dans le reste.
|
||||||
|
|
||||||
void recursiveSubdivide(Chose* c) {
|
void recursiveSubdivide(Chose* c) {
|
||||||
if (c->subdivide()) {
|
if (c->split()) {
|
||||||
std::vector<Chose*>::iterator it;
|
std::vector<Chose*>::iterator it;
|
||||||
for (it = c->children.begin(); it != c->children.end(); ++it) {
|
for (it = c->children.begin(); it != c->children.end(); ++it) {
|
||||||
recursiveSubdivide(*it);
|
recursiveSubdivide(*it);
|
||||||
|
@ -27,7 +27,7 @@ int main() {
|
||||||
Vertex sw(0, 0, 0);
|
Vertex sw(0, 0, 0);
|
||||||
Vertex nw(0, size, 0);
|
Vertex nw(0, size, 0);
|
||||||
Chose* c = QuartierQuad::factory(Chose::initialSeed, 0, ne, se, sw, nw);
|
Chose* c = QuartierQuad::factory(Chose::initialSeed, 0, ne, se, sw, nw);
|
||||||
// c->subdivide();
|
// c->split();
|
||||||
recursiveSubdivide(c);
|
recursiveSubdivide(c);
|
||||||
|
|
||||||
View *v = new View(c);
|
View *v = new View(c);
|
||||||
|
|
|
@ -10,6 +10,13 @@ BatimentQuad::BatimentQuad(Vertex ne, Vertex se, Vertex sw, Vertex nw, Cardinal
|
||||||
triangulation();
|
triangulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BatimentQuad::~BatimentQuad() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
}
|
||||||
|
|
||||||
int BatimentQuad::width() { return this->ne.x - this->sw.x; }
|
int BatimentQuad::width() { return this->ne.x - this->sw.x; }
|
||||||
int BatimentQuad::height() { return this->ne.y - this->sw.y; }
|
int BatimentQuad::height() { return this->ne.y - this->sw.y; }
|
||||||
|
|
||||||
|
@ -18,11 +25,19 @@ std::vector<Vertex*> BatimentQuad::getBoundingBoxPoints() const {
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BatimentQuad::subdivide() {
|
bool BatimentQuad::split() {
|
||||||
factory(1,1,ne,se,sw,nw);
|
factory(1,1,ne,se,sw,nw);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BatimentQuad::merge() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
Chose* BatimentQuad::factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw) {
|
Chose* BatimentQuad::factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw) {
|
||||||
int th = 20; // Terrain height.
|
int th = 20; // Terrain height.
|
||||||
Quad q = Quad(ne,se,sw,nw);
|
Quad q = Quad(ne,se,sw,nw);
|
||||||
|
|
|
@ -17,9 +17,11 @@ class BatimentQuad : public Chose {
|
||||||
static const int maxHeight = 800;
|
static const int maxHeight = 800;
|
||||||
|
|
||||||
BatimentQuad(Vertex ne, Vertex se, Vertex sw, Vertex nw, Cardinal door);
|
BatimentQuad(Vertex ne, Vertex se, Vertex sw, Vertex nw, Cardinal door);
|
||||||
|
virtual ~BatimentQuad();
|
||||||
int width();
|
int width();
|
||||||
int height();
|
int height();
|
||||||
virtual bool subdivide();
|
virtual bool split();
|
||||||
|
virtual bool merge();
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
Chose* factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
Chose* factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
||||||
|
|
|
@ -5,6 +5,13 @@ BatimentQuadJardin::BatimentQuadJardin(Vertex ne, Vertex se, Vertex sw, Vertex n
|
||||||
triangulation();
|
triangulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BatimentQuadJardin::~BatimentQuadJardin() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
}
|
||||||
|
|
||||||
int BatimentQuadJardin::width() { return this->ne.x - this->sw.x; }
|
int BatimentQuadJardin::width() { return this->ne.x - this->sw.x; }
|
||||||
|
|
||||||
int BatimentQuadJardin::height() { return this->ne.y - this->sw.y; }
|
int BatimentQuadJardin::height() { return this->ne.y - this->sw.y; }
|
||||||
|
@ -14,11 +21,19 @@ std::vector<Vertex*> BatimentQuadJardin::getBoundingBoxPoints() const {
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BatimentQuadJardin::subdivide() {
|
bool BatimentQuadJardin::split() {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BatimentQuadJardin::merge() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void BatimentQuadJardin::triangulation() {
|
void BatimentQuadJardin::triangulation() {
|
||||||
triangles.reserve(2);
|
triangles.reserve(2);
|
||||||
|
|
||||||
|
|
|
@ -16,9 +16,11 @@ class BatimentQuadJardin : public Chose {
|
||||||
static const int maxHeight = 800;
|
static const int maxHeight = 800;
|
||||||
|
|
||||||
BatimentQuadJardin(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
BatimentQuadJardin(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
|
virtual ~BatimentQuadJardin();
|
||||||
int width();
|
int width();
|
||||||
int height();
|
int height();
|
||||||
virtual bool subdivide();
|
virtual bool split();
|
||||||
|
virtual bool merge();
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
Chose* factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
Chose* factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
||||||
|
|
|
@ -5,6 +5,13 @@ BatimentQuadMaison::BatimentQuadMaison(Vertex ne, Vertex se, Vertex sw, Vertex n
|
||||||
triangulation();
|
triangulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BatimentQuadMaison::~BatimentQuadMaison() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
}
|
||||||
|
|
||||||
int BatimentQuadMaison::width() { return this->ne.x - this->sw.x; }
|
int BatimentQuadMaison::width() { return this->ne.x - this->sw.x; }
|
||||||
|
|
||||||
int BatimentQuadMaison::height() { return this->ne.y - this->sw.y; }
|
int BatimentQuadMaison::height() { return this->ne.y - this->sw.y; }
|
||||||
|
@ -14,11 +21,19 @@ std::vector<Vertex*> BatimentQuadMaison::getBoundingBoxPoints() const {
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BatimentQuadMaison::subdivide() {
|
bool BatimentQuadMaison::split() {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BatimentQuadMaison::merge() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void BatimentQuadMaison::triangulation() {
|
void BatimentQuadMaison::triangulation() {
|
||||||
triangles.reserve(12);
|
triangles.reserve(12);
|
||||||
|
|
||||||
|
|
|
@ -16,9 +16,11 @@ class BatimentQuadMaison : public Chose {
|
||||||
static const int maxHeight = 800;
|
static const int maxHeight = 800;
|
||||||
|
|
||||||
BatimentQuadMaison(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
BatimentQuadMaison(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
|
virtual ~BatimentQuadMaison();
|
||||||
int width();
|
int width();
|
||||||
int height();
|
int height();
|
||||||
virtual bool subdivide();
|
virtual bool split();
|
||||||
|
virtual bool merge();
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
Chose* factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
Chose* factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
||||||
|
|
|
@ -16,7 +16,8 @@ class Chose {
|
||||||
|
|
||||||
public :
|
public :
|
||||||
void display();
|
void display();
|
||||||
virtual bool subdivide() = 0;
|
virtual bool split() = 0;
|
||||||
|
virtual bool merge() = 0;
|
||||||
|
|
||||||
protected :
|
protected :
|
||||||
Chose();
|
Chose();
|
||||||
|
|
|
@ -8,6 +8,13 @@ QuartierQuad::QuartierQuad(Vertex ne, Vertex se, Vertex sw, Vertex nw) : Chose()
|
||||||
corner[NW] = nw;
|
corner[NW] = nw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QuartierQuad::~QuartierQuad() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<Vertex*> QuartierQuad::getBoundingBoxPoints() const {
|
std::vector<Vertex*> QuartierQuad::getBoundingBoxPoints() const {
|
||||||
std::vector<Vertex*> list;
|
std::vector<Vertex*> list;
|
||||||
return list;
|
return list;
|
||||||
|
@ -38,10 +45,18 @@ Chose* QuartierQuad::factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, V
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QuartierQuad::subdivide() {
|
bool QuartierQuad::split() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QuartierQuad::merge() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void QuartierQuad::triangulation() {
|
void QuartierQuad::triangulation() {
|
||||||
triangles.reserve(2);
|
triangles.reserve(2);
|
||||||
addTriangle(new Triangle(corner[NE], corner[NW], corner[SW], 0xc0, 0xc0, 0xc0));
|
addTriangle(new Triangle(corner[NE], corner[NW], corner[SW], 0xc0, 0xc0, 0xc0));
|
||||||
|
|
|
@ -9,7 +9,9 @@ public:
|
||||||
Vertex corner[4];
|
Vertex corner[4];
|
||||||
public:
|
public:
|
||||||
QuartierQuad(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
QuartierQuad(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
virtual bool subdivide();
|
virtual ~QuartierQuad();
|
||||||
|
virtual bool split();
|
||||||
|
virtual bool merge();
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
static Chose* factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
static Chose* factory(int seed, int n, Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
||||||
|
|
|
@ -4,12 +4,19 @@ QuartierQuadAngle::QuartierQuadAngle(Vertex ne, Vertex se, Vertex sw, Vertex nw)
|
||||||
triangulation();
|
triangulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QuartierQuadAngle::~QuartierQuadAngle() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<Vertex*> QuartierQuadAngle::getBoundingBoxPoints() const {
|
std::vector<Vertex*> QuartierQuadAngle::getBoundingBoxPoints() const {
|
||||||
std::vector<Vertex*> list;
|
std::vector<Vertex*> list;
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QuartierQuadAngle::subdivide() {
|
bool QuartierQuadAngle::split() {
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
if (Triangle(corner[NW+i], corner[NE+i], corner[SE+i]).angle() >= Angle::d2r(130)) {
|
if (Triangle(corner[NW+i], corner[NE+i], corner[SE+i]).angle() >= Angle::d2r(130)) {
|
||||||
Triangle t1(corner[NE+i], corner[SE+i], corner[SW+i]);
|
Triangle t1(corner[NE+i], corner[SE+i], corner[SW+i]);
|
||||||
|
@ -59,3 +66,11 @@ bool QuartierQuadAngle::subdivide() {
|
||||||
addChild(new TerrainQuadHerbe(corner[NE], corner[SE], corner[SW], corner[NW]));
|
addChild(new TerrainQuadHerbe(corner[NE], corner[SE], corner[SW], corner[NW]));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QuartierQuadAngle::merge() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -10,7 +10,9 @@ class QuartierQuadAngle : public QuartierQuad {
|
||||||
|
|
||||||
public :
|
public :
|
||||||
QuartierQuadAngle(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
QuartierQuadAngle(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
virtual bool subdivide();
|
virtual ~QuartierQuadAngle();
|
||||||
|
virtual bool split();
|
||||||
|
virtual bool merge();
|
||||||
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
||||||
|
|
||||||
private :
|
private :
|
||||||
|
|
|
@ -3,12 +3,19 @@
|
||||||
QuartierQuadCarre::QuartierQuadCarre(Vertex ne, Vertex se, Vertex sw, Vertex nw) : QuartierQuad(ne, se, sw, nw) {
|
QuartierQuadCarre::QuartierQuadCarre(Vertex ne, Vertex se, Vertex sw, Vertex nw) : QuartierQuad(ne, se, sw, nw) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QuartierQuadCarre::~QuartierQuadCarre() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<Vertex*> QuartierQuadCarre::getBoundingBoxPoints() const {
|
std::vector<Vertex*> QuartierQuadCarre::getBoundingBoxPoints() const {
|
||||||
std::vector<Vertex*> list;
|
std::vector<Vertex*> list;
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QuartierQuadCarre::subdivide() {
|
bool QuartierQuadCarre::split() {
|
||||||
Vertex middle[4];
|
Vertex middle[4];
|
||||||
Quad q[4];
|
Quad q[4];
|
||||||
|
|
||||||
|
@ -30,3 +37,11 @@ bool QuartierQuadCarre::subdivide() {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QuartierQuadCarre::merge() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -10,7 +10,9 @@ class QuartierQuadCarre : public QuartierQuad {
|
||||||
|
|
||||||
public :
|
public :
|
||||||
QuartierQuadCarre(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
QuartierQuadCarre(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
virtual bool subdivide();
|
virtual ~QuartierQuadCarre();
|
||||||
|
virtual bool split();
|
||||||
|
virtual bool merge();
|
||||||
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,12 +3,19 @@
|
||||||
QuartierQuadRect::QuartierQuadRect(Vertex ne, Vertex se, Vertex sw, Vertex nw) : QuartierQuad(ne, se, sw, nw) {
|
QuartierQuadRect::QuartierQuadRect(Vertex ne, Vertex se, Vertex sw, Vertex nw) : QuartierQuad(ne, se, sw, nw) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QuartierQuadRect::~QuartierQuadRect() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<Vertex*> QuartierQuadRect::getBoundingBoxPoints() const {
|
std::vector<Vertex*> QuartierQuadRect::getBoundingBoxPoints() const {
|
||||||
std::vector<Vertex*> list;
|
std::vector<Vertex*> list;
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QuartierQuadRect::subdivide() {
|
bool QuartierQuadRect::split() {
|
||||||
Vertex n = Segment(corner[NW], corner[NE]).randomPos(seed, 0, 33, 67);
|
Vertex n = Segment(corner[NW], corner[NE]).randomPos(seed, 0, 33, 67);
|
||||||
Vertex s = Segment(corner[SE], corner[SW]).randomPos(seed, 1, 33, 67);
|
Vertex s = Segment(corner[SE], corner[SW]).randomPos(seed, 1, 33, 67);
|
||||||
|
|
||||||
|
@ -22,3 +29,11 @@ bool QuartierQuadRect::subdivide() {
|
||||||
addChild(QuartierQuad::factory(seed, 3, qw.corner[0], qw.corner[1], qw.corner[2], qw.corner[3]));
|
addChild(QuartierQuad::factory(seed, 3, qw.corner[0], qw.corner[1], qw.corner[2], qw.corner[3]));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QuartierQuadRect::merge() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -10,7 +10,9 @@ class QuartierQuadRect : public QuartierQuad {
|
||||||
|
|
||||||
public :
|
public :
|
||||||
QuartierQuadRect(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
QuartierQuadRect(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
virtual bool subdivide();
|
virtual ~QuartierQuadRect();
|
||||||
|
virtual bool split();
|
||||||
|
virtual bool merge();
|
||||||
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,13 @@ QuartierTri::QuartierTri(Vertex left, Vertex top, Vertex right) : Chose() {
|
||||||
triangulation();
|
triangulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QuartierTri::~QuartierTri() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<Vertex*> QuartierTri::getBoundingBoxPoints() const {
|
std::vector<Vertex*> QuartierTri::getBoundingBoxPoints() const {
|
||||||
std::vector<Vertex*> list;
|
std::vector<Vertex*> list;
|
||||||
return list;
|
return list;
|
||||||
|
@ -20,10 +27,18 @@ Chose* QuartierTri::factory(int seed, int n, Vertex left, Vertex top, Vertex rig
|
||||||
return new QuartierTri(left, top, right);
|
return new QuartierTri(left, top, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QuartierTri::subdivide() {
|
bool QuartierTri::split() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QuartierTri::merge() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void QuartierTri::triangulation() {
|
void QuartierTri::triangulation() {
|
||||||
triangles.reserve(1);
|
triangles.reserve(1);
|
||||||
addTriangle(new Triangle(corner[0], corner[1], corner[2], 0xf0, 0xc0, 0xc0));
|
addTriangle(new Triangle(corner[0], corner[1], corner[2], 0xf0, 0xc0, 0xc0));
|
||||||
|
|
|
@ -10,7 +10,9 @@ class QuartierTri : public Chose {
|
||||||
|
|
||||||
public :
|
public :
|
||||||
QuartierTri(Vertex left, Vertex top, Vertex right);
|
QuartierTri(Vertex left, Vertex top, Vertex right);
|
||||||
virtual bool subdivide();
|
virtual ~QuartierTri();
|
||||||
|
virtual bool split();
|
||||||
|
virtual bool merge();
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
static Chose* factory(int seed, int n, Vertex left, Vertex top, Vertex right);
|
static Chose* factory(int seed, int n, Vertex left, Vertex top, Vertex right);
|
||||||
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
||||||
|
|
|
@ -5,16 +5,31 @@ RouteQuadCarrefour::RouteQuadCarrefour(Vertex ne, Vertex se, Vertex sw, Vertex n
|
||||||
triangulation();
|
triangulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RouteQuadCarrefour::~RouteQuadCarrefour() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<Vertex*> RouteQuadCarrefour::getBoundingBoxPoints() const {
|
std::vector<Vertex*> RouteQuadCarrefour::getBoundingBoxPoints() const {
|
||||||
std::vector<Vertex*> list;
|
std::vector<Vertex*> list;
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RouteQuadCarrefour::subdivide() {
|
bool RouteQuadCarrefour::split() {
|
||||||
// TODO
|
// TODO
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RouteQuadCarrefour::merge() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void RouteQuadCarrefour::triangulation() {
|
void RouteQuadCarrefour::triangulation() {
|
||||||
triangles.reserve(2);
|
triangles.reserve(2);
|
||||||
addTriangle(new Triangle(ne, nw, sw, 0x36, 0x36, 0x36));
|
addTriangle(new Triangle(ne, nw, sw, 0x36, 0x36, 0x36));
|
||||||
|
|
|
@ -12,7 +12,9 @@ class RouteQuadCarrefour : public Chose {
|
||||||
|
|
||||||
public :
|
public :
|
||||||
RouteQuadCarrefour(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
RouteQuadCarrefour(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
virtual bool subdivide();
|
virtual ~RouteQuadCarrefour();
|
||||||
|
virtual bool split();
|
||||||
|
virtual bool merge();
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,16 +4,31 @@ RouteQuadChaussee::RouteQuadChaussee(Vertex ne, Vertex se, Vertex sw, Vertex nw)
|
||||||
triangulation();
|
triangulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RouteQuadChaussee::~RouteQuadChaussee() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<Vertex*> RouteQuadChaussee::getBoundingBoxPoints() const {
|
std::vector<Vertex*> RouteQuadChaussee::getBoundingBoxPoints() const {
|
||||||
std::vector<Vertex*> list;
|
std::vector<Vertex*> list;
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RouteQuadChaussee::subdivide() {
|
bool RouteQuadChaussee::split() {
|
||||||
// TODO
|
// TODO
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RouteQuadChaussee::merge() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void RouteQuadChaussee::triangulation() {
|
void RouteQuadChaussee::triangulation() {
|
||||||
triangles.reserve(2);
|
triangles.reserve(2);
|
||||||
addTriangle(new Triangle(ne, nw, sw, 0x36, 0x36, 0x36));
|
addTriangle(new Triangle(ne, nw, sw, 0x36, 0x36, 0x36));
|
||||||
|
|
|
@ -12,7 +12,9 @@ class RouteQuadChaussee : public Chose {
|
||||||
|
|
||||||
public :
|
public :
|
||||||
RouteQuadChaussee(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
RouteQuadChaussee(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
virtual bool subdivide();
|
virtual ~RouteQuadChaussee();
|
||||||
|
virtual bool split();
|
||||||
|
virtual bool merge();
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,16 +10,31 @@ TrottoirQuadNormal::TrottoirQuadNormal(Vertex ne, Vertex se, Vertex sw, Vertex n
|
||||||
triangulation();
|
triangulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TrottoirQuadNormal::~TrottoirQuadNormal() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<Vertex*> TrottoirQuadNormal::getBoundingBoxPoints() const {
|
std::vector<Vertex*> TrottoirQuadNormal::getBoundingBoxPoints() const {
|
||||||
std::vector<Vertex*> list;
|
std::vector<Vertex*> list;
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TrottoirQuadNormal::subdivide() {
|
bool TrottoirQuadNormal::split() {
|
||||||
// TODO
|
// TODO
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TrottoirQuadNormal::merge() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void TrottoirQuadNormal::triangulation() {
|
void TrottoirQuadNormal::triangulation() {
|
||||||
Vertex h = Vertex(0,0,height);
|
Vertex h = Vertex(0,0,height);
|
||||||
Quad q = Quad(ne,se,sw,nw);
|
Quad q = Quad(ne,se,sw,nw);
|
||||||
|
|
|
@ -14,7 +14,9 @@ class TrottoirQuadNormal : public Chose {
|
||||||
|
|
||||||
public :
|
public :
|
||||||
TrottoirQuadNormal(Vertex ne, Vertex se, Vertex sw, Vertex nw, int height, Cardinal border);
|
TrottoirQuadNormal(Vertex ne, Vertex se, Vertex sw, Vertex nw, int height, Cardinal border);
|
||||||
virtual bool subdivide();
|
virtual ~TrottoirQuadNormal();
|
||||||
|
virtual bool split();
|
||||||
|
virtual bool merge();
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,6 +9,13 @@ TerrainQuadHerbe::TerrainQuadHerbe(Vertex ne, Vertex se, Vertex sw, Vertex nw) :
|
||||||
triangulation();
|
triangulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TerrainQuadHerbe::~TerrainQuadHerbe() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<Vertex*> TerrainQuadHerbe::getBoundingBoxPoints() const {
|
std::vector<Vertex*> TerrainQuadHerbe::getBoundingBoxPoints() const {
|
||||||
std::vector<Vertex*> list;
|
std::vector<Vertex*> list;
|
||||||
return list;
|
return list;
|
||||||
|
@ -23,10 +30,18 @@ TerrainQuadHerbe::TerrainQuadHerbe(int red, Vertex ne, Vertex se, Vertex sw, Ver
|
||||||
triangulation();
|
triangulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TerrainQuadHerbe::subdivide() {
|
bool TerrainQuadHerbe::split() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TerrainQuadHerbe::merge() {
|
||||||
|
for(unsigned int i = 0; i < children.size(); i++)
|
||||||
|
delete(children[i]);
|
||||||
|
children.clear();
|
||||||
|
triangles.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void TerrainQuadHerbe::triangulation() {
|
void TerrainQuadHerbe::triangulation() {
|
||||||
triangles.reserve(2);
|
triangles.reserve(2);
|
||||||
addTriangle(new Triangle(corner[NE], corner[NW], corner[SW], red, 0xaa, 0x22));
|
addTriangle(new Triangle(corner[NE], corner[NW], corner[SW], red, 0xaa, 0x22));
|
||||||
|
|
|
@ -12,7 +12,9 @@ class TerrainQuadHerbe : public Chose {
|
||||||
public :
|
public :
|
||||||
TerrainQuadHerbe(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
TerrainQuadHerbe(Vertex ne, Vertex se, Vertex sw, Vertex nw);
|
||||||
TerrainQuadHerbe(int red, Vertex ne, Vertex se, Vertex sw, Vertex nw); // DEBUG
|
TerrainQuadHerbe(int red, Vertex ne, Vertex se, Vertex sw, Vertex nw); // DEBUG
|
||||||
virtual bool subdivide();
|
virtual ~TerrainQuadHerbe();
|
||||||
|
virtual bool split();
|
||||||
|
virtual bool merge();
|
||||||
virtual void triangulation();
|
virtual void triangulation();
|
||||||
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
virtual std::vector<Vertex*> getBoundingBoxPoints() const;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user