X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?a=blobdiff_plain;f=src%2FEntities%2FPolygon.cpp;h=ecaf2c41d5e626d74583a8cf0c5a8555978554e3;hb=30a93c3992f0e1fc44193dde6d53216d3ae4f4e9;hp=085c6e2c1b364b7d77bb1a92b4449deb03da520b;hpb=617dcc71d9a71663f63fb56ffac2505b45bf91b9;p=physics.git diff --git a/src/Entities/Polygon.cpp b/src/Entities/Polygon.cpp index 085c6e2..ecaf2c4 100644 --- a/src/Entities/Polygon.cpp +++ b/src/Entities/Polygon.cpp @@ -1,14 +1,37 @@ +/* + * Copyright (C) 2008 Patrik Gornicz, Gornicz_P (at) hotmail (dot) com. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #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, const float* color) + : PhysicsEntity(Vector2(0,0)), points(points), color(color) { + DASSERT(0 < points.size()); + createBindingBox(); + centerPosition(); } Polygon::~Polygon() { @@ -19,11 +42,28 @@ Polygon::~Polygon() void Polygon::draw() const { - // TODO + graphics::drawPolygon(points, color); } /// ***** 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 }