X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?a=blobdiff_plain;f=src%2FEntities%2FPolygon.cpp;h=cd03d853056ff035b4a711eafc60ce094be1f225;hb=aa2791cf43a9ddd3a288e504db08e11d03439653;hp=18615714f3254a885d75a79ebda5fc64ecb70fbf;hpb=e68f847b245153427266841ae724d602ca434c29;p=physics.git diff --git a/src/Entities/Polygon.cpp b/src/Entities/Polygon.cpp index 1861571..cd03d85 100644 --- a/src/Entities/Polygon.cpp +++ b/src/Entities/Polygon.cpp @@ -16,16 +16,22 @@ */ #include "Polygon.h" +#include "debug.h" -#include "../Vector2.h" +#include "Vector2.h" + +#include "graphics/graphics.h" /// ***** Constructors/Destructors ***** -Polygon::Polygon(const Vector2& pos, vector points) - : PhysicsEntity(pos), points(points) +Polygon::Polygon(const vector& points) + : PhysicsEntity(Vector2(0,0)), points(points) { + DASSERT(0 < points.size()); + createBindingBox(); + centerPosition(); } Polygon::~Polygon() { @@ -36,11 +42,28 @@ Polygon::~Polygon() void Polygon::draw() const { - // TODO + graphics::drawPolygon(points); } /// ***** Private Class Methods ***** void Polygon::createBindingBox() { + DASSERT(0 < points.size()); + + maxP = points.at(0); + minP = points.at(0); + + for(unsigned int i=1; i maxP.x) maxP.x = points[i].x; + + if(points[i].y < minP.y) minP.y = points[i].y; + else if(points[i].y > maxP.y) maxP.y = points[i].y; + } +} + +void Polygon::centerPosition() +{ // TODO }