![]() |
Gamedev Framework (gf) 1.2.0
A C++17 framework for 2D games
|
Geometry classes and functions. More...
Classes | |
struct | gf::Circ< T > |
Utility class for manipulating circles. More... | |
struct | gf::Penetration |
Data about the collision between two objects. More... | |
class | gf::Bresenham |
State for the Bresenham's line algorithm. More... | |
struct | gf::Segment< T > |
A segment with two points. More... | |
class | gf::PointSequence |
A sequence of points. More... | |
class | gf::Polygon |
A convex polygon. More... | |
class | gf::Polyline |
A polyline. More... | |
struct | gf::Rect< T > |
Utility class for manipulating 2D axis aligned rectangles. More... | |
struct | gf::Rotation |
A rotation. More... | |
struct | gf::Translation |
A translation. More... | |
struct | gf::Transform |
A simple transformation (rotation then translation) More... | |
class | gf::EdgeRef< T > |
A reference to an edge (two points) More... | |
class | gf::TriangleRef< T > |
A reference to a triangle (three points) More... | |
Typedefs | |
using | gf::CircF = Circ< float > |
A float circle. More... | |
using | gf::CircD = Circ< double > |
A double circle. More... | |
using | gf::CircI = Circ< int > |
A int circle. More... | |
using | gf::CircU = Circ< unsigned > |
A unsigned circle. More... | |
using | gf::CircZ = Circ< std::size_t > |
A std::size_t circle. More... | |
using | gf::SegmentF = Segment< float > |
A segment with float vectors. More... | |
using | gf::SegmentD = Segment< double > |
A segment with double vectors. More... | |
using | gf::SegmentI = Segment< int > |
A segment with int vectors. More... | |
using | gf::RectF = Rect< float > |
A float rectangle. More... | |
using | gf::RectD = Rect< double > |
A double rectangle. More... | |
using | gf::RectI = Rect< int > |
A int rectangle. More... | |
using | gf::RectU = Rect< unsigned > |
A unsigned rectangle. More... | |
using | gf::RectZ = Rect< std::size_t > |
A std::size_t rectangle. More... | |
Enumerations | |
enum class | gf::Direction : int8_t { gf::Direction::Center = -1 , gf::Direction::Up = 0 , gf::Direction::Right = 1 , gf::Direction::Down = 2 , gf::Direction::Left = 3 } |
Main four directions. More... | |
enum class | gf::Orientation : int8_t { gf::Orientation::Center = -1 , gf::Orientation::North = 0 , gf::Orientation::NorthEast = 1 , gf::Orientation::East = 2 , gf::Orientation::SouthEast = 3 , gf::Orientation::South = 4 , gf::Orientation::SouthWest = 5 , gf::Orientation::West = 6 , gf::Orientation::NorthWest = 7 } |
Cardinal and ordinal orientation. More... | |
enum class | gf::Winding { gf::Winding::None , gf::Winding::Clockwise , gf::Winding::Counterclockwise } |
The direction of a polygon's rotation. More... | |
Functions | |
GF_CORE_API Vector2f | gf::unit (Direction direction) |
Get a unit vector from a direction. More... | |
GF_CORE_API Vector2i | gf::displacement (Direction direction) |
Get a vector from a direction. More... | |
GF_CORE_API float | gf::angle (Direction direction) |
Get an angle from a direction. More... | |
GF_CORE_API Direction | gf::opposite (Direction direction) |
Get the opposite direction. More... | |
GF_CORE_API Direction | gf::orthogonalCW (Direction direction) |
Get the orthogonal direction clockwise. More... | |
GF_CORE_API Direction | gf::orthogonalCCW (Direction direction) |
Get the orthogonal direction counter-clockwise. More... | |
GF_CORE_API Direction | gf::nextCW (Direction direction) |
Get the next direction clockwise. More... | |
GF_CORE_API Direction | gf::nextCCW (Direction direction) |
Get the next direction counter-clockwise. More... | |
GF_CORE_API std::vector< Vector2i > | gf::generateLine (Vector2i p0, Vector2i p1) |
Generate a line between two positions. More... | |
GF_CORE_API Polygon | gf::convexHull (Span< const Vector2f > points) |
Compute the convex hull of a set of points. More... | |
GF_CORE_API std::vector< Vector2f > | gf::simplifyPoints (Span< const Vector2f > points, float distance=Epsilon) |
Simplify a sequence of points. More... | |
GF_CORE_API std::vector< Polyline > | gf::buildLines (Span< const SegmentI > segments) |
Build a set of lines from a set of segments. More... | |
GF_CORE_API Vector2f | gf::unit (Orientation orientation) |
Get a unit vector from an orientation. More... | |
GF_CORE_API Vector2i | gf::displacement (Orientation orientation) |
Get a vector from an orientation. More... | |
GF_CORE_API float | gf::angle (Orientation orientation) |
Get an angle from a orientation. More... | |
GF_CORE_API Orientation | gf::orientation (float angle) |
Get an orientation from an angle. More... | |
GF_CORE_API Orientation | gf::opposite (Orientation orientation) |
Get the opposite orientation. More... | |
GF_CORE_API Orientation | gf::orthogonalCW (Orientation orientation) |
Get the orthogonal orientation clockwise. More... | |
GF_CORE_API Orientation | gf::orthogonalCCW (Orientation orientation) |
Get the orthogonal orientation counter-clockwise. More... | |
GF_CORE_API Orientation | gf::nextCW (Orientation orientation) |
Get the next orientation clockwise. More... | |
GF_CORE_API Orientation | gf::nextCCW (Orientation orientation) |
Get the next orientation counter-clockwise. More... | |
template<typename T > | |
constexpr Rect< T > | gf::computeBoxQuarter (const Rect< T > &other, Quarter quarter) |
Divide a rectangle in quarters. More... | |
constexpr Vector2f | gf::transform (const Matrix3f &mat, Vector2f point) |
Apply an affine transformation to a 2D point. More... | |
GF_CORE_API RectF | gf::transform (const Matrix3f &mat, const RectF &rect) |
Apply an affine transformaton to a rectangle. More... | |
constexpr Matrix3f | gf::identityTransform () |
Identity transform. More... | |
Matrix3f | gf::translation (Vector2f offset) |
Get a translation matrix. More... | |
GF_CORE_API void | gf::translate (Matrix3f &mat, Vector2f offset) |
Combine the current transform with a translation. More... | |
Matrix3f | gf::rotation (float angle) |
Get a rotation matrix. More... | |
Matrix3f | gf::rotation (float angle, Vector2f center) |
Get a rotation matrix. More... | |
GF_CORE_API void | gf::rotate (Matrix3f &mat, float angle) |
Combine the current transform with a rotation. More... | |
GF_CORE_API void | gf::rotate (Matrix3f &mat, float angle, Vector2f center) |
Combine the current transform with a rotation. More... | |
Matrix3f | gf::scaling (Vector2f factor) |
Get a scaling matrix. More... | |
Matrix3f | gf::scaling (Vector2f factor, Vector2f center) |
Get a scaling matrix. More... | |
GF_CORE_API void | gf::scale (Matrix3f &mat, Vector2f factor) |
Combine the current transform with a scaling. More... | |
GF_CORE_API void | gf::scale (Matrix3f &mat, Vector2f factor, Vector2f center) |
Combine the current transform with a scaling. More... | |
GF_CORE_API std::vector< TriangleRef< const Vector2f > > | gf::triangulation (Span< const Vector2f > points) |
Compute a Delaunay triangulation of a set of points. More... | |
Geometry classes and functions.
using gf::SegmentD = typedef Segment<double> |
A segment with double vectors.
using gf::SegmentF = typedef Segment<float> |
A segment with float vectors.
using gf::SegmentI = typedef Segment<int> |
A segment with int vectors.
|
strong |
Main four directions.
gf::Direction represents one of the four main directions. A special value is added to represent the center, it indicates no direction.
Enumerator | |
---|---|
Center | The center, indicates no direction. |
Up | The up direction. |
Right | The right direction. |
Down | The down direction. |
Left | The left direction. |
|
strong |
Cardinal and ordinal orientation.
gf::Orientation represents one the four cardinal orientations and the four ordinal (or intercardinal) orientations. A special value is added to represent the center, it indicates no orientation.
|
strong |
GF_CORE_API float gf::angle | ( | Direction | direction | ) |
Get an angle from a direction.
Up is at angle 0 and angle grows clockwise.
direction | The direction |
GF_CORE_API float gf::angle | ( | Orientation | orientation | ) |
Get an angle from a orientation.
East is at angle 0 and angle grows clockwise.
orientation | The orientation |
Build a set of lines from a set of segments.
segments | A set of segments |
|
constexpr |
Divide a rectangle in quarters.
other | The rectangle to divide |
quarter | The quarter to compute |
Compute the convex hull of a set of points.
This function uses the Quickhull algorithm.
Complexity: \( O(n \log n)\) on average, \( O(n^2) \) on worst case
points | The set of points |
Get a vector from a direction.
The vector has its coordinates at -1, 0 or 1 depending on the direction. It can be used to represent the displacement on a grid in the given direction.
direction | The direction |
GF_CORE_API Vector2i gf::displacement | ( | Orientation | orientation | ) |
Get a vector from an orientation.
The vector has its coordinates at -1, 0 or 1 depending on the orientation. It can be used to represent the displacement on a grid in the given orientation.
orientation | The orientation |
Generate a line between two positions.
This function uses Bresenham's line algorithm.
p0 | The first point of the line |
p1 | The last point of the line |
|
constexpr |
Identity transform.
Get the next direction counter-clockwise.
direction | The direction |
GF_CORE_API Orientation gf::nextCCW | ( | Orientation | orientation | ) |
Get the next orientation counter-clockwise.
orientation | The orientation |
Get the next direction clockwise.
direction | The direction |
GF_CORE_API Orientation gf::nextCW | ( | Orientation | orientation | ) |
Get the next orientation clockwise.
orientation | The orientation |
Get the opposite direction.
direction | The direction |
GF_CORE_API Orientation gf::opposite | ( | Orientation | orientation | ) |
Get the opposite orientation.
orientation | The orientation |
GF_CORE_API Orientation gf::orientation | ( | float | angle | ) |
Get an orientation from an angle.
East is at angle 0 and angle grows clockwise.
angle | The angle |
Get the orthogonal direction counter-clockwise.
direction | The direction |
GF_CORE_API Orientation gf::orthogonalCCW | ( | Orientation | orientation | ) |
Get the orthogonal orientation counter-clockwise.
orientation | The orientation |
Get the orthogonal direction clockwise.
direction | The direction |
GF_CORE_API Orientation gf::orthogonalCW | ( | Orientation | orientation | ) |
Get the orthogonal orientation clockwise.
orientation | The orientation |
GF_CORE_API void gf::rotate | ( | Matrix3f & | mat, |
float | angle | ||
) |
Combine the current transform with a rotation.
mat | The current transform |
angle | The angle of the rotation (in radians) |
Combine the current transform with a rotation.
mat | The current transform |
angle | The angle of the rotation (in radians) |
center | The center of the rotation |
|
inline |
Get a rotation matrix.
angle | The angle of the rotation (in radians) |
angle
radians Get a rotation matrix.
angle | The angle of the rotation (in radians) |
center | The center of the rotation |
angle
radians of origin center
Combine the current transform with a scaling.
mat | The current transform |
factor | The scaling factor |
Combine the current transform with a scaling.
mat | The current transform |
factor | The scaling factor |
center | The center of the scaling |
Get a scaling matrix.
factor | The scaling factor |
factor
Get a scaling matrix.
factor | The scaling factor |
center | The center of the scaling |
factor
of origin center
GF_CORE_API std::vector< Vector2f > gf::simplifyPoints | ( | Span< const Vector2f > | points, |
float | distance = Epsilon |
||
) |
Simplify a sequence of points.
This function uses the Douglas–Peucker algorithm.
points | The sequence of points |
distance | The maximum authorized distance between the original points and the simplified points |
Apply an affine transformaton to a rectangle.
The resulting rectangle is axis-aligned
mat | The transformation matrix |
rect | The rectangle to transform |
Apply an affine transformation to a 2D point.
mat | The transformation matrix |
point | The point to transform |
Combine the current transform with a translation.
mat | The current transform |
offset | The offset of the translation |
Get a translation matrix.
offset | The offset of the translation |
offset
GF_CORE_API std::vector< TriangleRef< const Vector2f > > gf::triangulation | ( | Span< const Vector2f > | points | ) |
Compute a Delaunay triangulation of a set of points.
points | The set of points |
Get a unit vector from a direction.
direction | The direction |
GF_CORE_API Vector2f gf::unit | ( | Orientation | orientation | ) |
Get a unit vector from an orientation.
orientation | The orientation |