diff --git a/all_includes.hh b/all_includes.hh index d6c0d8a..4dbe962 100644 --- a/all_includes.hh +++ b/all_includes.hh @@ -48,6 +48,7 @@ class Chose; #include "rules/quartier/quartierquadcarre.hh" #include "rules/quartier/quartierquadrect.hh" #include "rules/quartier/quartiertri.hh" +#include "rules/quartier/quartiertrihauteur.hh" #include "rules/route/routequadcarrefour.hh" #include "rules/route/routequadchaussee.hh" diff --git a/rules/quartier/quartiertrihauteur.cpp b/rules/quartier/quartiertrihauteur.cpp new file mode 100644 index 0000000..5a96f1f --- /dev/null +++ b/rules/quartier/quartiertrihauteur.cpp @@ -0,0 +1,19 @@ +#include "all_includes.hh" + +QuartierTriHauteur::QuartierTriHauteur(Vertex left, Vertex top, Vertex right) : QuartierTri(left, top, right) { +} + +bool QuartierTriHauteur::split() { + Vertex baseCenter = Segment(corner[0], corner[2]).randomPos(seed, 0, 33, 67); + + Triangle tl = Triangle(baseCenter, corner[0], corner[1]); + Triangle tr = Triangle(corner[1], corner[2], baseCenter); + tl.offsetBase(-hrw); + tr.offsetBase(-hrw); + + addChild(new RouteQuadChaussee(tr.v1, tr.v3, tl.v1, tl.v3)); + addChild(new RouteTriChaussee(tl.v3, corner[1], tr.v1)); + addChild(QuartierTri::factory(seed, 1, tl.v3, tl.v1, tl.v2)); + addChild(QuartierTri::factory(seed, 2, tr.v2, tr.v3, tr.v1)); + return true; +} diff --git a/rules/quartier/quartiertrihauteur.hh b/rules/quartier/quartiertrihauteur.hh new file mode 100644 index 0000000..42cdd62 --- /dev/null +++ b/rules/quartier/quartiertrihauteur.hh @@ -0,0 +1,15 @@ +#ifndef _RULES_QUARTIER_TRI_HAUTEUR_HH_ +#define _RULES_QUARTIER_TRI_HAUTEUR_HH_ + +#include "all_includes.hh" + +class QuartierTriHauteur : public QuartierTri { + private : + static const int hrw = 250; // half road width : 2,50m. + + public : + QuartierTriHauteur(Vertex left, Vertex top, Vertex right); + virtual bool split(); +}; + +#endif