2011-m2s3-city-builder/rules/quartier/tiletri.cpp
2011-12-12 16:07:35 +01:00

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));
}