pub struct Wrapped2D<T, const X: u32, const Y: u32>(Vec2D<T>);Expand description
A 2D vector wrapper with fixed-size wrapping capabilities.
This struct is generic over a numeric type T and two constants X and Y,
which represent the fixed size of the 2D wrapping area.
§Type Parameters
T- Any numeric type that implements theFixedtrait.X- The maximum bound for the x-axis.Y- The maximum bound for the y-axis.
Tuple Fields§
§0: Vec2D<T>Implementations§
Source§impl<T, const X: u32, const Y: u32> Wrapped2D<T, X, Y>where
T: Fixed,
impl<T, const X: u32, const Y: u32> Wrapped2D<T, X, Y>where
T: Fixed,
Sourcepub fn wrap_around_map(&self) -> Self
pub fn wrap_around_map(&self) -> Self
Wraps the coordinates of the vector around the bounds defined by X and Y.
§Returns
A new Wrapped2D instance with its coordinates wrapped within the bounds.
Sourcepub fn wrap_coordinate(value: T, max_value: T) -> T
pub fn wrap_coordinate(value: T, max_value: T) -> T
Methods from Deref<Target = Vec2D<T>>§
Sourcepub fn abs(&self) -> T
pub fn abs(&self) -> T
Computes the magnitude (absolute value) of the vector.
§Returns
The magnitude of the vector as a scalar of type T.
pub fn abs_sq(&self) -> T
pub fn round(&self) -> Self
pub fn round_to_2(&self) -> Self
pub fn floor(&self) -> Self
pub fn project_overboundary_fw(&self, dir: &Self) -> Self
pub fn project_overboundary_bw(&self, dir: &Self) -> Self
Sourcepub fn unwrapped_to(&self, other: &Self) -> Self
pub fn unwrapped_to(&self, other: &Self) -> Self
Computes an “unwrapped” vector pointing from the current vector (self) to another vector (other).
This method considers potential wrapping around a 2D map (based on the map size) and calculates
the smallest vector that connects self to other. The wrapping allows for efficient navigation
across boundaries.
§Arguments
other- The target vector to which the direction is computed.
§Returns
A Vec2D representing the shortest unwrapped direction from self to other.
pub fn unwrap_all(&self) -> [Self; 9]
pub fn unwrapped_to_top_right(&self, other: &Self) -> Self
pub fn unwrapped_to_bottom_right(&self, other: &Self) -> Self
fn get_projected_in_range( &self, to: &Self, range: (&[i8], &[i8]), ) -> Vec<(Self, I64F64)>
Sourcepub fn perp_unit_to(&self, other: &Self) -> Self
pub fn perp_unit_to(&self, other: &Self) -> Self
Computes a perpendicular unit vector pointing to another vector (other).
The direction of the perpendicular vector depends on whether self is clockwise
or counterclockwise to other.
§Arguments
other- The target vector to compare directions with.
§Returns
A unit Vec2D perpendicular to self pointing towards other.
Returns a zero vector if self and other are collinear.
Sourcepub fn flip_unit(&self) -> Self
pub fn flip_unit(&self) -> Self
Computes a flipped collinear unit vector to the current vector.
This is equivalent to rotating the vector 180 degrees.
§Returns
A normalized flipped collinear Vec2D.
Sourcepub fn is_clockwise_to(&self, other: &Self) -> Option<bool>
pub fn is_clockwise_to(&self, other: &Self) -> Option<bool>
Determines whether the current vector is clockwise relative to another vector (other).
This is determined using the cross product:
Some(true)ifselfis clockwise toother.Some(false)ifselfis counterclockwise toother.Noneifselfandotherare collinear.
§Arguments
other- The vector to compare relative direction with.
§Returns
An Option<bool> indicating the relative direction.
Sourcepub fn angle_to(&self, other: &Self) -> T
pub fn angle_to(&self, other: &Self) -> T
Computes the angle (in degrees) between the current vector and another vector (other).
The method calculates the cosine of the angle using the dot product, clamps it to
the valid range of [-1, 1], and then computes the angle in degrees.
§Arguments
other- The target vector to compute the angle to.
§Returns
The angle in degrees as a scalar of type T.
pub fn is_eq_signum(&self, other: &Self) -> bool
Sourcepub fn euclid_distance(&self, other: &Self) -> T
pub fn euclid_distance(&self, other: &Self) -> T
Sourcepub fn euclid_distance_sq(&self, other: &Self) -> T
pub fn euclid_distance_sq(&self, other: &Self) -> T
pub fn get(&self, axis: VecAxis) -> T
pub fn is_zero(&self) -> bool
Sourcepub fn wrap_around_map(&self) -> Self
pub fn wrap_around_map(&self) -> Self
Wraps the vector around a predefined 2D map.
This method ensures the vector’s coordinates do not exceed the boundaries
of the map defined by map_size(). If coordinates go beyond these boundaries,
they are wrapped to remain within valid values.
pub fn wraps(&self) -> WrapDirection
pub fn wrap_by(&self, dir: &WrapDirection) -> Self
Trait Implementations§
Auto Trait Implementations§
impl<T, const X: u32, const Y: u32> Freeze for Wrapped2D<T, X, Y>where
T: Freeze,
impl<T, const X: u32, const Y: u32> RefUnwindSafe for Wrapped2D<T, X, Y>where
T: RefUnwindSafe,
impl<T, const X: u32, const Y: u32> Send for Wrapped2D<T, X, Y>where
T: Send,
impl<T, const X: u32, const Y: u32> Sync for Wrapped2D<T, X, Y>where
T: Sync,
impl<T, const X: u32, const Y: u32> Unpin for Wrapped2D<T, X, Y>where
T: Unpin,
impl<T, const X: u32, const Y: u32> UnwindSafe for Wrapped2D<T, X, Y>where
T: UnwindSafe,
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> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§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<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 moreSource§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
Source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
Source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.