Struct bevy_math::Dir2

source ·
pub struct Dir2(/* private fields */);
Expand description

A normalized vector pointing in a direction in 2D space

Implementations§

source§

impl Dir2

source

pub const X: Self = _

A unit vector pointing along the positive X axis.

source

pub const Y: Self = _

A unit vector pointing along the positive Y axis.

source

pub const NEG_X: Self = _

A unit vector pointing along the negative X axis.

source

pub const NEG_Y: Self = _

A unit vector pointing along the negative Y axis.

source

pub const AXES: [Self; 2] = _

The directional axes.

source

pub const NORTH: Self = _

The “north” direction, equivalent to Dir2::Y.

source

pub const SOUTH: Self = _

The “south” direction, equivalent to Dir2::NEG_Y.

source

pub const EAST: Self = _

The “east” direction, equivalent to Dir2::X.

source

pub const WEST: Self = _

The “west” direction, equivalent to Dir2::NEG_X.

source

pub const NORTH_EAST: Self = _

The “north-east” direction, between Dir2::NORTH and Dir2::EAST.

source

pub const NORTH_WEST: Self = _

The “north-west” direction, between Dir2::NORTH and Dir2::WEST.

source

pub const SOUTH_EAST: Self = _

The “south-east” direction, between Dir2::SOUTH and Dir2::EAST.

source

pub const SOUTH_WEST: Self = _

The “south-west” direction, between Dir2::SOUTH and Dir2::WEST.

source

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.

source

pub fn new_unchecked(value: Vec2) -> Self

Create a Dir2 from a Vec2 that is already normalized.

§Warning

value must be normalized, i.e its length must be 1.0.

source

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.

source

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.

source

pub const fn as_vec2(&self) -> Vec2

Returns the inner Vec2

source

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());
source

pub fn rotation_to(self, other: Self) -> Rot2

Get the rotation that rotates this direction to other.

source

pub fn rotation_from(self, other: Self) -> Rot2

Get the rotation that rotates other to this direction.

source

pub fn rotation_from_x(self) -> Rot2

Get the rotation that rotates the X-axis to this direction.

source

pub fn rotation_to_x(self) -> Rot2

Get the rotation that rotates this direction to the X-axis.

source

pub fn rotation_from_y(self) -> Rot2

Get the rotation that rotates this direction to the Y-axis.

source

pub fn rotation_to_y(self) -> Rot2

Get the rotation that rotates the Y-axis to this direction.

Methods from Deref<Target = Vec2>§

source

pub const ZERO: Vec2 = _

source

pub const ONE: Vec2 = _

source

pub const NEG_ONE: Vec2 = _

source

pub const MIN: Vec2 = _

source

pub const MAX: Vec2 = _

source

pub const NAN: Vec2 = _

source

pub const INFINITY: Vec2 = _

source

pub const NEG_INFINITY: Vec2 = _

source

pub const X: Vec2 = _

source

pub const Y: Vec2 = _

source

pub const NEG_X: Vec2 = _

source

pub const NEG_Y: Vec2 = _

source

pub const AXES: [Vec2; 2] = _

source

pub fn to_array(&self) -> [f32; 2]

[x, y]

source

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.

source

pub fn as_dvec2(&self) -> DVec2

Casts all elements of self to f64.

source

pub fn as_i16vec2(&self) -> I16Vec2

Casts all elements of self to i16.

source

pub fn as_u16vec2(&self) -> U16Vec2

Casts all elements of self to u16.

source

pub fn as_ivec2(&self) -> IVec2

Casts all elements of self to i32.

source

pub fn as_uvec2(&self) -> UVec2

Casts all elements of self to u32.

source

pub fn as_i64vec2(&self) -> I64Vec2

Casts all elements of self to i64.

source

pub fn as_u64vec2(&self) -> U64Vec2

Casts all elements of self to u64.

Trait Implementations§

source§

impl Clone for Dir2

source§

fn clone(&self) -> Dir2

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Dir2

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Deref for Dir2

§

type Target = Vec2

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<'de> Deserialize<'de> for Dir2

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Distribution<Dir2> for Standard

Available on crate feature rand only.
source§

fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Dir2

Generate a random value of T, using rng as the source of randomness.
source§

fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
where R: Rng, Self: Sized,

Create an iterator that generates random values of T, using rng as the source of randomness. Read more
source§

fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>
where F: Fn(T) -> S, Self: Sized,

Create a distribution of values of ‘S’ by mapping the output of Self through the closure F Read more
source§

impl From<CompassOctant> for Dir2

source§

fn from(o: CompassOctant) -> Self

Converts to this type from the input type.
source§

impl From<CompassQuadrant> for Dir2

source§

fn from(q: CompassQuadrant) -> Self

Converts to this type from the input type.
source§

impl From<Dir2> for CompassOctant

source§

fn from(dir: Dir2) -> Self

Converts a Dir2 to a CompassOctant in a lossy manner. Converting back to a Dir2 is not guaranteed to yield the same value.

source§

impl From<Dir2> for CompassQuadrant

source§

fn from(dir: Dir2) -> Self

Converts a Dir2 to a CompassQuadrant in a lossy manner. Converting back to a Dir2 is not guaranteed to yield the same value.

source§

impl From<Dir2> for Vec2

source§

fn from(value: Dir2) -> Self

Converts to this type from the input type.
source§

impl FromReflect for Dir2
where Self: Any + Send + Sync, Vec2: FromReflect + TypePath + RegisterForReflection,

source§

fn from_reflect(reflect: &dyn Reflect) -> Option<Self>

Constructs a concrete instance of Self from a reflected value.
source§

fn take_from_reflect( reflect: Box<dyn Reflect>, ) -> Result<Self, Box<dyn Reflect>>

Attempts to downcast the given value to Self using, constructing the value using from_reflect if that fails. Read more
source§

impl FromRng for Dir2

Available on crate feature rand only.
source§

fn from_rng<R: Rng + ?Sized>(rng: &mut R) -> Self

Construct a value of this type uniformly at random using rng as the source of randomness.
source§

impl GetTypeRegistration for Dir2
where Self: Any + Send + Sync, Vec2: FromReflect + TypePath + RegisterForReflection,

source§

fn get_type_registration() -> TypeRegistration

Returns the default TypeRegistration for this type.
source§

fn register_type_dependencies(registry: &mut TypeRegistry)

Registers other types needed by this type. Read more
source§

impl Mul<Dir2> for Rot2

source§

fn mul(self, direction: Dir2) -> Self::Output

Rotates the Dir2 using a Rot2.

§

type Output = Dir2

The resulting type after applying the * operator.
source§

impl Mul<Dir2> for f32

§

type Output = Vec2

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Dir2) -> Self::Output

Performs the * operation. Read more
source§

impl Mul<f32> for Dir2

§

type Output = Vec2

The resulting type after applying the * operator.
source§

fn mul(self, rhs: f32) -> Self::Output

Performs the * operation. Read more
source§

impl Neg for Dir2

§

type Output = Dir2

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl PartialEq for Dir2

source§

fn eq(&self, other: &Dir2) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Reflect for Dir2
where Self: Any + Send + Sync, Vec2: FromReflect + TypePath + RegisterForReflection,

source§

fn get_represented_type_info(&self) -> Option<&'static TypeInfo>

Returns the TypeInfo of the type represented by this value. Read more
source§

fn into_any(self: Box<Self>) -> Box<dyn Any>

Returns the value as a Box<dyn Any>.
source§

fn as_any(&self) -> &dyn Any

Returns the value as a &dyn Any.
source§

fn as_any_mut(&mut self) -> &mut dyn Any

Returns the value as a &mut dyn Any.
source§

fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>

Casts this type to a boxed reflected value.
source§

fn as_reflect(&self) -> &dyn Reflect

Casts this type to a reflected value.
source§

fn as_reflect_mut(&mut self) -> &mut dyn Reflect

Casts this type to a mutable reflected value.
source§

fn clone_value(&self) -> Box<dyn Reflect>

Clones the value as a Reflect trait object. Read more
source§

fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>

Performs a type-checked assignment of a reflected value to this value. Read more
source§

fn try_apply(&mut self, value: &dyn Reflect) -> Result<(), ApplyError>

Tries to apply a reflected value to this value. Read more
source§

fn reflect_kind(&self) -> ReflectKind

