Skip to main content

Projection

Struct Projection 

Source
#[repr(C)]
pub struct Projection<T> { pub min: T, pub max: T, }
Expand description

Represents the projection of a 2D shape on an axis.

This primitive does not contain the axis itself, merely the start and end bounds of the projection. This is used in overlap checks for convex shapes.

Fields§

§min: T§max: T

Implementations§

Source§

impl<T: Pod + NoUninit> Projection<T>

Source

pub fn as_bytes(&self) -> &[u8]

This type re-interpreted as a slice of bytes.

Source

pub fn as_bytes_mut(&mut self) -> &mut [u8]

This type re-interpreted as a mutable slice of bytes.

Source§

impl<T: Copy + AbsDiffEq<Epsilon = T>> Projection<T>

Source

pub fn abs_diff_eq(&self, other: &Self) -> bool

Returns true if the two values are approximately equal according to the absolute difference between their components.

Source§

impl<T: Copy + RelativeEq<Epsilon = T>> Projection<T>

Source

pub fn relative_eq(&self, other: &Self) -> bool

Returns true if the two values are approximately equal according to the absolute difference between their components, as well as relative-based comparisons.

Source§

impl<T: Copy + UlpsEq<Epsilon = T>> Projection<T>

Source

pub fn ulps_eq(&self, other: &Self) -> bool

Returns true if the two values are approximately equal according to the absolute difference between their components, as well as ULPs (Units in Last Place).

Source§

impl<T> Projection<T>

Source

pub const fn new(min: T, max: T) -> Self

Create a new projection.

Source§

impl<T: Num> Projection<T>

Source

pub const ZERO: Self

A projection of range [0, 0].

Source

pub fn contains(&self, value: T) -> bool

Source

pub fn overlaps(&self, other: Projection<T>) -> bool

Returns true if this projection overlaps the other.

Source

pub fn overlap(&self, other: Projection<T>) -> Option<T>

If this projection overlaps the other, returns the amount which it overlaps.

Source

pub fn len(&self) -> T

Length of the projection.

Source

pub fn center(&self) -> T

Center of the projection.

Trait Implementations§

Source§

impl<T> AbsDiffEq for Projection<T>
where T: AbsDiffEq, T::Epsilon: Copy,

Source§

type Epsilon = <T as AbsDiffEq>::Epsilon

Used for specifying relative comparisons.
Source§

fn default_epsilon() -> Self::Epsilon

The default tolerance to use when testing values that are close together. Read more
Source§

fn abs_diff_eq(&self, other: &Self, epsilon: Self::Epsilon) -> bool

A test for equality that uses the absolute difference to compute the approximate equality of two numbers.
Source§

fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool

The inverse of AbsDiffEq::abs_diff_eq.
Source§

impl<T: Copy + Add<T, Output = T>> Add<&Projection<T>> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &Projection<T>) -> Self::Output

Performs the + operation. Read more
Source§

impl<T: Copy + Add<T, Output = T>> Add<&Projection<T>> for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &Projection<T>) -> Self::Output

Performs the + operation. Read more
Source§

impl<T: Copy + Add<T, Output = T>> Add<Projection<T>> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: Projection<T>) -> Self::Output

Performs the + operation. Read more
Source§

impl<T: Copy + Add<T, Output = T>> Add<T> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: T) -> Self::Output

Performs the + operation. Read more
Source§

impl<T: Copy + Add<T, Output = T>> Add<T> for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: T) -> Self::Output

Performs the + operation. Read more
Source§

impl<T: Add<T, Output = T>> Add for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: Projection<T>) -> Self::Output

Performs the + operation. Read more
Source§

impl<T: Copy + AddAssign<T>> AddAssign<&Projection<T>> for Projection<T>

Source§

fn add_assign(&mut self, rhs: &Projection<T>)

Performs the += operation. Read more
Source§

impl<T: Copy + AddAssign<T>> AddAssign<&T> for Projection<T>

Source§

fn add_assign(&mut self, rhs: &T)

Performs the += operation. Read more
Source§

impl<T: Copy + AddAssign<T>> AddAssign<T> for Projection<T>

