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);
source§type Output = TSTransform
type Output = TSTransform
The resulting type after applying the
*
operator.source§impl PartialEq for TSTransform
impl PartialEq for TSTransform
impl Copy for TSTransform
impl Eq for TSTransform
impl Pod 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
source§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
source§type Bits = T
type Bits = T
Self
must have the same layout as the specified Bits
except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern
.source§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
If this function returns true, then it must be valid to reinterpret
bits
as &Self
.source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)