pub struct Dir2(/* private fields */);
Expand description
A normalized vector pointing in a direction in 2D space
Implementations§
source§impl Dir2
impl Dir2
sourcepub const SOUTH: Self = _
pub const SOUTH: Self = _
The “south” direction, equivalent to Dir2::NEG_Y
.
sourcepub const WEST: Self = _
pub const WEST: Self = _
The “west” direction, equivalent to Dir2::NEG_X
.
sourcepub const NORTH_EAST: Self = _
pub const NORTH_EAST: Self = _
The “north-east” direction, between Dir2::NORTH
and Dir2::EAST
.
sourcepub const NORTH_WEST: Self = _
pub const NORTH_WEST: Self = _
The “north-west” direction, between Dir2::NORTH
and Dir2::WEST
.
sourcepub const SOUTH_EAST: Self = _
pub const SOUTH_EAST: Self = _
The “south-east” direction, between Dir2::SOUTH
and Dir2::EAST
.
sourcepub const SOUTH_WEST: Self = _
pub const SOUTH_WEST: Self = _
The “south-west” direction, between Dir2::SOUTH
and Dir2::WEST
.
sourcepub fn new(value: Vec2) -> Result<Self, InvalidDirectionError>
pub fn new(value: Vec2) -> Result<Self, InvalidDirectionError>
Create a direction from a finite, nonzero Vec2
, normalizing it.
Returns Err(InvalidDirectionError)
if the length
of the given vector is zero (or very close to zero), infinite, or NaN
.
sourcepub fn new_unchecked(value: Vec2) -> Self
pub fn new_unchecked(value: Vec2) -> Self
sourcepub fn new_and_length(value: Vec2) -> Result<(Self, f32), InvalidDirectionError>
pub fn new_and_length(value: Vec2) -> Result<(Self, f32), InvalidDirectionError>
Create a direction from a finite, nonzero Vec2
, normalizing it and
also returning its original length.
Returns Err(InvalidDirectionError)
if the length
of the given vector is zero (or very close to zero), infinite, or NaN
.
sourcepub fn from_xy(x: f32, y: f32) -> Result<Self, InvalidDirectionError>
pub fn from_xy(x: f32, y: f32) -> Result<Self, InvalidDirectionError>
Create a direction from its x
and y
components.
Returns Err(InvalidDirectionError)
if the length
of the vector formed by the components is zero (or very close to zero), infinite, or NaN
.
sourcepub fn slerp(self, rhs: Self, s: f32) -> Self
pub fn slerp(self, rhs: Self, s: f32) -> Self
Performs a spherical linear interpolation between self
and rhs
based on the value s
.
This corresponds to interpolating between the two directions at a constant angular velocity.
When s == 0.0
, the result will be equal to self
.
When s == 1.0
, the result will be equal to rhs
.
§Example
let dir1 = Dir2::X;
let dir2 = Dir2::Y;
let result1 = dir1.slerp(dir2, 1.0 / 3.0);
assert_relative_eq!(result1, Dir2::from_xy(0.75_f32.sqrt(), 0.5).unwrap());
let result2 = dir1.slerp(dir2, 0.5);
assert_relative_eq!(result2, Dir2::from_xy(0.5_f32.sqrt(), 0.5_f32.sqrt()).unwrap());
sourcepub fn rotation_to(self, other: Self) -> Rot2
pub fn rotation_to(self, other: Self) -> Rot2
Get the rotation that rotates this direction to other
.
sourcepub fn rotation_from(self, other: Self) -> Rot2
pub fn rotation_from(self, other: Self) -> Rot2
Get the rotation that rotates other
to this direction.
sourcepub fn rotation_from_x(self) -> Rot2
pub fn rotation_from_x(self) -> Rot2
Get the rotation that rotates the X-axis to this direction.
sourcepub fn rotation_to_x(self) -> Rot2
pub fn rotation_to_x(self) -> Rot2
Get the rotation that rotates this direction to the X-axis.
sourcepub fn rotation_from_y(self) -> Rot2
pub fn rotation_from_y(self) -> Rot2
Get the rotation that rotates the Y-axis to this direction.
sourcepub fn rotation_to_y(self) -> Rot2
pub fn rotation_to_y(self) -> Rot2
Get the rotation that rotates this direction to the Y-axis.
Methods from Deref<Target = Vec2>§
pub const ZERO: Vec2 = _
pub const ONE: Vec2 = _
pub const NEG_ONE: Vec2 = _
pub const MIN: Vec2 = _
pub const MAX: Vec2 = _
pub const NAN: Vec2 = _
pub const INFINITY: Vec2 = _
pub const NEG_INFINITY: Vec2 = _
pub const X: Vec2 = _
pub const Y: Vec2 = _
pub const NEG_X: Vec2 = _
pub const NEG_Y: Vec2 = _
pub const AXES: [Vec2; 2] = _
sourcepub fn move_towards(&self, rhs: Vec2, d: f32) -> Vec2
pub fn move_towards(&self, rhs: Vec2, d: f32) -> Vec2
Moves towards rhs
based on the value d
.
When d
is 0.0
, the result will be equal to self
. When d
is equal to
self.distance(rhs)
, the result will be equal to rhs
. Will not go past rhs
.
sourcepub fn as_i16vec2(&self) -> I16Vec2
pub fn as_i16vec2(&self) -> I16Vec2
Casts all elements of self
to i16
.
sourcepub fn as_u16vec2(&self) -> U16Vec2
pub fn as_u16vec2(&self) -> U16Vec2
Casts all elements of self
to u16
.
sourcepub fn as_i64vec2(&self) -> I64Vec2
pub fn as_i64vec2(&self) -> I64Vec2
Casts all elements of self
to i64
.
sourcepub fn as_u64vec2(&self) -> U64Vec2
pub fn as_u64vec2(&self) -> U64Vec2
Casts all elements of self
to u64
.
Trait Implementations§
source§impl<'de> Deserialize<'de> for Dir2
impl<'de> Deserialize<'de> for Dir2
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 Distribution<Dir2> for Standard
impl Distribution<Dir2> for Standard
source§impl From<CompassOctant> for Dir2
impl From<CompassOctant> for Dir2
source§fn from(o: CompassOctant) -> Self
fn from(o: CompassOctant) -> Self
source§impl From<CompassQuadrant> for Dir2
impl From<CompassQuadrant> for Dir2
source§fn from(q: CompassQuadrant) -> Self
fn from(q: CompassQuadrant) -> Self
source§impl From<Dir2> for CompassOctant
impl From<Dir2> for CompassOctant
source§impl From<Dir2> for CompassQuadrant
impl From<Dir2> for CompassQuadrant
source§impl FromReflect for Dir2
impl FromReflect for Dir2
source§fn from_reflect(reflect: &dyn Reflect) -> Option<Self>
fn from_reflect(reflect: &dyn Reflect) -> Option<Self>
Self
from a reflected value.source§fn take_from_reflect(
reflect: Box<dyn Reflect>
) -> Result<Self, Box<dyn Reflect>>
fn take_from_reflect( reflect: Box<dyn Reflect> ) -> Result<Self, Box<dyn Reflect>>
Self
using,
constructing the value using from_reflect
if that fails. Read moresource§impl GetTypeRegistration for Dir2
impl GetTypeRegistration for Dir2
source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration
for this type.source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
source§impl PartialEq for Dir2
impl PartialEq for Dir2
source§impl Reflect for Dir2
impl Reflect for Dir2
source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
&mut dyn Any
.source§fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
source§fn as_reflect(&self) -> &dyn Reflect
fn as_reflect(&self) -> &dyn Reflect
source§fn as_reflect_mut(&mut self) -> &mut dyn Reflect
fn as_reflect_mut(&mut self) -> &mut dyn Reflect
source§fn clone_value(&self) -> Box<dyn Reflect>
fn clone_value(&self) -> Box<dyn Reflect>
Reflect
trait object. Read moresource§fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
source§fn reflect_owned(self: Box<Self>) -> ReflectOwned
fn reflect_owned(self: Box<Self>) -> ReflectOwned
source§fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
source§fn apply(&mut self, value: &(dyn Reflect + 'static))
fn apply(&mut self, value: &(dyn Reflect + 'static))
source§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
source§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
source§impl TupleStruct for Dir2
impl TupleStruct for Dir2
source§fn field(&self, index: usize) -> Option<&dyn Reflect>
fn field(&self, index: usize) -> Option<&dyn Reflect>
index
as a
&dyn Reflect
.source§fn field_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>
fn field_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>
index
as a &mut dyn Reflect
.source§fn iter_fields(&self) -> TupleStructFieldIter<'_>
fn iter_fields(&self) -> TupleStructFieldIter<'_>
source§fn clone_dynamic(&self) -> DynamicTupleStruct
fn clone_dynamic(&self) -> DynamicTupleStruct
DynamicTupleStruct
.source§impl TypePath for Dir2
impl TypePath for Dir2
source§fn type_path() -> &'static str
fn type_path() -> &'static str
source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
impl Copy for Dir2
impl Primitive2d for Dir2
impl StructuralPartialEq for Dir2
Auto Trait Implementations§
impl Freeze for Dir2
impl RefUnwindSafe for Dir2
impl Send for Dir2
impl Sync for Dir2
impl Unpin for Dir2
impl UnwindSafe for Dir2
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§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
.source§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
.source§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.source§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.source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
.source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
.source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
.source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
source§impl<T> GetPath for T
impl<T> GetPath for T
source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>
) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p> ) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read moresource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>
) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p> ) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read moresource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moresource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path
. Read more