Source§

fn add_assign(&mut self, rhs: T)

Performs the += operation. Read more
Source§

impl<T: AddAssign<T>> AddAssign for Projection<T>

Source§

fn add_assign(&mut self, rhs: Projection<T>)

Performs the += operation. Read more
Source§

impl<T: Clone> Clone for Projection<T>

Source§

fn clone(&self) -> Projection<T>

Returns a duplicate 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<T: Debug> Debug for Projection<T>

Source§

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

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

impl<'de, T: Deserialize<'de>> Deserialize<'de> for Projection<T>

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<T: Copy + Div<T, Output = T>> Div<&Projection<T>> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: &Projection<T>) -> Self::Output

Performs the / operation. Read more
Source§

impl<T: Copy + Div<T, Output = T>> Div<&Projection<T>> for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: &Projection<T>) -> Self::Output

Performs the / operation. Read more
Source§

impl<T: Copy + Div<T, Output = T>> Div<Projection<T>> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: Projection<T>) -> Self::Output

Performs the / operation. Read more
Source§

impl<T: Copy + Div<T, Output = T>> Div<T> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: T) -> Self::Output

Performs the / operation. Read more
Source§

impl<T: Copy + Div<T, Output = T>> Div<T> for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: T) -> Self::Output

Performs the / operation. Read more
Source§

impl<T: Div<T, Output = T>> Div for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: Projection<T>) -> Self::Output

Performs the / operation. Read more
Source§

impl<T: Copy + DivAssign<T>> DivAssign<&Projection<T>> for Projection<T>

Source§

fn div_assign(&mut self, rhs: &Projection<T>)

Performs the /= operation. Read more
Source§

impl<T: Copy + DivAssign<T>> DivAssign<&T> for Projection<T>

Source§

fn div_assign(&mut self, rhs: &T)

Performs the /= operation. Read more
Source§

impl<T: Copy + DivAssign<T>> DivAssign<T> for Projection<T>

Source§

fn div_assign(&mut self, rhs: T)

Performs the /= operation. Read more
Source§

impl<T: DivAssign<T>> DivAssign for Projection<T>

Source§

fn div_assign(&mut self, rhs: Projection<T>)

Performs the /= operation. Read more
Source§

impl<T> From<[T; 2]> for Projection<T>

Source§

fn from([min, max]: [T; 2]) -> Self

Converts to this type from the input type.
Source§

impl<T> From<(T, T)> for Projection<T>

Source§

fn from((min, max): (T, T)) -> Self

Converts to this type from the input type.
Source§

impl<T> From<Projection<T>> for [T; 2]

Source§

fn from(_: Projection<T>) -> [T; 2]

Converts to this type from the input type.
Source§

impl<T> From<Projection<T>> for (T, T)

Source§

fn from(_: Projection<T>) -> (T, T)

Converts to this type from the input type.
Source§

impl<T: Hash> Hash for Projection<T>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<T: Copy + Mul<T, Output = T>> Mul<&Projection<T>> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &Projection<T>) -> Self::Output

Performs the * operation. Read more
Source§

impl<T: Copy + Mul<T, Output = T>> Mul<&Projection<T>> for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &Projection<T>) -> Self::Output

Performs the * operation. Read more
Source§

impl<T: Copy + Mul<T, Output = T>> Mul<Projection<T>> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: Projection<T>) -> Self::Output

Performs the * operation. Read more
Source§

impl<T: Copy + Mul<T, Output = T>> Mul<T> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the * operator.
Source§

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

Performs the * operation. Read more
Source§

impl<T: Copy + Mul<T, Output = T>> Mul<T> for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the * operator.
Source§

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

Performs the * operation. Read more
Source§

impl<T: Mul<T, Output = T>> Mul for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: Projection<T>) -> Self::Output

Performs the * operation. Read more
Source§

impl<T: Copy + MulAssign<T>> MulAssign<&Projection<T>> for Projection<T>

Source§

fn mul_assign(&mut self, rhs: &Projection<T>)

Performs the *= operation. Read more
Source§

