3x3 transform matrix More...
#include <SFML/Graphics/Transform.hpp>
Public Member Functions | |
constexpr | Transform ()=default |
Default constructor. | |
constexpr | Transform (float a00, float a01, float a02, float a10, float a11, float a12, float a20, float a21, float a22) |
Construct a transform from a 3x3 matrix. | |
constexpr const float * | getMatrix () const |
Return the transform as a 4x4 matrix. | |
constexpr Transform | getInverse () const |
Return the inverse of the transform. | |
constexpr Vector2f | transformPoint (Vector2f point) const |
Transform a 2D point. | |
constexpr FloatRect | transformRect (const FloatRect &rectangle) const |
Transform a rectangle. | |
constexpr Transform & | combine (const Transform &transform) |
Combine the current transform with another one. | |
constexpr Transform & | translate (Vector2f offset) |
Combine the current transform with a translation. | |
Transform & | rotate (Angle angle) |
Combine the current transform with a rotation. | |
Transform & | rotate (Angle angle, Vector2f center) |
Combine the current transform with a rotation. | |
constexpr Transform & | scale (Vector2f factors) |
Combine the current transform with a scaling. | |
constexpr Transform & | scale (Vector2f factors, Vector2f center) |
Combine the current transform with a scaling. | |
Static Public Attributes | |
static const Transform | Identity |
The identity transform (does nothing) | |
Related Symbols | |
(Note that these are not member symbols.) | |
constexpr Transform | operator* (const Transform &left, const Transform &right) |
Overload of binary operator* to combine two transforms. | |
constexpr Transform & | operator*= (Transform &left, const Transform &right) |
Overload of binary operator*= to combine two transforms. | |
constexpr Vector2f | operator* (const Transform &left, Vector2f right) |
Overload of binary operator* to transform a point. | |
constexpr bool | operator== (const Transform &left, const Transform &right) |
Overload of binary operator== to compare two transforms. | |
constexpr bool | operator!= (const Transform &left, const Transform &right) |
Overload of binary operator!= to compare two transforms. | |
Detailed Description
3x3 transform matrix
A sf::Transform
specifies how to translate, rotate, scale, shear, project, whatever things.
In mathematical terms, it defines how to transform a coordinate system into another.
For example, if you apply a rotation transform to a sprite, the result will be a rotated sprite. And anything that is transformed by this rotation transform will be rotated the same way, according to its initial position.
Transforms are typically used for drawing. But they can also be used for any computation that requires to transform points between the local and global coordinate systems of an entity (like collision detection).
Example:
- See also
sf::Transformable
,sf::RenderStates
Definition at line 47 of file Transform.hpp.
Constructor & Destructor Documentation
◆ Transform() [1/2]
|
constexprdefault |
Default constructor.
Creates an identity transform (a transform that does nothing).
◆ Transform() [2/2]
|
constexpr |
Construct a transform from a 3x3 matrix.
- Parameters
-
a00 Element (0, 0) of the matrix a01 Element (0, 1) of the matrix a02 Element (0, 2) of the matrix a10 Element (1, 0) of the matrix a11 Element (1, 1) of the matrix a12 Element (1, 2) of the matrix a20 Element (2, 0) of the matrix a21 Element (2, 1) of the matrix a22 Element (2, 2) of the matrix
Member Function Documentation
◆ combine()
Combine the current transform with another one.
The result is a transform that is equivalent to applying transform
followed by *this
. Mathematically, it is equivalent to a matrix multiplication (*this) * transform
.
These two statements are equivalent:
- Parameters
-
transform Transform to combine with this transform
- Returns
- Reference to
*this
◆ getInverse()
|
nodiscardconstexpr |
Return the inverse of the transform.
If the inverse cannot be computed, an identity transform is returned.
- Returns
- A new transform which is the inverse of self
◆ getMatrix()
|
nodiscardconstexpr |
Return the transform as a 4x4 matrix.
This function returns a pointer to an array of 16 floats containing the transform elements as a 4x4 matrix, which is directly compatible with OpenGL functions.
- Returns
- Pointer to a 4x4 matrix
◆ rotate() [1/2]
Combine the current transform with a rotation.
This function returns a reference to *this
, so that calls can be chained.
- Parameters
-
angle Rotation angle
- Returns
- Reference to
*this
◆ rotate() [2/2]
Combine the current transform with a rotation.
The center of rotation is provided for convenience as a second argument, so that you can build rotations around arbitrary points more easily (and efficiently) than the usual translate(-center).rotate(angle).translate(center)
.
This function returns a reference to *this
, so that calls can be chained.
- Parameters
-
angle Rotation angle center Center of rotation
- Returns
- Reference to
*this
◆ scale() [1/2]
Combine the current transform with a scaling.
This function returns a reference to *this
, so that calls can be chained.
- Parameters
-
factors Scaling factors
- Returns
- Reference to
*this
◆ scale() [2/2]
Combine the current transform with a scaling.
The center of scaling is provided for convenience as a second argument, so that you can build scaling around arbitrary points more easily (and efficiently) than the usual translate(-center).scale(factors).translate(center)
.
This function returns a reference to *this
, so that calls can be chained.
- Parameters
-
factors Scaling factors center Center of scaling
- Returns
- Reference to
*this
◆ transformPoint()
Transform a 2D point.
These two statements are equivalent:
- Parameters
-
point Point to transform
- Returns
- Transformed point
◆ transformRect()
Transform a rectangle.
Since SFML doesn't provide support for oriented rectangles, the result of this function is always an axis-aligned rectangle. Which means that if the transform contains a rotation, the bounding rectangle of the transformed rectangle is returned.
- Parameters
-
rectangle Rectangle to transform
- Returns
- Transformed rectangle
◆ translate()
Combine the current transform with a translation.
This function returns a reference to *this
, so that calls can be chained.
- Parameters
-
offset Translation offset to apply
- Returns
- Reference to
*this
Friends And Related Symbol Documentation
◆ operator!=()
Overload of binary operator!=
to compare two transforms.
This call is equivalent to !(left == right)
.
- Parameters
-
left Left operand (the first transform) right Right operand (the second transform)
- Returns
true
if the transforms are not equal,false
otherwise
◆ operator*() [1/2]
Overload of binary operator*
to combine two transforms.
This call is equivalent to calling Transform(left).combine(right)
.
- Parameters
-
left Left operand (the first transform) right Right operand (the second transform)
- Returns
- New combined transform
◆ operator*() [2/2]
Overload of binary operator*
to transform a point.
This call is equivalent to calling left.transformPoint(right)
.
- Parameters
-
left Left operand (the transform) right Right operand (the point to transform)
- Returns
- New transformed point
◆ operator*=()
Overload of binary operator*=
to combine two transforms.
This call is equivalent to calling left.combine(right)
.
- Parameters
-
left Left operand (the first transform) right Right operand (the second transform)
- Returns
- The combined transform
◆ operator==()
Overload of binary operator==
to compare two transforms.
Performs an element-wise comparison of the elements of the left transform with the elements of the right transform.
- Parameters
-
left Left operand (the first transform) right Right operand (the second transform)
- Returns
true
if the transforms are equal,false
otherwise
Member Data Documentation
◆ Identity
|
static |
The identity transform (does nothing)
Definition at line 265 of file Transform.hpp.
The documentation for this class was generated from the following file: