Octant

Enum Octant 

Source
#[repr(u8)]
pub enum Octant { Nnn = 0, Nnp = 1, Npn = 2, Npp = 3, Pnn = 4, Pnp = 5, Ppn = 6, Ppp = 7, }
Expand description

Identifies one of eight octants, or elements of a 2×2×2 cube.

Used with OctantMask and OctantMap.

This enum’s discriminants are not currently to be considered stable; they may be reordered.

Variants§

§

Nnn = 0

The -X, -Y, -Z octant.

§

Nnp = 1

The -X, -Y, +Z octant.

§

Npn = 2

The -X, +Y, -Z octant.

§

Npp = 3

The -X, +Y, +Z octant.

§

Pnn = 4

The +X, -Y, -Z octant.

§

Pnp = 5

The +X, -Y, +Z octant.

§

Ppn = 6

The +X, +Y, -Z octant.

§

Ppp = 7

The +X, +Y, +Z octant.

Implementations§

Source§

impl Octant

Source

pub const ALL: [Octant; 8]

All values of the enum.

Source

pub fn try_from_positive_cube(cube: Cube) -> Option<Octant>

Given a cube in the volume (0..2)³, return which octant of that volume it is.

Source

pub fn try_from_01<T, U>( corner_or_translation: Vector3D<T, U>, ) -> Option<Octant>
where T: Copy + NumCast,

Given the low corner of an octant in the volume (0..2)³, return which octant it is.

That is, each coordinate of the returned Vector3D is either 0 or 1. This is equivalent to Self::try_from_positive_cube() but with more flexible input.

TODO: better trait bounds would be Zero + One

Source

pub fn from_vector(vector: Vector3D<f64, Cube>) -> Octant

Returns the octant the given vector points toward, when interpreted as pointing away from the center point where all octants meet.

Ties due to zero components are broken in the positive direction.

Source

pub fn to_positive_cube(self) -> Cube

Returns this octant of the volume (0..2)³.

That is, each coordinate of the returned Cube is either 0 or 1.

Source

pub fn to_01<U>(self) -> Vector3D<u8, U>

Returns this octant of the volume (0..2)³ expressed as a translation vector from the origin.

That is, each coordinate of the returned Vector3D is either 0 or 1.

Source

pub fn reflect<T, U>(self, vector: Vector3D<T, U>) -> Vector3D<T, U>
where T: Neg<Output = T>,

For each component of vector, negate it if self is on the negative side of that axis.

This may be used to transform between positive-octant-only data and data mirrored into arbitrary octants.

Trait Implementations§

Source§

impl<'arbitrary> Arbitrary<'arbitrary> for Octant

Source§

fn arbitrary(u: &mut Unstructured<'arbitrary>) -> Result<Octant, Error>

Generate an arbitrary value of Self from the given unstructured data. Read more
Source§

fn arbitrary_take_rest(u: Unstructured<'arbitrary>) -> Result<Octant, Error>

Generate an arbitrary value of Self from the entirety of the given unstructured data. Read more
Source§

fn size_hint(depth: usize) -> (usize, Option<usize>)

Get a size hint for how many bytes out of an Unstructured this type needs to construct itself. Read more
Source§

fn try_size_hint( depth: usize, ) -> Result<(usize, Option<usize>), MaxRecursionReached>

Get a size hint for how many bytes out of an Unstructured this type needs to construct itself. Read more
Source§

impl Clone for Octant

Source§

fn clone(&self) -> Octant

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 Debug for Octant

Source§

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

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

impl Exhaust for Octant

Source§

type Iter = ExhaustOctantIter

Iterator type returned by Self::exhaust_factories(). See the trait documentation for what properties this iterator should have. Read more
Source§

type Factory = ExhaustOctantFactory

Data which can be used to construct Self. Read more
Source§

fn exhaust_factories() -> <Octant as Exhaust>::Iter

Returns an iterator over factories for all values of this type. Read more
Source§

fn from_factory(factory: <Octant as Exhaust>::Factory) -> Octant

Construct a concrete value of this type from a Self::Factory value produced by its Self::Iter. Read more
Source§

fn exhaust() -> Iter<Self>

Returns an iterator over all values of this type. Read more
Source§

impl From<Octant> for OctantMask

Source§

fn from(octant: Octant) -> OctantMask

Converts to this type from the input type.
Source§

impl FromIterator<Octant> for OctantMask

Source§

fn from_iter<T>(iter: T) -> OctantMask
where T: IntoIterator<Item = Octant>,

Creates a value from an iterator. Read more
Source§

impl Hash for Octant

Source§

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

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> Index<Octant> for OctantMap<T>

Source§

type Output = T

The returned type after indexing.
Source§

fn index(&self, octant: Octant) -> &<OctantMap<T> as Index<Octant>>::Output

Performs the indexing (container[index]) operation. Read more
Source§

impl<T> IndexMut<Octant> for OctantMap<T>

Source§

fn index_mut( &mut self, octant: Octant, ) -> &mut <OctantMap<T> as Index<Octant>>::Output

Performs the mutable indexing (container[index]) operation. Read more
Source§

impl PartialEq for Octant

Source§

fn eq(&self, other: &Octant) -> 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 Copy for Octant

Source§

impl Eq for Octant

Source§

impl StructuralPartialEq for Octant

Auto Trait Implementations§

§

impl Freeze for Octant

§

impl RefUnwindSafe for Octant

§

impl Send for Octant

§

impl Sync for Octant

§

impl Unpin for Octant

§

impl UnwindSafe for Octant

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> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> DynEq for T
where T: Any + Eq,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Casts the type to dyn Any.
Source§

fn dyn_eq(&self, other: &(dyn DynEq + 'static)) -> bool

This method tests for self and other values to be equal. Read more
Source§

impl<T> DynHash for T
where T: DynEq + Hash,

Source§

fn as_dyn_eq(&self) -> &(dyn DynEq + 'static)

Casts the type to dyn Any.
Source§

fn dyn_hash(&self, state: &mut dyn Hasher)

Feeds this value into the given Hasher.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
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> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
Source§

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