33 lines
828 B
C++
33 lines
828 B
C++
#include "all_includes.hh"
|
|
|
|
Quadrilatere::Quadrilatere(Vertex ne, Vertex se, Vertex sw, Vertex nw) : Chose() {
|
|
addEntropy(ne, se, sw, nw);
|
|
corner[NE] = ne;
|
|
corner[SE] = se;
|
|
corner[SW] = sw;
|
|
corner[NW] = nw;
|
|
triangulation();
|
|
}
|
|
|
|
Chose* Quadrilatere::factory(Vertex ne, Vertex se, Vertex sw, Vertex nw) {
|
|
if (Segment(ne,se).length() < 2500 ||
|
|
Segment(se,sw).length() < 2500 ||
|
|
Segment(sw,nw).length() < 2500 ||
|
|
Segment(nw,ne).length() < 2500) {
|
|
return new Batiment(ne, se, sw, nw);
|
|
} else {
|
|
return new QuadCroix(ne, se, sw, nw);
|
|
}
|
|
}
|
|
|
|
bool Quadrilatere::subdivide() {
|
|
return false;
|
|
}
|
|
|
|
void Quadrilatere::triangulation() {
|
|
triangles.reserve(2);
|
|
addTriangle(new Triangle(corner[NE], corner[NW], corner[SW], 0xc0, 0xc0, 0xc0));
|
|
addTriangle(new Triangle(corner[SW], corner[SE], corner[NE], 0xc0, 0xc0, 0xc0));
|
|
}
|
|
|