Returns a zero-sized enumeration of “kinds” of type. Read more
source§

fn reflect_ref(&self) -> ReflectRef<'_>

Returns an immutable enumeration of “kinds” of type. Read more
source§

fn reflect_mut(&mut self) -> ReflectMut<'_>

Returns a mutable enumeration of “kinds” of type. Read more
source§

fn reflect_owned(self: Box<Self>) -> ReflectOwned

Returns an owned enumeration of “kinds” of type. Read more
source§

fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>

Returns a “partial equality” comparison result. Read more
source§

fn debug(&self, f: &mut Formatter<'_>) -> Result

Debug formatter for the value. Read more
source§

fn apply(&mut self, value: &(dyn Reflect + 'static))

Applies a reflected value to this value. Read more
source§

fn reflect_hash(&self) -> Option<u64>

Returns a hash of the value (which includes the type). Read more
source§

fn serializable(&self) -> Option<Serializable<'_>>

Returns a serializable version of the value. Read more
source§

fn is_dynamic(&self) -> bool

Indicates whether or not this type is a dynamic type. Read more
source§

impl Serialize for Dir2

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl TryFrom<Vec2> for Dir2

§

type Error = InvalidDirectionError

The type returned in the event of a conversion error.
source§

fn try_from(value: Vec2) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TupleStruct for Dir2
where Self: Any + Send + Sync, Vec2: FromReflect + TypePath + RegisterForReflection,

source§

fn field(&self, index: usize) -> Option<&dyn Reflect>

Returns a reference to the value of the field with index index as a &dyn Reflect.
source§

fn field_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>

Returns a mutable reference to the value of the field with index index as a &mut dyn Reflect.
source§

fn field_len(&self) -> usize

Returns the number of fields in the tuple struct.
source§

fn iter_fields(&self) -> TupleStructFieldIter<'_>

Returns an iterator over the values of the tuple struct’s fields.
source§

fn clone_dynamic(&self) -> DynamicTupleStruct

Clones the struct into a DynamicTupleStruct.
source§

impl TypePath for Dir2
where Self: Any + Send + Sync,

source§

fn type_path() -> &'static str

Returns the fully qualified path of the underlying type. Read more
source§

fn short_type_path() -> &'static str

Returns a short, pretty-print enabled path to the type. Read more
source§

fn type_ident() -> Option<&'static str>

Returns the name of the type, or None if it is anonymous. Read more
source§

fn crate_name() -> Option<&'static str>

Returns the name of the crate the type is in, or None if it is anonymous. Read more
source§

fn module_path() -> Option<&'static str>

Returns the path to the module the type is in, or None if it is anonymous. Read more
source§

impl Typed for Dir2
where Self: Any + Send + Sync, Vec2: FromReflect + TypePath + RegisterForReflection,

source§

fn type_info() -> &'static TypeInfo

Returns the compile-time info for the underlying type.
source§

impl Copy for Dir2

source§

impl Primitive2d for Dir2

source§

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Copy,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> Downcast for T
where T: Any,

source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> DynamicTypePath for T
where T: TypePath,

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> GetPath for T
where T: Reflect + ?Sized,

source§

fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>

Returns a reference to the value specified by path. Read more
source§

fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>

Returns a mutable reference to the value specified by path. Read more
source§

fn path<'p, T>( &self, path: impl ReflectPath<'p>, ) -> Result<&T, ReflectPathError<'p>>
where T: Reflect,

Returns a statically typed reference to the value specified by path. Read more
source§

fn path_mut<'p, T>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut T, ReflectPathError<'p>>
where T: Reflect,

Returns a statically typed mutable reference to the value specified by path. Read more
source§

impl<S> GetTupleStructField for S
where S: TupleStruct,

source§

fn get_field<T>(&self, index: usize) -> Option<&T>
where T: Reflect,

Returns a reference to the value of the field with index index, downcast to T.
source§

fn get_field_mut<T>(&mut self, index: usize) -> Option<&mut T>
where T: Reflect,

Returns a mutable reference to the value of the field with index index, downcast to T.
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> TypeData for T
where T: 'static + Send + Sync + Clone,

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> ConditionalSend for T
where T: Send,

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,