[][src]Struct quicksilver::geom::Transform

pub struct Transform(_);

A 2D transformation represented by a matrix

Transforms can be composed together through matrix multiplication, and are applied to Vectors through multiplication, meaning the notation used is the '*' operator. A property of matrix multiplication is that for some matrices A, B, C and vector V is

Transform = A * B * C
Transform * V = A * (B * (C * V))

This property allows encoding multiple transformations in a single matrix. A transformation that involves rotating a shape 30 degrees and then moving it six units up could be written as

use quicksilver::geom::{Transform, Vector};
let transform = Transform::rotate(30) * Transform::translate(Vector::new(0, -6));

and then applied to a Vector

transform * Vector::new(5, 5)

Methods

impl Transform
[src]

The identity transformation

Create a Transform from an arbitrary matrix in a column-major matrix

Create a rotation transformation

Create a translation transformation

Create a scale transformation

Convert the Transform into an nalgebra Matrix3

Find the inverse of a Transform

A transform's inverse will cancel it out when multplied with it, as seen below:

let transform = Transform::translate(Vector::new(4, 5));
let inverse = transform.inverse();
let vector = Vector::new(10, 10);
assert_eq!(vector, transform * inverse * vector);
assert_eq!(vector, inverse * transform * vector);

Trait Implementations

impl PartialEq<Transform> for Transform
[src]

This method tests for !=.

impl From<Matrix<f32, U3, U3, <DefaultAllocator as Allocator<f32, U3, U3>>::Buffer>> for Transform
[src]

impl Clone for Transform
[src]

Performs copy-assignment from source. Read more

impl Copy for Transform
[src]

impl Eq for Transform
[src]

impl Default for Transform
[src]

impl Display for Transform
[src]

impl Debug for Transform
[src]

impl Mul<Transform> for Transform
[src]

Concat two transforms A and B such that A * B * v = A * (B * v)

The resulting type after applying the * operator.

impl Mul<Vector> for Transform
[src]

Transform a vector

The resulting type after applying the * operator.

impl<T: Scalar> Mul<T> for Transform
[src]

Scale all of the internal values of the Transform matrix

Note this will NOT scale vectors multiplied by this transform, and generally you shouldn't need to use this.

The resulting type after applying the * operator.

impl Serialize for Transform
[src]

impl<'de> Deserialize<'de> for Transform
[src]

Auto Trait Implementations

impl Send for Transform

impl Sync for Transform

Blanket Implementations

impl<T> From for T
[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom for T where
    T: From<U>, 
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> SetParameter for T

Sets value as a parameter of self.

impl<T> Erased for T

impl<T> Scalar for T where
    T: Copy + PartialEq<T> + Any + Debug
[src]

Tests if Self the same as the type T Read more

impl<T> Same for T

Should always be Self

impl<SS, SP> SupersetOf for SP where
    SS: SubsetOf<SP>, 
[src]

impl<T> DeserializeOwned for T where
    T: Deserialize<'de>, 
[src]