| 30 | Polygon::~Polygon() {} |
| 31 | |
| 32 | bool Polygon::isInside(const Position& point) const |
| 33 | { |
| 34 | int cross = 0; |
| 35 | for (int i = 0, j = vertices_.size() - 1; i < vertices_.size(); j = i++) { |
| 36 | if ( ((vertices_[i].y() > point.y()) != (vertices_[j].y() > point.y())) |
| 37 | && (point.x() < (vertices_[j].x() - vertices_[i].x()) * (point.y() - vertices_[i].y()) / |
| 38 | (vertices_[j].y() - vertices_[i].y()) + vertices_[i].x()) ) |
| 39 | { |
| 40 | cross++; |
| 41 | } |
| 42 | } |
| 43 | return bool(cross % 2); |
| 44 | } |
| 45 | |
| 46 | void Polygon::addVertex(const Position& vertex) |
| 47 | { |