#[repr(C)]pub struct Transform { /* private fields */ }
Expand description
Define a 3x3 transform matrix.
A Transform
specifies how to translate,
rotate, scale, shear, project, whatever things.
Implementations§
source§impl Transform
impl Transform
sourcepub fn new(
a00: f32,
a01: f32,
a02: f32,
a10: f32,
a11: f32,
a12: f32,
a20: f32,
a21: f32,
a22: f32
) -> Transform
pub fn new(
a00: f32,
a01: f32,
a02: f32,
a10: f32,
a11: f32,
a12: f32,
a20: f32,
a21: f32,
a22: f32
) -> Transform
Creates a new transform from a 3x3 matrix.
Arguments
- 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
sourcepub fn get_matrix(&self) -> &[f32; 16]
pub fn get_matrix(&self) -> &[f32; 16]
Return the matrix
sourcepub fn inverse(&self) -> Transform
pub fn inverse(&self) -> Transform
Return the inverse of a transform
If the inverse cannot be computed, a new identity transform is returned.
Return the inverse matrix
sourcepub fn combine(&mut self, other: &Transform)
pub fn combine(&mut self, other: &Transform)
Combine two transforms
The result is a transform that is equivalent to applying transform followed by other. Mathematically, it is equivalent to a matrix multiplication.
Arguments
- other - Transform to combine to transform
sourcepub fn translate(&mut self, x: f32, y: f32)
pub fn translate(&mut self, x: f32, y: f32)
Combine a transform with a translation
Arguments
- x - Offset to apply on X axis
- y - Offset to apply on Y axis
sourcepub fn rotate_with_center(&mut self, angle: f32, center_x: f32, center_y: f32)
pub fn rotate_with_center(&mut self, angle: f32, center_x: f32, center_y: f32)
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)].
Arguments
- angle - Rotation angle, in degrees
center_x
- X coordinate of the center of rotationcenter_y
- Y coordinate of the center of rotation
sourcepub fn scale(&mut self, scale_x: f32, scale_y: f32)
pub fn scale(&mut self, scale_x: f32, scale_y: f32)
Combine the current transform with a scaling
Arguments
scale_x
- Scaling factor on the X axisscale_y
- Scaling factor on the Y axis
sourcepub fn scale_with_center(
&mut self,
scale_x: f32,
scale_y: f32,
center_x: f32,
center_y: f32
)
pub fn scale_with_center(
&mut self,
scale_x: f32,
scale_y: f32,
center_x: f32,
center_y: f32
)
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)]
Arguments
scale_x
- Scaling factor on X axisscale_y
- Scaling factor on Y axiscenter_x
- X coordinate of the center of scalingcenter_y
- Y coordinate of the center of scaling
sourcepub fn transform_point(&self, point: Vector2f) -> Vector2f
pub fn transform_point(&self, point: Vector2f) -> Vector2f
sourcepub fn transform_rect(&self, rectangle: FloatRect) -> FloatRect
pub fn transform_rect(&self, rectangle: FloatRect) -> FloatRect
Apply a transform to 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.
Arguments
rectangle - Rectangle to transform
Return the transformed rectangle