pub struct Aabb2d {
pub min: Vec2,
pub max: Vec2,
}
Expand description
A 2D axis-aligned bounding box, or bounding rectangle
Fields§
§min: Vec2
The minimum, conventionally bottom-left, point of the box
max: Vec2
The maximum, conventionally top-right, point of the box
Implementations§
source§impl Aabb2d
impl Aabb2d
sourcepub fn new(center: Vec2, half_size: Vec2) -> Aabb2d
pub fn new(center: Vec2, half_size: Vec2) -> Aabb2d
Constructs an AABB from its center and half-size.
sourcepub fn from_point_cloud(
isometry: impl Into<Isometry2d>,
points: &[Vec2],
) -> Aabb2d
pub fn from_point_cloud( isometry: impl Into<Isometry2d>, points: &[Vec2], ) -> Aabb2d
sourcepub fn bounding_circle(&self) -> BoundingCircle
pub fn bounding_circle(&self) -> BoundingCircle
Computes the smallest BoundingCircle
containing this Aabb2d
.
sourcepub fn closest_point(&self, point: Vec2) -> Vec2
pub fn closest_point(&self, point: Vec2) -> Vec2
Finds the point on the AABB that is closest to the given point
.
If the point is outside the AABB, the returned point will be on the perimeter of the AABB. Otherwise, it will be inside the AABB and returned as is.
Trait Implementations§
source§impl BoundingVolume for Aabb2d
impl BoundingVolume for Aabb2d
source§fn transformed_by(
self,
translation: impl Into<<Aabb2d as BoundingVolume>::Translation>,
rotation: impl Into<<Aabb2d as BoundingVolume>::Rotation>,
) -> Aabb2d
fn transformed_by( self, translation: impl Into<<Aabb2d as BoundingVolume>::Translation>, rotation: impl Into<<Aabb2d as BoundingVolume>::Rotation>, ) -> Aabb2d
Transforms the bounding volume by first rotating it around the origin and then applying a translation.
The result is an Axis-Aligned Bounding Box that encompasses the rotated shape.
Note that the result may not be as tightly fitting as the original, and repeated rotations can cause the AABB to grow indefinitely. Avoid applying multiple rotations to the same AABB, and consider storing the original AABB and rotating that every time instead.
source§fn transform_by(
&mut self,
translation: impl Into<<Aabb2d as BoundingVolume>::Translation>,
rotation: impl Into<<Aabb2d as BoundingVolume>::Rotation>,
)
fn transform_by( &mut self, translation: impl Into<<Aabb2d as BoundingVolume>::Translation>, rotation: impl Into<<Aabb2d as BoundingVolume>::Rotation>, )
Transforms the bounding volume by first rotating it around the origin and then applying a translation.
The result is an Axis-Aligned Bounding Box that encompasses the rotated shape.
Note that the result may not be as tightly fitting as the original, and repeated rotations can cause the AABB to grow indefinitely. Avoid applying multiple rotations to the same AABB, and consider storing the original AABB and rotating that every time instead.
source§fn rotated_by(
self,
rotation: impl Into<<Aabb2d as BoundingVolume>::Rotation>,
) -> Aabb2d
fn rotated_by( self, rotation: impl Into<<Aabb2d as BoundingVolume>::Rotation>, ) -> Aabb2d
Rotates the bounding volume around the origin by the given rotation.
The result is an Axis-Aligned Bounding Box that encompasses the rotated shape.
Note that the result may not be as tightly fitting as the original, and repeated rotations can cause the AABB to grow indefinitely. Avoid applying multiple rotations to the same AABB, and consider storing the original AABB and rotating that every time instead.
source§fn rotate_by(
&mut self,
rotation: impl Into<<Aabb2d as BoundingVolume>::Rotation>,
)
fn rotate_by( &mut self, rotation: impl Into<<Aabb2d as BoundingVolume>::Rotation>, )
Rotates the bounding volume around the origin by the given rotation.
The result is an Axis-Aligned Bounding Box that encompasses the rotated shape.
Note that the result may not be as tightly fitting as the original, and repeated rotations can cause the AABB to grow indefinitely. Avoid applying multiple rotations to the same AABB, and consider storing the original AABB and rotating that every time instead.
source§type Translation = Vec2
type Translation = Vec2
Vec2
for 2D and Vec3
for 3D.source§type Rotation = Rot2
type Rotation = Rot2
f32
for 2D and Quat
for 3D.source§type HalfSize = Vec2
type HalfSize = Vec2
f32
radius for a circle, or a Vec3
with half sizes for x, y and z for a 3D axis-aligned
bounding boxsource§fn center(&self) -> <Aabb2d as BoundingVolume>::Translation
fn center(&self) -> <Aabb2d as BoundingVolume>::Translation
source§fn half_size(&self) -> <Aabb2d as BoundingVolume>::HalfSize
fn half_size(&self) -> <Aabb2d as BoundingVolume>::HalfSize
source§fn visible_area(&self) -> f32
fn visible_area(&self) -> f32
source§fn contains(&self, other: &Aabb2d) -> bool
fn contains(&self, other: &Aabb2d) -> bool
source§fn merge(&self, other: &Aabb2d) -> Aabb2d
fn merge(&self, other: &Aabb2d) -> Aabb2d
self
and other
.source§fn grow(
&self,
amount: impl Into<<Aabb2d as BoundingVolume>::HalfSize>,
) -> Aabb2d
fn grow( &self, amount: impl Into<<Aabb2d as BoundingVolume>::HalfSize>, ) -> Aabb2d
source§fn shrink(
&self,
amount: impl Into<<Aabb2d as BoundingVolume>::HalfSize>,
) -> Aabb2d
fn shrink( &self, amount: impl Into<<Aabb2d as BoundingVolume>::HalfSize>, ) -> Aabb2d
source§fn scale_around_center(
&self,
scale: impl Into<<Aabb2d as BoundingVolume>::HalfSize>,
) -> Aabb2d
fn scale_around_center( &self, scale: impl Into<<Aabb2d as BoundingVolume>::HalfSize>, ) -> Aabb2d
source§fn translate_by(
&mut self,
translation: impl Into<<Aabb2d as BoundingVolume>::Translation>,
)
fn translate_by( &mut self, translation: impl Into<<Aabb2d as BoundingVolume>::Translation>, )
source§fn translated_by(self, translation: impl Into<Self::Translation>) -> Self
fn translated_by(self, translation: impl Into<Self::Translation>) -> Self
source§impl FromReflect for Aabb2d
impl FromReflect for Aabb2d
source§fn from_reflect(reflect: &(dyn PartialReflect + 'static)) -> Option<Aabb2d>
fn from_reflect(reflect: &(dyn PartialReflect + 'static)) -> Option<Aabb2d>
Self
from a reflected value.source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self
using,
constructing the value using from_reflect
if that fails. Read moresource§impl GetTypeRegistration for Aabb2d
impl GetTypeRegistration for Aabb2d
source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration
for this type.source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
source§impl IntersectsVolume<Aabb2d> for Aabb2d
impl IntersectsVolume<Aabb2d> for Aabb2d
source§fn intersects(&self, other: &Aabb2d) -> bool
fn intersects(&self, other: &Aabb2d) -> bool
source§impl IntersectsVolume<Aabb2d> for AabbCast2d
impl IntersectsVolume<Aabb2d> for AabbCast2d
source§fn intersects(&self, volume: &Aabb2d) -> bool
fn intersects(&self, volume: &Aabb2d) -> bool
source§impl IntersectsVolume<Aabb2d> for BoundingCircle
impl IntersectsVolume<Aabb2d> for BoundingCircle
source§fn intersects(&self, aabb: &Aabb2d) -> bool
fn intersects(&self, aabb: &Aabb2d) -> bool
source§impl IntersectsVolume<Aabb2d> for RayCast2d
impl IntersectsVolume<Aabb2d> for RayCast2d
source§fn intersects(&self, volume: &Aabb2d) -> bool
fn intersects(&self, volume: &Aabb2d) -> bool
source§impl IntersectsVolume<BoundingCircle> for Aabb2d
impl IntersectsVolume<BoundingCircle> for Aabb2d
source§fn intersects(&self, circle: &BoundingCircle) -> bool
fn intersects(&self, circle: &BoundingCircle) -> bool
source§impl PartialReflect for Aabb2d
impl PartialReflect for Aabb2d
source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
source§fn clone_value(&self) -> Box<dyn PartialReflect>
fn clone_value(&self) -> Box<dyn PartialReflect>
Reflect
trait object. Read moresource§fn try_apply(
&mut self,
value: &(dyn PartialReflect + 'static),
) -> Result<(), ApplyError>
fn try_apply( &mut self, value: &(dyn PartialReflect + 'static), ) -> Result<(), ApplyError>
source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
source§fn reflect_owned(self: Box<Aabb2d>) -> ReflectOwned
fn reflect_owned(self: Box<Aabb2d>) -> ReflectOwned
source§fn try_into_reflect(
self: Box<Aabb2d>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<Aabb2d>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
source§fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
source§fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
source§fn into_partial_reflect(self: Box<Aabb2d>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<Aabb2d>) -> Box<dyn PartialReflect>
source§fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
source§fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
source§fn reflect_partial_eq(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<bool>
fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>
source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
source§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
source§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
source§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
source§impl Reflect for Aabb2d
impl Reflect for Aabb2d
source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any
. Read moresource§fn into_reflect(self: Box<Aabb2d>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Aabb2d>) -> Box<dyn Reflect>
source§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
source§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
source§impl Struct for Aabb2d
impl Struct for Aabb2d
source§fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>
fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>
name
as a &dyn PartialReflect
.source§fn field_mut(
&mut self,
name: &str,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_mut( &mut self, name: &str, ) -> Option<&mut (dyn PartialReflect + 'static)>
name
as a
&mut dyn PartialReflect
.source§fn field_at(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
fn field_at(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
index
as a
&dyn PartialReflect
.source§fn field_at_mut(
&mut self,
index: usize,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_at_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>
index
as a &mut dyn PartialReflect
.source§fn name_at(&self, index: usize) -> Option<&str>
fn name_at(&self, index: usize) -> Option<&str>
index
.source§fn iter_fields(&self) -> FieldIter<'_> ⓘ
fn iter_fields(&self) -> FieldIter<'_> ⓘ
source§fn clone_dynamic(&self) -> DynamicStruct
fn clone_dynamic(&self) -> DynamicStruct
DynamicStruct
.source§fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
None
if TypeInfo
is not available.source§impl TypePath for Aabb2d
impl TypePath for Aabb2d
source§fn type_path() -> &'static str
fn type_path() -> &'static str
source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
impl Copy for Aabb2d
Auto Trait Implementations§
impl Freeze for Aabb2d
impl RefUnwindSafe for Aabb2d
impl Send for Aabb2d
impl Sync for Aabb2d
impl Unpin for Aabb2d
impl UnwindSafe for Aabb2d
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
.source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
.source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
.source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info
.source§impl<S> GetField for Swhere
S: Struct,
impl<S> GetField for Swhere
S: Struct,
source§impl<T> GetPath for T
impl<T> GetPath for T
source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moresource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moresource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moresource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moresource§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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