impl<T: Copy + MulAssign<T>> MulAssign<&T> for Projection<T>

Source§

fn mul_assign(&mut self, rhs: &T)

Performs the *= operation. Read more
Source§

impl<T: Copy + MulAssign<T>> MulAssign<T> for Projection<T>

Source§

fn mul_assign(&mut self, rhs: T)

Performs the *= operation. Read more
Source§

impl<T: MulAssign<T>> MulAssign for Projection<T>

Source§

fn mul_assign(&mut self, rhs: Projection<T>)

Performs the *= operation. Read more
Source§

impl<T: Neg<Output = T>> Neg for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the - operator.
Source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
Source§

impl<T: Numeric<AsU8 = u8, AsU16 = u16, AsU32 = u32, AsU64 = u64, AsU128 = u128, AsUSize = usize, AsI8 = i8, AsI16 = i16, AsI32 = i32, AsI64 = i64, AsI128 = i128, AsISize = isize, AsF32 = f32, AsF64 = f64>> Numeric for Projection<T>

Source§

impl<T: Ord> Ord for Projection<T>

Source§

fn cmp(&self, other: &Projection<T>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<T: PartialEq> PartialEq for Projection<T>

Source§

fn eq(&self, other: &Projection<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: PartialOrd> PartialOrd for Projection<T>

Source§

fn partial_cmp(&self, other: &Projection<T>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<T> RelativeEq for Projection<T>
where T: RelativeEq, T::Epsilon: Copy,

Source§

fn default_max_relative() -> Self::Epsilon

The default relative tolerance for testing values that are far-apart. Read more
Source§

fn relative_eq( &self, other: &Self, epsilon: Self::Epsilon, max_relative: Self::Epsilon, ) -> bool

A test for equality that uses a relative comparison if the values are far apart.
Source§

fn relative_ne( &self, other: &Rhs, epsilon: Self::Epsilon, max_relative: Self::Epsilon, ) -> bool

The inverse of RelativeEq::relative_eq.
Source§

impl<T: Copy + Rem<T, Output = T>> Rem<&Projection<T>> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the % operator.
Source§

fn rem(self, rhs: &Projection<T>) -> Self::Output

Performs the % operation. Read more
Source§

impl<T: Copy + Rem<T, Output = T>> Rem<&Projection<T>> for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the % operator.
Source§

fn rem(self, rhs: &Projection<T>) -> Self::Output

Performs the % operation. Read more
Source§

impl<T: Copy + Rem<T, Output = T>> Rem<Projection<T>> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the % operator.
Source§

fn rem(self, rhs: Projection<T>) -> Self::Output

Performs the % operation. Read more
Source§

impl<T: Copy + Rem<T, Output = T>> Rem<T> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the % operator.
Source§

fn rem(self, rhs: T) -> Self::Output

Performs the % operation. Read more
Source§

impl<T: Copy + Rem<T, Output = T>> Rem<T> for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the % operator.
Source§

fn rem(self, rhs: T) -> Self::Output

Performs the % operation. Read more
Source§

impl<T: Rem<T, Output = T>> Rem for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the % operator.
Source§

fn rem(self, rhs: Projection<T>) -> Self::Output

Performs the % operation. Read more
Source§

impl<T: Copy + RemAssign<T>> RemAssign<&Projection<T>> for Projection<T>

Source§

fn rem_assign(&mut self, rhs: &Projection<T>)

Performs the %= operation. Read more
Source§

impl<T: Copy + RemAssign<T>> RemAssign<&T> for Projection<T>

Source§

fn rem_assign(&mut self, rhs: &T)

Performs the %= operation. Read more
Source§

impl<T: Copy + RemAssign<T>> RemAssign<T> for Projection<T>

Source§

fn rem_assign(&mut self, rhs: T)

Performs the %= operation. Read more
Source§

impl<T: RemAssign<T>> RemAssign for Projection<T>

Source§

fn rem_assign(&mut self, rhs: Projection<T>)

Performs the %= operation. Read more
Source§

impl<T: Serialize> Serialize for Projection<T>

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<T: Copy + Sub<T, Output = T>> Sub<&Projection<T>> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: &Projection<T>) -> Self::Output

Performs the - operation. Read more
Source§

impl<T: Copy + Sub<T, Output = T>> Sub<&Projection<T>> for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: &Projection<T>) -> Self::Output

Performs the - operation. Read more
Source§

impl<T: Copy + Sub<T, Output = T>> Sub<Projection<T>> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: Projection<T>) -> Self::Output

