#[repr(C)]pub struct Translation3D<T, Src, Dst> {
pub x: T,
pub y: T,
pub z: T,
/* private fields */
}Expand description
A 3d transformation from a space to another that can only express translations.
The main benefit of this type over a Vector3D is the ability to cast
between source and destination spaces.
Fields§
§x: T§y: T§z: TImplementations§
Source§impl<T, Src, Dst> Translation3D<T, Src, Dst>
impl<T, Src, Dst> Translation3D<T, Src, Dst>
pub const fn new(x: T, y: T, z: 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 (x, y and z is zero()).
use euclid::default::Translation3D;
assert_eq!(Translation3D::<f32>::identity().is_identity(), true);
assert_eq!(Translation3D::new(0, 0, 0).is_identity(), true);
assert_eq!(Translation3D::new(1, 0, 0).is_identity(), false);
assert_eq!(Translation3D::new(0, 1, 0).is_identity(), false);
assert_eq!(Translation3D::new(0, 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> Translation3D<T, Src, Dst>
impl<T: Copy, Src, Dst> Translation3D<T, Src, Dst>
Sourcepub fn to_untyped(&self) -> Translation3D<T, UnknownUnit, UnknownUnit>
pub fn to_untyped(&self) -> Translation3D<T, UnknownUnit, UnknownUnit>
Drop the units, preserving only the numeric value.
Sourcepub fn from_untyped(t: &Translation3D<T, UnknownUnit, UnknownUnit>) -> Self
pub fn from_untyped(t: &Translation3D<T, UnknownUnit, UnknownUnit>) -> Self
Tag a unitless value with units.
Sourcepub fn to_transform(&self) -> Transform3D<T, Src, Dst>
pub fn to_transform(&self) -> Transform3D<T, Src, Dst>
Returns the matrix representation of this translation.
Sourcepub fn transform_point3d(&self, p: &Point3D<T, Src>) -> Point3D<T::Output, Dst>where
T: Add,
pub fn transform_point3d(&self, p: &Point3D<T, Src>) -> Point3D<T::Output, Dst>where
T: Add,
Translate a point and cast its unit.
Sourcepub fn transform_point2d(&self, p: &Point2D<T, Src>) -> Point2D<T::Output, Dst>where
T: Add,
pub fn transform_point2d(&self, p: &Point2D<T, Src>) -> Point2D<T::Output, Dst>where
T: Add,
Translate a point and cast its unit.
Sourcepub fn transform_box2d(&self, b: &Box2D<T, Src>) -> Box2D<T::Output, Dst>where
T: Add,
pub fn transform_box2d(&self, b: &Box2D<T, Src>) -> Box2D<T::Output, Dst>where
T: Add,
Translate a 2D box and cast its unit.
Sourcepub fn transform_box3d(&self, b: &Box3D<T, Src>) -> Box3D<T::Output, Dst>where
T: Add,
pub fn transform_box3d(&self, b: &Box3D<T, Src>) -> Box3D<T::Output, Dst>where
T: Add,
Translate a 3D box and cast its unit.
Sourcepub fn transform_rect(&self, r: &Rect<T, Src>) -> Rect<T, Dst>where
T: Add<Output = T>,
pub fn transform_rect(&self, r: &Rect<T, Src>) -> Rect<T, Dst>where
T: Add<Output = T>,
Translate a rectangle and cast its unit.
Sourcepub fn inverse(&self) -> Translation3D<T::Output, Dst, Src>where
T: Neg,
pub fn inverse(&self) -> Translation3D<T::Output, Dst, Src>where
T: Neg,
Return the inverse transformation.
Source§impl<T: NumCast + Copy, Src, Dst> Translation3D<T, Src, Dst>
impl<T: NumCast + Copy, Src, Dst> Translation3D<T, Src, Dst>
Sourcepub fn cast<NewT: NumCast>(self) -> Translation3D<NewT, Src, Dst>
pub fn cast<NewT: NumCast>(self) -> Translation3D<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<Translation3D<NewT, Src, Dst>>
pub fn try_cast<NewT: NumCast>(self) -> Option<Translation3D<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) -> Translation3D<f32, Src, Dst>
pub fn to_f32(self) -> Translation3D<f32, Src, Dst>
Cast into an f32 vector.
Sourcepub fn to_f64(self) -> Translation3D<f64, Src, Dst>
pub fn to_f64(self) -> Translation3D<f64, Src, Dst>
Cast into an f64 vector.
Sourcepub fn to_usize(self) -> Translation3D<usize, Src, Dst>
pub fn to_usize(self) -> Translation3D<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) -> Translation3D<u32, Src, Dst>
pub fn to_u32(self) -> Translation3D<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) -> Translation3D<i32, Src, Dst>
pub fn to_i32(self) -> Translation3D<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) -> Translation3D<i64, Src, Dst>
pub fn to_i64(self) -> Translation3D<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<Translation3D<T, Dst1, Dst2>> for Translation3D<T, Src, Dst1>
impl<T: Add, Src, Dst1, Dst2> Add<Translation3D<T, Dst1, Dst2>> for Translation3D<T, Src, Dst1>
Source§impl<T: AddAssign, Src, Dst> AddAssign<Translation3D<T, Dst, Dst>> for Translation3D<T, Src, Dst>
impl<T: AddAssign, Src, Dst> AddAssign<Translation3D<T, Dst, Dst>> for Translation3D<T, Src, Dst>
Source§fn add_assign(&mut self, other: Translation3D<T, Dst, Dst>)
fn add_assign(&mut self, other: Translation3D<T, Dst, Dst>)
+= operation. Read moreSource§impl<T: Clone, Src, Dst> Clone for Translation3D<T, Src, Dst>
impl<T: Clone, Src, Dst> Clone for Translation3D<T, Src, Dst>
Source§impl<T: Debug, Src, Dst> Debug for Translation3D<T, Src, Dst>
impl<T: Debug, Src, Dst> Debug for Translation3D<T, Src, Dst>
Source§impl<T, Src, Dst> Default for Translation3D<T, Src, Dst>where
T: Zero,
impl<T, Src, Dst> Default for Translation3D<T, Src, Dst>where
T: Zero,
Source§impl<'de, T, Src, Dst> Deserialize<'de> for Translation3D<T, Src, Dst>where
T: Deserialize<'de>,
impl<'de, T, Src, Dst> Deserialize<'de> for Translation3D<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<Translation3D<T, Src, Dst>> for Transform3D<T, Src, Dst>
impl<T, Src, Dst> From<Translation3D<T, Src, Dst>> for Transform3D<T, Src, Dst>
Source§fn from(t: Translation3D<T, Src, Dst>) -> Self
fn from(t: Translation3D<T, Src, Dst>) -> Self
Source§impl<T, Src, Dst> From<Translation3D<T, Src, Dst>> for Vector3D<T, Src>
impl<T, Src, Dst> From<Translation3D<T, Src, Dst>> for Vector3D<T, Src>
Source§fn from(t: Translation3D<T, Src, Dst>) -> Self
fn from(t: Translation3D<T, Src, Dst>) -> Self
Source§impl<T, Src, Dst> From<Vector3D<T, Src>> for Translation3D<T, Src, Dst>
impl<T, Src, Dst> From<Vector3D<T, Src>> for Translation3D<T, Src, Dst>
Source§impl<T, Src, Dst> Hash for Translation3D<T, Src, Dst>where
T: Hash,
impl<T, Src, Dst> Hash for Translation3D<T, Src, Dst>where
T: Hash,
Source§impl<T, Src, Dst> PartialEq for Translation3D<T, Src, Dst>where
T: PartialEq,
impl<T, Src, Dst> PartialEq for Translation3D<T, Src, Dst>where
T: PartialEq,
Source§impl<T, Src, Dst> Serialize for Translation3D<T, Src, Dst>where
T: Serialize,
impl<T, Src, Dst> Serialize for Translation3D<T, Src, Dst>where
T: Serialize,
Source§impl<T: Sub, Src, Dst1, Dst2> Sub<Translation3D<T, Dst1, Dst2>> for Translation3D<T, Src, Dst2>
impl<T: Sub, Src, Dst1, Dst2> Sub<Translation3D<T, Dst1, Dst2>> for Translation3D<T, Src, Dst2>
Source§impl<T: SubAssign, Src, Dst> SubAssign<Translation3D<T, Dst, Dst>> for Translation3D<T, Src, Dst>
impl<T: SubAssign, Src, Dst> SubAssign<Translation3D<T, Dst, Dst>> for Translation3D<T, Src, Dst>
Source§fn sub_assign(&mut self, other: Translation3D<T, Dst, Dst>)
fn sub_assign(&mut self, other: Translation3D<T, Dst, Dst>)
-= operation. Read more