2011-m2s3-city-builder/rules/quartier/quartiertricentre.cpp
2012-01-09 15:28:10 +01:00

26 lines
811 B
C++

#include "all_includes.hh"
QuartierTriCentre::QuartierTriCentre(Triangle c) : QuartierTri(c) {
}
bool QuartierTriCentre::split() {
// TODO : maxLength / 6 au lieu de 1000
Vertex center = c.insetLTR(1000).randomPoint(seed, 0);
Vertex edgePoint[3];
for (int i = 0; i < 3; i++)
edgePoint[LEFTSIDE+i] = Segment(c[LEFT+i], c[TOP+i]).randomPos(seed, i+1, 1/3.f, 2/3.f);
Quad q[3];
for (int i = 0; i < 3; i++) {
q[i] = Quad(c[TOP+i], edgePoint[RIGHTSIDE+i], center, edgePoint[LEFTSIDE+i]);
q[i] = q[i].inset(S, hrw).inset(W, hrw);
}
for (int i = 0; i < 3; i++) {
addChild(QuartierQuad::factory(seed, i+4, q[i]));
addChild(new RouteQuadChaussee(Quad(q[(i+1)%3][NW], q[(i+1)%3][SW], q[i][SW], q[i][SE])));
}
addChild(new RouteTriChaussee(Triangle(q[0][SW], q[1][SW], q[2][SW])));
return true;
}