#[repr(C)]pub struct Translation2D<T, Src, Dst> {
pub x: T,
pub y: T,
/* private fields */
}Expand description
A 2d transformation from a space to another that can only express translations.
The main benefit of this type over a Vector2D is the ability to cast
between source and destination spaces.
Example:
use euclid::{Translation2D, Point2D, point2};
struct ParentSpace;
struct ChildSpace;
type ScrollOffset = Translation2D<i32, ParentSpace, ChildSpace>;
type ParentPoint = Point2D<i32, ParentSpace>;
type ChildPoint = Point2D<i32, ChildSpace>;
let scrolling = ScrollOffset::new(0, 100);
let p1: ParentPoint = point2(0, 0);
let p2: ChildPoint = scrolling.transform_point(p1);Fields§
§x: T§y: TImplementations§
Source§impl<T, Src, Dst> Translation2D<T, Src, Dst>
impl<T, Src, Dst> Translation2D<T, Src, Dst>
pub const fn new(x: T, y: T) -> Self
pub fn splat(v: T) -> Selfwhere
T: Clone,
Sourcepub fn is_identity(&self) -> bool
pub fn is_identity(&self) -> bool
Check if translation does nothing (both x and y is zero()).
use euclid::default::Translation2D;
assert_eq!(Translation2D::<f32>::identity().is_identity(), true);
assert_eq!(Translation2D::new(0, 0).is_identity(), true);
assert_eq!(Translation2D::new(1, 0).is_identity(), false);
assert_eq!(Translation2D::new(0, 1).is_identity(), false);Sourcepub fn transform_size(&self, s: Size2D<T, Src>) -> Size2D<T, Dst>
pub fn transform_size(&self, s: Size2D<T, Src>) -> Size2D<T, Dst>
No-op, just cast the unit.
Source§impl<T: Copy, Src, Dst> Translation2D<T, Src, Dst>
impl<T: Copy, Src, Dst> Translation2D<T, Src, Dst>
Sourcepub fn to_untyped(&self) -> Translation2D<T, UnknownUnit, UnknownUnit>
pub fn to_untyped(&self) -> Translation2D<T, UnknownUnit, UnknownUnit>
Drop the units, preserving only the numeric value.
Sourcepub fn from_untyped(t: &Translation2D<T, UnknownUnit, UnknownUnit>) -> Self
pub fn from_untyped(t: &Translation2D<T, UnknownUnit, UnknownUnit>) -> Self
Tag a unitless value with units.
Sourcepub fn to_transform(&self) -> Transform2D<T, Src, Dst>
pub fn to_transform(&self) -> Transform2D<T, Src, Dst>
Returns the matrix representation of this translation.
Sourcepub fn transform_point(&self, p: Point2D<T, Src>) -> Point2D<T::Output, Dst>where
T: Add,
pub fn transform_point(&self, p: Point2D<T, Src>) -> Point2D<T::Output, Dst>where
T: Add,
Translate a point and cast its unit.
Sourcepub fn transform_rect(&self, r: &Rect<T, Src>) -> Rect<T::Output, Dst>where
T: Add<Output = T>,
pub fn transform_rect(&self, r: &Rect<T, Src>) -> Rect<T::Output, Dst>where
T: Add<Output = T>,
Translate a rectangle and cast its unit.
Sourcepub fn transform_box(&self, r: &Box2D<T, Src>) -> Box2D<T::Output, Dst>where
T: Add,
pub fn transform_box(&self, r: &Box2D<T, Src>) -> Box2D<T::Output, Dst>where
T: Add,
Translate a 2D box and cast its unit.
Sourcepub fn inverse(&self) -> Translation2D<T::Output, Dst, Src>where
T: Neg,
pub fn inverse(&self) -> Translation2D<T::Output, Dst, Src>where
T: Neg,
Return the inverse transformation.
Source§impl<T: NumCast + Copy, Src, Dst> Translation2D<T, Src, Dst>
impl<T: NumCast + Copy, Src, Dst> Translation2D<T, Src, Dst>
Sourcepub fn cast<NewT: NumCast>(self) -> Translation2D<NewT, Src, Dst>
pub fn cast<NewT: NumCast>(self) -> Translation2D<NewT, Src, Dst>
Cast from one numeric representation to another, preserving the units.
When casting from floating vector to integer coordinates, the decimals are truncated
as one would expect from a simple cast, but this behavior does not always make sense
geometrically. Consider using round(), ceil() or floor() before casting.
Sourcepub fn try_cast<NewT: NumCast>(self) -> Option<Translation2D<NewT, Src, Dst>>
pub fn try_cast<NewT: NumCast>(self) -> Option<Translation2D<NewT, Src, Dst>>
Fallible cast from one numeric representation to another, preserving the units.
When casting from floating vector to integer coordinates, the decimals are truncated
as one would expect from a simple cast, but this behavior does not always make sense
geometrically. Consider using round(), ceil() or floor() before casting.
Sourcepub fn to_f32(self) -> Translation2D<f32, Src, Dst>
pub fn to_f32(self) -> Translation2D<f32, Src, Dst>
Cast into an f32 vector.
Sourcepub fn to_f64(self) -> Translation2D<f64, Src, Dst>
pub fn to_f64(self) -> Translation2D<f64, Src, Dst>
Cast into an f64 vector.
Sourcepub fn to_usize(self) -> Translation2D<usize, Src, Dst>
pub fn to_usize(self) -> Translation2D<usize, Src, Dst>
Cast into an usize vector, truncating decimals if any.
When casting from floating vector vectors, it is worth considering whether
to round(), ceil() or floor() before the cast in order to obtain
the desired conversion behavior.
Sourcepub fn to_u32(self) -> Translation2D<u32, Src, Dst>
pub fn to_u32(self) -> Translation2D<u32, Src, Dst>
Cast into an u32 vector, truncating decimals if any.
When casting from floating vector vectors, it is worth considering whether
to round(), ceil() or floor() before the cast in order to obtain
the desired conversion behavior.
Sourcepub fn to_i32(self) -> Translation2D<i32, Src, Dst>
pub fn to_i32(self) -> Translation2D<i32, Src, Dst>
Cast into an i32 vector, truncating decimals if any.
When casting from floating vector vectors, it is worth considering whether
to round(), ceil() or floor() before the cast in order to obtain
the desired conversion behavior.
Sourcepub fn to_i64(self) -> Translation2D<i64, Src, Dst>
pub fn to_i64(self) -> Translation2D<i64, Src, Dst>
Cast into an i64 vector, truncating decimals if any.
When casting from floating vector vectors, it is worth considering whether
to round(), ceil() or floor() before the cast in order to obtain
the desired conversion behavior.
Trait Implementations§
Source§impl<T: Add, Src, Dst1, Dst2> Add<Translation2D<T, Dst1, Dst2>> for Translation2D<T, Src, Dst1>
impl<T: Add, Src, Dst1, Dst2> Add<Translation2D<T, Dst1, Dst2>> for Translation2D<T, Src, Dst1>
Source§impl<T: AddAssign, Src, Dst> AddAssign<Translation2D<T, Dst, Dst>> for Translation2D<T, Src, Dst>
impl<T: AddAssign, Src, Dst> AddAssign<Translation2D<T, Dst, Dst>> for Translation2D<T, Src, Dst>
Source§fn add_assign(&mut self, other: Translation2D<T, Dst, Dst>)
fn add_assign(&mut self, other: Translation2D<T, Dst, Dst>)
+= operation. Read moreSource§impl<T: Clone, Src, Dst> Clone for Translation2D<T, Src, Dst>
impl<T: Clone, Src, Dst> Clone for Translation2D<T, Src, Dst>
Source§impl<T: Debug, Src, Dst> Debug for Translation2D<T, Src, Dst>
impl<T: Debug, Src, Dst> Debug for Translation2D<T, Src, Dst>
Source§impl<T, Src, Dst> Default for Translation2D<T, Src, Dst>where
T: Zero,
impl<T, Src, Dst> Default for Translation2D<T, Src, Dst>where
T: Zero,
Source§impl<'de, T, Src, Dst> Deserialize<'de> for Translation2D<T, Src, Dst>where
T: Deserialize<'de>,
impl<'de, T, Src, Dst> Deserialize<'de> for Translation2D<T, Src, Dst>where
T: Deserialize<'de>,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<T, Src, Dst> From<Translation2D<T, Src, Dst>> for Transform2D<T, Src, Dst>
impl<T, Src, Dst> From<Translation2D<T, Src, Dst>> for Transform2D<T, Src, Dst>
Source§fn from(t: Translation2D<T, Src, Dst>) -> Self
fn from(t: Translation2D<T, Src, Dst>) -> Self
Source§impl<T, Src, Dst> From<Translation2D<T, Src, Dst>> for Vector2D<T, Src>
impl<T, Src, Dst> From<Translation2D<T, Src, Dst>> for Vector2D<T, Src>
Source§fn from(t: Translation2D<T, Src, Dst>) -> Self
fn from(t: Translation2D<T, Src, Dst>) -> Self
Source§impl<T, Src, Dst> From<Vector2D<T, Src>> for Translation2D<T, Src, Dst>
impl<T, Src, Dst> From<Vector2D<T, Src>> for Translation2D<T, Src, Dst>
Source§impl<T, Src, Dst> Hash for Translation2D<T, Src, Dst>where
T: Hash,
impl<T, Src, Dst> Hash for Translation2D<T, Src, Dst>where
T: Hash,
Source§impl<T, Src, Dst> PartialEq for Translation2D<T, Src, Dst>where
T: PartialEq,
impl<T, Src, Dst> PartialEq for Translation2D<T, Src, Dst>where
T: PartialEq,
Source§impl<T, Src, Dst> Serialize for Translation2D<T, Src, Dst>where
T: Serialize,
impl<T, Src, Dst> Serialize for Translation2D<T, Src, Dst>where
T: Serialize,
Source§impl<T: Sub, Src, Dst1, Dst2> Sub<Translation2D<T, Dst1, Dst2>> for Translation2D<T, Src, Dst2>
impl<T: Sub, Src, Dst1, Dst2> Sub<Translation2D<T, Dst1, Dst2>> for Translation2D<T, Src, Dst2>
Source§impl<T: SubAssign, Src, Dst> SubAssign<Translation2D<T, Dst, Dst>> for Translation2D<T, Src, Dst>
impl<T: SubAssign, Src, Dst> SubAssign<Translation2D<T, Dst, Dst>> for Translation2D<T, Src, Dst>
Source§fn sub_assign(&mut self, other: Translation2D<T, Dst, Dst>)
fn sub_assign(&mut self, other: Translation2D<T, Dst, Dst>)
-= operation. Read more