Struct emath::TSTransform
source · #[repr(C)]pub struct TSTransform {
pub scaling: f32,
pub translation: Vec2,
}
Expand description
Linearly transforms positions via a translation, then a scaling.
TSTransform
first scales points with the scaling origin at 0, 0
(the top left corner), then translates them.
Fields§
§scaling: f32
Scaling applied first, scaled around (0, 0).
translation: Vec2
Translation amount, applied after scaling.
Implementations§
source§impl TSTransform
impl TSTransform
pub const IDENTITY: Self = _
sourcepub fn new(translation: Vec2, scaling: f32) -> Self
pub fn new(translation: Vec2, scaling: f32) -> Self
Creates a new translation that first scales points around
(0, 0)
, then translates them.
pub fn from_translation(translation: Vec2) -> Self
pub fn from_scaling(scaling: f32) -> Self
sourcepub fn inverse(&self) -> Self
pub fn inverse(&self) -> Self
Inverts the transform.
let p1 = pos2(2.0, 3.0);
let p2 = pos2(12.0, 5.0);
let ts = TSTransform::new(vec2(2.0, 3.0), 2.0);
let inv = ts.inverse();
assert_eq!(inv.mul_pos(p1), pos2(0.0, 0.0));
assert_eq!(inv.mul_pos(p2), pos2(5.0, 1.0));
assert_eq!(ts.inverse().inverse(), ts);
sourcepub fn mul_pos(&self, pos: Pos2) -> Pos2
pub fn mul_pos(&self, pos: Pos2) -> Pos2
Transforms the given coordinate.
let p1 = pos2(0.0, 0.0);
let p2 = pos2(5.0, 1.0);
let ts = TSTransform::new(vec2(2.0, 3.0), 2.0);
assert_eq!(ts.mul_pos(p1), pos2(2.0, 3.0));
assert_eq!(ts.mul_pos(p2), pos2(12.0, 5.0));
sourcepub fn mul_rect(&self, rect: Rect) -> Rect
pub fn mul_rect(&self, rect: Rect) -> Rect
Transforms the given rectangle.
let rect = Rect::from_min_max(pos2(5.0, 5.0), pos2(15.0, 10.0));
let ts = TSTransform::new(vec2(1.0, 0.0), 3.0);
let transformed = ts.mul_rect(rect);
assert_eq!(transformed.min, pos2(16.0, 15.0));
assert_eq!(transformed.max, pos2(46.0, 30.0));
Trait Implementations§
source§impl Clone for TSTransform
impl Clone for TSTransform
source§fn clone(&self) -> TSTransform
fn clone(&self) -> TSTransform
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for TSTransform
impl Debug for TSTransform
source§impl Default for TSTransform
impl Default for TSTransform
source§impl Mul<Pos2> for TSTransform
impl Mul<Pos2> for TSTransform
Transforms the position.
source§impl Mul<Rect> for TSTransform
impl Mul<Rect> for TSTransform
Transforms the rectangle.
source§impl Mul for TSTransform
impl Mul for TSTransform
source§fn mul(self, rhs: Self) -> Self::Output
fn mul(self, rhs: Self) -> Self::Output
Applies the right hand side transform, then the left hand side.
let ts1 = TSTransform::new(vec2(1.0, 0.0), 2.0);
let ts2 = TSTransform::new(vec2(-1.0, -1.0), 3.0);
let ts_combined = TSTransform::new(vec2(2.0, -1.0), 6.0);
assert_eq!(ts_combined, ts2 * ts1);
§type Output = TSTransform
type Output = TSTransform
The resulting type after applying the
*
operator.source§impl PartialEq for TSTransform
impl PartialEq for TSTransform
source§fn eq(&self, other: &TSTransform) -> bool
fn eq(&self, other: &TSTransform) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl Copy for TSTransform
impl Eq for TSTransform
impl StructuralPartialEq for TSTransform
Auto Trait Implementations§
impl Freeze for TSTransform
impl RefUnwindSafe for TSTransform
impl Send for TSTransform
impl Sync for TSTransform
impl Unpin for TSTransform
impl UnwindSafe for TSTransform
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more