Struct Translation3D
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§
§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) -> Translation3D<T, Src, Dst>
pub fn splat(v: T) -> Translation3D<T, Src, Dst>where
T: Clone,
pub fn identity() -> Translation3D<T, Src, Dst>where
T: Zero,
pub fn identity() -> Translation3D<T, Src, Dst>where
T: Zero,
Creates no-op translation (x, y and z is zero()).
pub 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);pub 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.
§impl<T, Src, Dst> Translation3D<T, Src, Dst>where
T: Copy,
impl<T, Src, Dst> Translation3D<T, Src, Dst>where
T: Copy,
pub 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.
pub fn from_untyped(
t: &Translation3D<T, UnknownUnit, UnknownUnit>,
) -> Translation3D<T, Src, Dst>
pub fn from_untyped( t: &Translation3D<T, UnknownUnit, UnknownUnit>, ) -> Translation3D<T, Src, Dst>
Tag a unitless value with units.
pub fn to_transform(&self) -> Transform3D<T, Src, Dst>
pub fn to_transform(&self) -> Transform3D<T, Src, Dst>
Returns the matrix representation of this translation.
pub fn transform_point3d(
&self,
p: &Point3D<T, Src>,
) -> Point3D<<T as Add>::Output, Dst>where
T: Add,
pub fn transform_point3d(
&self,
p: &Point3D<T, Src>,
) -> Point3D<<T as Add>::Output, Dst>where
T: Add,
Translate a point and cast its unit.
pub fn transform_point2d(
&self,
p: &Point2D<T, Src>,
) -> Point2D<<T as Add>::Output, Dst>where
T: Add,
pub fn transform_point2d(
&self,
p: &Point2D<T, Src>,
) -> Point2D<<T as Add>::Output, Dst>where
T: Add,
Translate a point and cast its unit.
pub fn transform_box2d(
&self,
b: &Box2D<T, Src>,
) -> Box2D<<T as Add>::Output, Dst>where
T: Add,
pub fn transform_box2d(
&self,
b: &Box2D<T, Src>,
) -> Box2D<<T as Add>::Output, Dst>where
T: Add,
Translate a 2D box and cast its unit.
pub fn transform_box3d(
&self,
b: &Box3D<T, Src>,
) -> Box3D<<T as Add>::Output, Dst>where
T: Add,
pub fn transform_box3d(
&self,
b: &Box3D<T, Src>,
) -> Box3D<<T as Add>::Output, Dst>where
T: Add,
Translate a 3D box and cast its unit.
pub 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.
pub fn inverse(&self) -> Translation3D<<T as Neg>::Output, Dst, Src>where
T: Neg,
pub fn inverse(&self) -> Translation3D<<T as Neg>::Output, Dst, Src>where
T: Neg,
Return the inverse transformation.
§impl<T, Src, Dst> Translation3D<T, Src, Dst>
impl<T, Src, Dst> Translation3D<T, Src, Dst>
pub fn cast<NewT>(self) -> Translation3D<NewT, Src, Dst>where
NewT: NumCast,
pub fn cast<NewT>(self) -> Translation3D<NewT, Src, Dst>where
NewT: NumCast,
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.
pub fn try_cast<NewT>(self) -> Option<Translation3D<NewT, Src, Dst>>where
NewT: NumCast,
pub fn try_cast<NewT>(self) -> Option<Translation3D<NewT, Src, Dst>>where
NewT: NumCast,
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.
pub fn to_f32(self) -> Translation3D<f32, Src, Dst>
pub fn to_f32(self) -> Translation3D<f32, Src, Dst>
Cast into an f32 vector.
pub fn to_f64(self) -> Translation3D<f64, Src, Dst>
pub fn to_f64(self) -> Translation3D<f64, Src, Dst>
Cast into an f64 vector.
pub 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.
pub 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.
pub 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.
pub 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§
§impl<T, Src, Dst1, Dst2> Add<Translation3D<T, Dst1, Dst2>> for Translation3D<T, Src, Dst1>where
T: Add,
impl<T, Src, Dst1, Dst2> Add<Translation3D<T, Dst1, Dst2>> for Translation3D<T, Src, Dst1>where
T: Add,
§type Output = Translation3D<<T as Add>::Output, Src, Dst2>
type Output = Translation3D<<T as Add>::Output, Src, Dst2>
+ operator.§fn add(
self,
other: Translation3D<T, Dst1, Dst2>,
) -> <Translation3D<T, Src, Dst1> as Add<Translation3D<T, Dst1, Dst2>>>::Output
fn add( self, other: Translation3D<T, Dst1, Dst2>, ) -> <Translation3D<T, Src, Dst1> as Add<Translation3D<T, Dst1, Dst2>>>::Output
+ operation. Read more§impl<T, Src, Dst> AddAssign<Translation3D<T, Dst, Dst>> for Translation3D<T, Src, Dst>where
T: AddAssign,
impl<T, Src, Dst> AddAssign<Translation3D<T, Dst, Dst>> for Translation3D<T, Src, Dst>where
T: AddAssign,
§fn add_assign(&mut self, other: Translation3D<T, Dst, Dst>)
fn add_assign(&mut self, other: Translation3D<T, Dst, Dst>)
+= operation. Read more§impl<T, Src, Dst> Clone for Translation3D<T, Src, Dst>where
T: Clone,
impl<T, Src, Dst> Clone for Translation3D<T, Src, Dst>where
T: Clone,
§fn clone(&self) -> Translation3D<T, Src, Dst>
fn clone(&self) -> Translation3D<T, Src, Dst>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl<T, Src, Dst> Debug for Translation3D<T, Src, Dst>where
T: Debug,
impl<T, Src, Dst> Debug for Translation3D<T, Src, Dst>where
T: Debug,
§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,
§fn default() -> Translation3D<T, Src, Dst>
fn default() -> Translation3D<T, Src, Dst>
§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>
§fn from(t: Translation3D<T, Src, Dst>) -> Transform3D<T, Src, Dst>
fn from(t: Translation3D<T, Src, Dst>) -> Transform3D<T, Src, Dst>
§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>
§fn from(t: Translation3D<T, Src, Dst>) -> Vector3D<T, Src>
fn from(t: Translation3D<T, Src, Dst>) -> Vector3D<T, Src>
§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>
§fn from(v: Vector3D<T, Src>) -> Translation3D<T, Src, Dst>
fn from(v: Vector3D<T, Src>) -> Translation3D<T, Src, Dst>
§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,
§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,
§impl<T, Src, Dst1, Dst2> Sub<Translation3D<T, Dst1, Dst2>> for Translation3D<T, Src, Dst2>where
T: Sub,
impl<T, Src, Dst1, Dst2> Sub<Translation3D<T, Dst1, Dst2>> for Translation3D<T, Src, Dst2>where
T: Sub,
§type Output = Translation3D<<T as Sub>::Output, Src, Dst1>
type Output = Translation3D<<T as Sub>::Output, Src, Dst1>
- operator.§fn sub(
self,
other: Translation3D<T, Dst1, Dst2>,
) -> <Translation3D<T, Src, Dst2> as Sub<Translation3D<T, Dst1, Dst2>>>::Output
fn sub( self, other: Translation3D<T, Dst1, Dst2>, ) -> <Translation3D<T, Src, Dst2> as Sub<Translation3D<T, Dst1, Dst2>>>::Output
- operation. Read more§impl<T, Src, Dst> SubAssign<Translation3D<T, Dst, Dst>> for Translation3D<T, Src, Dst>where
T: SubAssign,
impl<T, Src, Dst> SubAssign<Translation3D<T, Dst, Dst>> for Translation3D<T, Src, Dst>where
T: SubAssign,
§fn sub_assign(&mut self, other: Translation3D<T, Dst, Dst>)
fn sub_assign(&mut self, other: Translation3D<T, Dst, Dst>)
-= operation. Read moreimpl<T, Src, Dst> Copy for Translation3D<T, Src, Dst>where
T: Copy,
impl<T, Src, Dst> Eq for Translation3D<T, Src, Dst>where
T: Eq,
Auto Trait Implementations§
impl<T, Src, Dst> Freeze for Translation3D<T, Src, Dst>where
T: Freeze,
impl<T, Src, Dst> RefUnwindSafe for Translation3D<T, Src, Dst>
impl<T, Src, Dst> Send for Translation3D<T, Src, Dst>
impl<T, Src, Dst> Sync for Translation3D<T, Src, Dst>
impl<T, Src, Dst> Unpin for Translation3D<T, Src, Dst>
impl<T, Src, Dst> UnwindSafe for Translation3D<T, Src, Dst>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<State, Message> IntoBoot<State, Message> for State
impl<State, Message> IntoBoot<State, Message> for State
Source§fn into_boot(self) -> (State, Task<Message>)
fn into_boot(self) -> (State, Task<Message>)
Application.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere
T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().