![]() |
Gamedev Framework (gf) 1.2.0
A C++17 framework for 2D games
|
A convex polygon. More...
#include <gf/Polygon.h>
Public Member Functions | |
Polygon ()=default | |
Default constructor. More... | |
Polygon (Span< const Vector2f > points) | |
Constructor from an array. More... | |
template<typename Iterator > | |
Polygon (Iterator first, Iterator last) | |
Constructor from points. More... | |
Vector2f | getSupport (Vector2f direction, const Transform &transform) const |
Get the farthest point in a direction. More... | |
Vector2f | getSupport (Vector2f direction) const |
Get the farthest point in a direction. More... | |
bool | isConvex () const |
Check if the polygon is convex. More... | |
Winding | getWinding () const |
Compute the winding of a simple polygon. More... | |
bool | contains (Vector2f point) const |
Test if a point is inside the polygon. More... | |
float | getArea () const |
Compute the area of the polygon. More... | |
Vector2f | getPrevPoint (std::size_t i) const |
Get the point before the i-th point. More... | |
Vector2f | getNextPoint (std::size_t i) const |
Get the point after the i-th point. More... | |
![]() | |
PointSequence ()=default | |
Default constructor. More... | |
PointSequence (Span< const Vector2f > points) | |
Constructor from an array. More... | |
template<typename Iterator > | |
PointSequence (Iterator first, Iterator last) | |
Constructor from points. More... | |
bool | isEmpty () const |
Check if the sequence is empty. More... | |
void | addPoint (Vector2f point) |
Add a point to the sequence. More... | |
std::size_t | getPointCount () const |
Get the number of points of the sequence. More... | |
Vector2f | getPoint (std::size_t index) const |
Get the i-th point of the sequence. More... | |
Vector2f | getCenter () const |
Get the center of the sequence. More... | |
const Vector2f * | begin () const |
Get an iterator to the first point. More... | |
Vector2f * | begin () |
Get an iterator to the first point. More... | |
const Vector2f * | end () const |
Get an iterator past the last point. More... | |
Vector2f * | end () |
Get an iterator past the last point. More... | |
Vector2f | getFirstPoint () const |
Get the first point of the sequence. More... | |
Vector2f | getLastPoint () const |
Get the last point of the sequence. More... | |
void | applyTransform (const Matrix3f &mat) |
Apply a transformation to the sequence. More... | |
void | simplify (float distance=Epsilon) |
Simplify the sequence. More... | |
void | reverse () |
Reverse the points in the sequence. More... | |
Additional Inherited Members | |
![]() | |
std::vector< Vector2f > & | getRawPoints () |
Get the raw container of points. More... | |
const std::vector< Vector2f > & | getRawPoints () const |
Get the raw container of points. More... | |
A convex polygon.
|
default |
Default constructor.
Constructor from an array.
points | The array of points |
|
inline |
Constructor from points.
first | Iterator to the first point |
last | Iterator after the last point |
bool gf::Polygon::contains | ( | Vector2f | point | ) | const |
Test if a point is inside the polygon.
point | The point to test |
float gf::Polygon::getArea | ( | ) | const |
Compute the area of the polygon.
Complexity: \( O(n) \)
Vector2f gf::Polygon::getNextPoint | ( | std::size_t | i | ) | const |
Get the point after the i-th point.
i | The index of the current point |
Vector2f gf::Polygon::getPrevPoint | ( | std::size_t | i | ) | const |
Get the point before the i-th point.
i | The index of the current point |
Get the farthest point in a direction.
direction | The direction to search |
Get the farthest point in a direction.
direction | The direction to search (in world coordinates) |
transform | The transformation of the polygon |
Winding gf::Polygon::getWinding | ( | ) | const |
Compute the winding of a simple polygon.
Complexity: \( O(n) \)
bool gf::Polygon::isConvex | ( | ) | const |
Check if the polygon is convex.
This function should return true, otherwise you may have problems in other functions which assume that the polygon is convex.
This function does not handle self-intersecting polygons (yet).