46 lines
1.5 KiB
C++
46 lines
1.5 KiB
C++
#include "all_includes.hh"
|
|
|
|
TileTri::TileTri(Vertex left, Vertex top, Vertex right) : Chose() {
|
|
addEntropy(left, top, right);
|
|
corner[0] = left;
|
|
corner[1] = top;
|
|
corner[2] = right;
|
|
triangulation();
|
|
}
|
|
|
|
Chose* TileTri::factory(int seed, int n, Vertex left, Vertex top, Vertex right) {
|
|
(void)seed;
|
|
(void)n;
|
|
return new TileTri(left, top, right);
|
|
// Quad q = Quad(ne,se,sw,nw);
|
|
// bool small = q.minLength() < 2500;
|
|
// bool big = q.maxLength() >= 5000;
|
|
// bool anglesOk = q.minAngle() > Angle::d2r(50) && q.maxAngle() < Angle::d2r(130);
|
|
// bool tooWideX = q.minLengthEW() * 2 < q.maxLengthNS(); // trop allongé (côté E ou W deux fois plus petit que le côté N ou S).
|
|
// bool tooWideY = q.minLengthNS() * 2 < q.maxLengthEW(); // trop allongé (côté N ou S deux fois plus petit que le côté E ou W).
|
|
// if (!big && proba(seed, n, 1, 20)) {
|
|
// return new QuadHerbe(ne, se, sw, nw);
|
|
// } else if (small && anglesOk) {
|
|
// return new Batiment(ne, se, sw, nw);
|
|
// } else if (!anglesOk) {
|
|
// return new QuadAngle(ne, se, sw, nw);
|
|
// } else if (!small && tooWideY) {
|
|
// return new QuadRect(nw, ne, se, sw);
|
|
// } else if (!small && tooWideX) {
|
|
// return new QuadRect(ne, se, sw, nw);
|
|
// } else if (!small) {
|
|
// return new QuadCroix(ne, se, sw, nw);
|
|
// } else {
|
|
// return new QuadHerbe(ne, se, sw, nw);
|
|
// }
|
|
}
|
|
|
|
bool TileTri::subdivide() {
|
|
return false;
|
|
}
|
|
|
|
void TileTri::triangulation() {
|
|
triangles.reserve(1);
|
|
addTriangle(new Triangle(corner[0], corner[1], corner[2], 0xf0, 0xc0, 0xc0));
|
|
}
|