pub struct BoxN<const N: usize, T, L = Inclusive, R = L>(/* private fields */);Expand description
n-dimensional axis-aligned box as a cartesian product set of intervals, i.g., [a, b)^n.
Implementations§
Source§impl<const N: usize, T, L, R> BoxN<N, T, L, R>
impl<const N: usize, T, L, R> BoxN<N, T, L, R>
pub fn from_array(src: [Interval<T, L, R>; N]) -> Self
pub fn into_array(self) -> [Interval<T, L, R>; N]
Source§impl<const N: usize, T: PartialOrd + Clone, L: BoundaryOf<Left>, R: BoundaryOf<Right>> BoxN<N, T, L, R>
impl<const N: usize, T: PartialOrd + Clone, L: BoundaryOf<Left>, R: BoundaryOf<Right>> BoxN<N, T, L, R>
Sourcepub fn try_between(a: &[T; N], b: &[T; N]) -> Option<Self>
pub fn try_between(a: &[T; N], b: &[T; N]) -> Option<Self>
use inter_val::{Box2, Exclusive};
let a: Box2<i32> = Box2::try_between(&[0, 0], &[10, 20]).unwrap();
assert_eq!(a.x.inf(), &0);
assert_eq!(a.y.sup(), &20);
assert!(Box2::<i32, Exclusive>::try_between(&[0, 0], &[0, 1]).is_none());Sourcepub fn between(a: &[T; N], b: &[T; N]) -> Self
pub fn between(a: &[T; N], b: &[T; N]) -> Self
use inter_val::Box2;
let a: Box2<i32> = Box2::between(&[0, 0], &[10, 20]);
assert_eq!(a.inf(), [0, 0]);
assert_eq!(a.sup(), [10, 20]);pub fn inf(&self) -> NDim<N, T>
pub fn sup(&self) -> NDim<N, T>
pub fn contains(&self, t: &[T; N]) -> bool
pub fn includes(&self, other: &Self) -> bool
pub fn overlaps(&self, other: &Self) -> bool
pub fn closure(&self) -> BoxN<N, T, Inclusive>
pub fn interior(&self) -> Option<BoxN<N, T, Exclusive>>
pub fn intersection(&self, other: &Self) -> Option<Self>
pub fn span(&self, other: &Self) -> Self
pub fn dilate(&self, delta: T) -> Self
Sourcepub fn hull(self, p: &[T; N]) -> Self
pub fn hull(self, p: &[T; N]) -> Self
use inter_val::Box2;
let a: Box2<i32> = Box2::between(&[0, 0], &[10, 10]);
let b = a.hull(&[20, 5]);
assert_eq!(b, Box2::between(&[0, 0], &[20, 10]));pub fn span_many<A: Into<Self>>( items: impl IntoIterator<Item = A>, ) -> Option<Self>
pub fn hull_many<'a>( items: impl IntoIterator<Item = &'a [T; N]>, ) -> Option<Self>
Trait Implementations§
Source§impl<const N: usize, T: PartialEq, L: PartialEq, R: PartialEq> PartialEq for BoxN<N, T, L, R>
impl<const N: usize, T: PartialEq, L: PartialEq, R: PartialEq> PartialEq for BoxN<N, T, L, R>
impl<const N: usize, T: Copy, L: Copy, R: Copy> Copy for BoxN<N, T, L, R>
impl<const N: usize, T: Eq, L: Eq, R: Eq> Eq for BoxN<N, T, L, R>
impl<const N: usize, T, L, R> StructuralPartialEq for BoxN<N, T, L, R>
Auto Trait Implementations§
impl<const N: usize, T, L, R> Freeze for BoxN<N, T, L, R>
impl<const N: usize, T, L, R> RefUnwindSafe for BoxN<N, T, L, R>
impl<const N: usize, T, L, R> Send for BoxN<N, T, L, R>
impl<const N: usize, T, L, R> Sync for BoxN<N, T, L, R>
impl<const N: usize, T, L, R> Unpin for BoxN<N, T, L, R>
impl<const N: usize, T, L, R> UnwindSafe for BoxN<N, T, L, R>
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
Mutably borrows from an owned value. Read more