Expand description
An axis-aligned bounding box (AABB)
Fields§
§min: Point<D>The minimum coordinates of the AABB
max: Point<D>The maximum coordinates of the AABB
Implementations§
source§impl Aabb<2>
impl Aabb<2>
sourcepub fn from_points(
points: impl IntoIterator<Item = impl Into<Point<2>>>
) -> Self
pub fn from_points(
points: impl IntoIterator<Item = impl Into<Point<2>>>
) -> Self
Construct a 2-dimensional AABB from a list of points
The resulting AABB will contain all the points.
sourcepub fn from_parry(aabb: Aabb) -> Self
pub fn from_parry(aabb: Aabb) -> Self
Construct a 2-dimensional AABB from a Parry AABB
source§impl Aabb<3>
impl Aabb<3>
sourcepub fn from_points(
points: impl IntoIterator<Item = impl Into<Point<3>>>
) -> Self
pub fn from_points(
points: impl IntoIterator<Item = impl Into<Point<3>>>
) -> Self
Construct a 3-dimensional AABB from a list of points
The resulting AABB will contain all the points.
sourcepub fn from_parry(aabb: Aabb) -> Self
pub fn from_parry(aabb: Aabb) -> Self
Construct a 3-dimensional AABB from a Parry AABB
Examples found in repository?
src/aabb.rs (line 122)
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
pub fn include_point(self, point: &Point<3>) -> Self {
let mut aabb = self.to_parry();
aabb.take_point(point.to_na());
Self::from_parry(aabb)
}
/// Merge this AABB with another
pub fn merged(&self, other: &Self) -> Self {
self.to_parry().merged(&other.to_parry()).into()
}
}
impl From<parry2d_f64::bounding_volume::Aabb> for Aabb<2> {
fn from(aabb: parry2d_f64::bounding_volume::Aabb) -> Self {
Self::from_parry(aabb)
}
}
impl From<parry3d_f64::bounding_volume::Aabb> for Aabb<3> {
fn from(aabb: parry3d_f64::bounding_volume::Aabb) -> Self {
Self::from_parry(aabb)
}sourcepub fn to_parry(self) -> Aabb
pub fn to_parry(self) -> Aabb
Convert the AABB to a Parry AABB
Examples found in repository?
src/aabb.rs (line 104)
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
pub fn vertices(&self) -> [Point<3>; 8] {
self.to_parry().vertices().map(Into::into)
}
/// Compute the center point of the AABB
pub fn center(&self) -> Point<3> {
self.to_parry().center().into()
}
/// Compute the size of the AABB
pub fn size(&self) -> Vector<3> {
self.to_parry().extents().into()
}
/// Compute an AABB that includes an additional point
pub fn include_point(self, point: &Point<3>) -> Self {
let mut aabb = self.to_parry();
aabb.take_point(point.to_na());
Self::from_parry(aabb)
}
/// Merge this AABB with another
pub fn merged(&self, other: &Self) -> Self {
self.to_parry().merged(&other.to_parry()).into()
}sourcepub fn include_point(self, point: &Point<3>) -> Self
pub fn include_point(self, point: &Point<3>) -> Self
Compute an AABB that includes an additional point
Trait Implementations§
source§impl<const D: usize> Ord for Aabb<D>
impl<const D: usize> Ord for Aabb<D>
source§impl<const D: usize> PartialEq<Aabb<D>> for Aabb<D>
impl<const D: usize> PartialEq<Aabb<D>> for Aabb<D>
source§impl<const D: usize> PartialOrd<Aabb<D>> for Aabb<D>
impl<const D: usize> PartialOrd<Aabb<D>> for Aabb<D>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self and other) and is used by the <=
operator. Read moreimpl<const D: usize> Copy for Aabb<D>
impl<const D: usize> Eq for Aabb<D>
impl<const D: usize> StructuralEq for Aabb<D>
impl<const D: usize> StructuralPartialEq for Aabb<D>
Auto Trait Implementations§
impl<const D: usize> RefUnwindSafe for Aabb<D>
impl<const D: usize> Send for Aabb<D>
impl<const D: usize> Sync for Aabb<D>
impl<const D: usize> Unpin for Aabb<D>
impl<const D: usize> UnwindSafe for Aabb<D>
Blanket Implementations§
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
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.§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.§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.§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.§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
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.