Define a 3x3 transform matrix. More...
#include <SFML/Graphics/Transform.hpp>
Public Member Functions | |
Transform () | |
Default constructor. | |
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. | |
const float * | getMatrix () const |
Return the transform as a 4x4 matrix. | |
Transform | getInverse () const |
Return the inverse of the transform. | |
Vector2f | transformPoint (float x, float y) const |
Transform a 2D point. | |
Vector2f | transformPoint (const Vector2f &point) const |
Transform a 2D point. | |
FloatRect | transformRect (const FloatRect &rectangle) const |
Transform a rectangle. | |
Transform & | combine (const Transform &transform) |
Combine the current transform with another one. | |
Transform & | translate (float x, float y) |
Combine the current transform with a translation. | |
Transform & | translate (const Vector2f &offset) |
Combine the current transform with a translation. | |
Transform & | rotate (float angle) |
Combine the current transform with a rotation. | |
Transform & | rotate (float angle, float centerX, float centerY) |
Combine the current transform with a rotation. | |
Transform & | rotate (float angle, const Vector2f ¢er) |
Combine the current transform with a rotation. | |
Transform & | scale (float scaleX, float scaleY) |
Combine the current transform with a scaling. | |
Transform & | scale (float scaleX, float scaleY, float centerX, float centerY) |
Combine the current transform with a scaling. | |
Transform & | scale (const Vector2f &factors) |
Combine the current transform with a scaling. | |
Transform & | scale (const Vector2f &factors, const Vector2f ¢er) |
Combine the current transform with a scaling. | |
Static Public Attributes | |
static const Transform | Identity |
The identity transform (does nothing) | |
Related Functions | |
(Note that these are not member functions.) | |
Transform | operator* (const Transform &left, const Transform &right) |
Overload of binary operator * to combine two transforms. | |
Transform & | operator*= (Transform &left, const Transform &right) |
Overload of binary operator *= to combine two transforms. | |
Vector2f | operator* (const Transform &left, const Vector2f &right) |
Overload of binary operator * to transform a point. | |
bool | operator== (const Transform &left, const Transform &right) |
Overload of binary operator == to compare two transforms. | |
bool | operator!= (const Transform &left, const Transform &right) |
Overload of binary operator != to compare two transforms. | |
Define a 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:
Definition at line 42 of file Transform.hpp.
sf::Transform::Transform | ( | ) |
Default constructor.
Creates an identity transform (a transform that does nothing).
sf::Transform::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.
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 |
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:
transform | Transform to combine with this transform |
Transform sf::Transform::getInverse | ( | ) | const |
Return the inverse of the transform.
If the inverse cannot be computed, an identity transform is returned.
const float * sf::Transform::getMatrix | ( | ) | const |
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.
Transform & sf::Transform::rotate | ( | float | angle | ) |
Combine the current transform with a rotation.
This function returns a reference to *this, so that calls can be chained.
angle | Rotation angle, in degrees |
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.
angle | Rotation angle, in degrees |
center | Center of rotation |
Transform & sf::Transform::rotate | ( | float | angle, |
float | centerX, | ||
float | centerY | ||
) |
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.
angle | Rotation angle, in degrees |
centerX | X coordinate of the center of rotation |
centerY | Y coordinate of the center of rotation |
Combine the current transform with a scaling.
This function returns a reference to *this, so that calls can be chained.
factors | Scaling factors |
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.
factors | Scaling factors |
center | Center of scaling |
Transform & sf::Transform::scale | ( | float | scaleX, |
float | scaleY | ||
) |
Combine the current transform with a scaling.
This function returns a reference to *this, so that calls can be chained.
scaleX | Scaling factor on the X axis |
scaleY | Scaling factor on the Y axis |
Transform & sf::Transform::scale | ( | float | scaleX, |
float | scaleY, | ||
float | centerX, | ||
float | centerY | ||
) |
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.
scaleX | Scaling factor on X axis |
scaleY | Scaling factor on Y axis |
centerX | X coordinate of the center of scaling |
centerY | Y coordinate of the center of scaling |
Transform a 2D point.
These two statements are equivalent:
point | Point to transform |
Vector2f sf::Transform::transformPoint | ( | float | x, |
float | y | ||
) | const |
Transform a 2D point.
These two statements are equivalent:
x | X coordinate of the point to transform |
y | Y coordinate of the point to transform |
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.
rectangle | Rectangle to transform |
Combine the current transform with a translation.
This function returns a reference to *this, so that calls can be chained.
offset | Translation offset to apply |
Transform & sf::Transform::translate | ( | float | x, |
float | y | ||
) |
Combine the current transform with a translation.
This function returns a reference to *this, so that calls can be chained.
x | Offset to apply on X axis |
y | Offset to apply on Y axis |
Overload of binary operator != to compare two transforms.
This call is equivalent to !(left == right).
left | Left operand (the first transform) |
right | Right operand (the second transform) |
Overload of binary operator * to combine two transforms.
This call is equivalent to calling Transform(left).combine(right).
left | Left operand (the first transform) |
right | Right operand (the second transform) |
Overload of binary operator * to transform a point.
This call is equivalent to calling left.transformPoint(right).
left | Left operand (the transform) |
right | Right operand (the point to transform) |
Overload of binary operator *= to combine two transforms.
This call is equivalent to calling left.combine(right).
left | Left operand (the first transform) |
right | Right operand (the second transform) |
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.
left | Left operand (the first transform) |
right | Right operand (the second transform) |
|
static |
The identity transform (does nothing)
Definition at line 372 of file Transform.hpp.