pub struct BBox<T> { /* private fields */ }Expand description
General purpose bounding box structure.
Implementations
sourceimpl<T: Float> BBox<T>
impl<T: Float> BBox<T>
sourcepub fn new(minb: [T; 3], maxb: [T; 3]) -> Self
pub fn new(minb: [T; 3], maxb: [T; 3]) -> Self
Construct a bounding box containing points minb and maxb.
Examples
let min_p = [0.0; 3];
let max_p = [1.5, 0.5, 1.0];
let sample_box = BBox::<f32>::new(min_p, max_p);
assert_eq!(sample_box.min_corner(), min_p);
assert_eq!(sample_box.max_corner(), max_p);sourcepub fn unit() -> BBox<T>
pub fn unit() -> BBox<T>
Construct a unit bounding box from zero to one in each dimension.
Examples
let unit_box = BBox::<f32>::new(
[0.0; 3],
[1.0; 3]);
assert_eq!(BBox::<f32>::unit(), unit_box);sourcepub fn size(&self) -> [T; 3]
pub fn size(&self) -> [T; 3]
Get the size of the box in each dimension.
Examples
let unit_box = BBox::<f32>::unit();
assert_eq!(unit_box.size(), [1.0, 1.0, 1.0]);sourcepub fn max_axis(&self) -> (u8, T)
pub fn max_axis(&self) -> (u8, T)
Determine the axis of the maximum side length of the box and return both: the axis index (x => 0, y => 1, z => 2) and the length.
Examples
let min_p = [0.0; 3];
let max_p = [1.5, 0.5, 1.0];
let sample_box = BBox::<f32>::new(min_p, max_p);
assert_eq!(sample_box.max_axis(), (0, 1.5));pub fn min_corner(&self) -> [T; 3]
pub fn max_corner(&self) -> [T; 3]
sourcepub fn diameter(&self) -> T where
T: RealField,
pub fn diameter(&self) -> T where
T: RealField,
Diameter of the bounding box is the distance between the min and max corners.
pub fn corner<C: Copy + Into<Corner>>(&self, which: C) -> [T; 3]
Trait Implementations
sourceimpl<T: Float> Intersect<BBox<T>> for BBox<T>
impl<T: Float> Intersect<BBox<T>> for BBox<T>
type Output = BBox<T>
sourcefn intersect(self, other: Self) -> Self
fn intersect(self, other: Self) -> Self
Intersect on one object with another, producing the resulting intersection. For example if [-1, 2] and [0, 4] are two closed intervals, then their intersection is a closed interval [0, 2]. Note that the intersection object can be of a different type Read more
sourcefn intersects(self, other: Self) -> bool
fn intersects(self, other: Self) -> bool
Check if this object intersects another.
impl<T: Copy> Copy for BBox<T>
impl<T> StructuralPartialEq for BBox<T>
Auto Trait Implementations
impl<T> RefUnwindSafe for BBox<T> where
T: RefUnwindSafe,
impl<T> Send for BBox<T> where
T: Send,
impl<T> Sync for BBox<T> where
T: Sync,
impl<T> Unpin for BBox<T> where
T: Unpin,
impl<T> UnwindSafe for BBox<T> where
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> CloneBytes for T where
T: 'static + Clone,
impl<T> CloneBytes for T where
T: 'static + Clone,
unsafe fn clone_bytes(src: &[MaybeUninit<u8>]) -> Box<[MaybeUninit<u8>], Global>
unsafe fn clone_from_bytes(dst: &mut [MaybeUninit<u8>], src: &[MaybeUninit<u8>])
unsafe fn clone_into_raw_bytes(
src: &[MaybeUninit<u8>],
dst: &mut [MaybeUninit<u8>]
)
sourceimpl<T> DebugBytes for T where
T: 'static + Debug,
impl<T> DebugBytes for T where
T: 'static + Debug,
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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. Read more
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more
fn as_any(&self) -> &(dyn Any + 'static)
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. Read more
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
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. Read more
sourceimpl<T> DropBytes for T where
T: 'static,
impl<T> DropBytes for T where
T: 'static,
unsafe fn drop_bytes(bytes: &mut [MaybeUninit<u8>])
sourceimpl<'a, S, I> Get<'a, I> for S where
I: GetIndex<'a, S>,
impl<'a, S, I> Get<'a, I> for S where
I: GetIndex<'a, S>,
type Output = <I as GetIndex<'a, S>>::Output
fn get(&self, idx: I) -> Option<<I as GetIndex<'a, S>>::Output>
sourcefn at(&self, idx: I) -> Self::Output
fn at(&self, idx: I) -> Self::Output
Return a value at the given index. This is provided as the checked
version of get that will panic if the equivalent get call is None,
which typically means that the given index is out of bounds. Read more
sourceunsafe fn at_unchecked(&self, idx: I) -> Self::Output
unsafe fn at_unchecked(&self, idx: I) -> Self::Output
Return a value at the given index. Read more
sourceimpl<S, I> Isolate<I> for S where
I: IsolateIndex<S>,
impl<S, I> Isolate<I> for S where
I: IsolateIndex<S>,
type Output = <I as IsolateIndex<S>>::Output
sourceunsafe fn isolate_unchecked(self, idx: I) -> <S as Isolate<I>>::Output
unsafe fn isolate_unchecked(self, idx: I) -> <S as Isolate<I>>::Output
Unchecked version of isolate. Read more
fn try_isolate(self, idx: I) -> Option<<S as Isolate<I>>::Output>
sourceimpl<T> PartialEqBytes for T where
T: 'static + PartialEq<T>,
impl<T> PartialEqBytes for T where
T: 'static + PartialEq<T>,
impl<T> Pointable for T
impl<T> Pointable for T
sourceimpl<T, N> PushArrayToVec<N> for T where
T: Clone,
N: Array<T>,
impl<T, N> PushArrayToVec<N> for T where
T: Clone,
N: Array<T>,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct self from the equivalent element of its
superset. Read more
fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if self is actually part of its subset T (and can be converted to it).
fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset but without any property checks. Always succeeds.
fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts self to the equivalent element of its superset.
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into)Uses borrowed data to replace owned data, usually by cloning. Read more