Performs the - operation. Read more
Source§

impl<T: Copy + Sub<T, Output = T>> Sub<T> for &Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: T) -> Self::Output

Performs the - operation. Read more
Source§

impl<T: Copy + Sub<T, Output = T>> Sub<T> for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: T) -> Self::Output

Performs the - operation. Read more
Source§

impl<T: Sub<T, Output = T>> Sub for Projection<T>

Source§

type Output = Projection<T>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: Projection<T>) -> Self::Output

Performs the - operation. Read more
Source§

impl<T: Copy + SubAssign<T>> SubAssign<&Projection<T>> for Projection<T>

Source§

fn sub_assign(&mut self, rhs: &Projection<T>)

Performs the -= operation. Read more
Source§

impl<T: Copy + SubAssign<T>> SubAssign<&T> for Projection<T>

Source§

fn sub_assign(&mut self, rhs: &T)

Performs the -= operation. Read more
Source§

impl<T: Copy + SubAssign<T>> SubAssign<T> for Projection<T>

Source§

fn sub_assign(&mut self, rhs: T)

Performs the -= operation. Read more
Source§

impl<T: SubAssign<T>> SubAssign for Projection<T>

Source§

fn sub_assign(&mut self, rhs: Projection<T>)

Performs the -= operation. Read more
Source§

impl<T> UlpsEq for Projection<T>
where T: UlpsEq, T::Epsilon: Copy,

Source§

fn default_max_ulps() -> u32

The default ULPs to tolerate when testing values that are far-apart. Read more
Source§

fn ulps_eq(&self, other: &Self, epsilon: Self::Epsilon, max_ulps: u32) -> bool

A test for equality that uses units in the last place (ULP) if the values are far apart.
Source§

fn ulps_ne(&self, other: &Rhs, epsilon: Self::Epsilon, max_ulps: u32) -> bool

The inverse of UlpsEq::ulps_eq.
Source§

impl<T: Zeroable> Zeroable for Projection<T>

Source§

fn zeroed() -> Self

Source§

impl<T: Copy> Copy for Projection<T>

Source§

impl<T: Eq> Eq for Projection<T>

Source§

impl<T: Pod> Pod for Projection<T>

Source§

impl<T> StructuralPartialEq for Projection<T>

Auto Trait Implementations§

§

impl<T> Freeze for Projection<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for Projection<T>
where T: RefUnwindSafe,

§

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

§

impl<T> Sync for Projection<T>
where T: Sync,

§

impl<T> Unpin for Projection<T>
where T: Unpin,

§

impl<T> UnsafeUnpin for Projection<T>
where T: UnsafeUnpin,

§

impl<T> UnwindSafe for Projection<T>
where T: UnwindSafe,

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> CheckedBitPattern for T
where T: AnyBitPattern,

Source§

type Bits = T

Self must have the same layout as the specified Bits except for the possible invalid bit patterns being checked during is_valid_bit_pattern.
Source§

fn is_valid_bit_pattern(_bits: &T) -> bool

If this function returns true, then it must be valid to reinterpret bits as &Self.
Source§

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

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

Source§

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

Source§

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> AnyBitPattern for T
where T: Pod,

Source§

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

Source§

impl<T> NoUninit for T
where T: Pod,

Source§

impl<T, Rhs> NumAssignOps<Rhs> for T
where T: AddAssign<Rhs> + SubAssign<Rhs> + MulAssign<Rhs> + DivAssign<Rhs> + RemAssign<Rhs>,

Source§

impl<T, Rhs, Output> NumOps<Rhs, Output> for T
where T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>,

Source§

impl<T, Base> RefNum<Base> for T
where T: NumOps<Base, Base> + for<'r> NumOps<&'r Base, Base>,