Struct bevy::math::bounding::BoundingSphere
pub struct BoundingSphere {
pub center: Vec3A,
pub sphere: Sphere,
}
Expand description
A bounding sphere
Fields§
§center: Vec3A
The center of the bounding sphere
sphere: Sphere
The sphere
Implementations§
§impl BoundingSphere
impl BoundingSphere
pub fn new(center: impl Into<Vec3A>, radius: f32) -> BoundingSphere
pub fn new(center: impl Into<Vec3A>, radius: f32) -> BoundingSphere
Constructs a bounding sphere from its center and radius.
pub fn from_point_cloud(
translation: impl Into<Vec3A>,
rotation: Quat,
points: &[impl Copy + Into<Vec3A>]
) -> BoundingSphere
pub fn from_point_cloud( translation: impl Into<Vec3A>, rotation: Quat, points: &[impl Copy + Into<Vec3A>] ) -> BoundingSphere
Computes a BoundingSphere
containing the given set of points,
transformed by translation
and rotation
.
The bounding sphere is not guaranteed to be the smallest possible.
pub fn aabb_3d(&self) -> Aabb3d
pub fn aabb_3d(&self) -> Aabb3d
Computes the smallest Aabb3d
containing this BoundingSphere
.
pub fn closest_point(&self, point: impl Into<Vec3A>) -> Vec3A
pub fn closest_point(&self, point: impl Into<Vec3A>) -> Vec3A
Finds the point on the bounding sphere that is closest to the given point
.
If the point is outside the sphere, the returned point will be on the surface of the sphere. Otherwise, it will be inside the sphere and returned as is.
Trait Implementations§
§impl BoundingVolume for BoundingSphere
impl BoundingVolume for BoundingSphere
§type Translation = Vec3A
type Translation = Vec3A
The position type used for the volume. This should be
Vec2
for 2D and Vec3
for 3D.§type Rotation = Quat
type Rotation = Quat
The rotation type used for the volume. This should be
f32
for 2D and Quat
for 3D.§type HalfSize = f32
type HalfSize = f32
The type used for the size of the bounding volume. Usually a half size. For example an
f32
radius for a circle, or a Vec3
with half sizes for x, y and z for a 3D axis-aligned
bounding box§fn center(&self) -> <BoundingSphere as BoundingVolume>::Translation
fn center(&self) -> <BoundingSphere as BoundingVolume>::Translation
Returns the center of the bounding volume.
§fn half_size(&self) -> <BoundingSphere as BoundingVolume>::HalfSize
fn half_size(&self) -> <BoundingSphere as BoundingVolume>::HalfSize
Returns the half size of the bounding volume.
§fn visible_area(&self) -> f32
fn visible_area(&self) -> f32
Computes the visible surface area of the bounding volume.
This method can be useful to make decisions about merging bounding volumes,
using a Surface Area Heuristic. Read more
§fn contains(&self, other: &BoundingSphere) -> bool
fn contains(&self, other: &BoundingSphere) -> bool
Checks if this bounding volume contains another one.
§fn merge(&self, other: &BoundingSphere) -> BoundingSphere
fn merge(&self, other: &BoundingSphere) -> BoundingSphere
Computes the smallest bounding volume that contains both
self
and other
.§fn grow(
&self,
amount: impl Into<<BoundingSphere as BoundingVolume>::HalfSize>
) -> BoundingSphere
fn grow( &self, amount: impl Into<<BoundingSphere as BoundingVolume>::HalfSize> ) -> BoundingSphere
Increases the size of the bounding volume in each direction by the given amount.
§fn shrink(
&self,
amount: impl Into<<BoundingSphere as BoundingVolume>::HalfSize>
) -> BoundingSphere
fn shrink( &self, amount: impl Into<<BoundingSphere as BoundingVolume>::HalfSize> ) -> BoundingSphere
Decreases the size of the bounding volume in each direction by the given amount.
§fn scale_around_center(
&self,
scale: impl Into<<BoundingSphere as BoundingVolume>::HalfSize>
) -> BoundingSphere
fn scale_around_center( &self, scale: impl Into<<BoundingSphere as BoundingVolume>::HalfSize> ) -> BoundingSphere
Scale the size of the bounding volume around its center by the given amount
§fn translate_by(
&mut self,
translation: impl Into<<BoundingSphere as BoundingVolume>::Translation>
)
fn translate_by( &mut self, translation: impl Into<<BoundingSphere as BoundingVolume>::Translation> )
Translates the bounding volume by the given translation.
§fn rotate_by(
&mut self,
rotation: impl Into<<BoundingSphere as BoundingVolume>::Rotation>
)
fn rotate_by( &mut self, rotation: impl Into<<BoundingSphere as BoundingVolume>::Rotation> )
Rotates the bounding volume around the origin by the given rotation. Read more
§fn transformed_by(
self,
translation: impl Into<Self::Translation>,
rotation: impl Into<Self::Rotation>
) -> Self
fn transformed_by( self, translation: impl Into<Self::Translation>, rotation: impl Into<Self::Rotation> ) -> Self
Transforms the bounding volume by first rotating it around the origin and then applying a translation.
§fn transform_by(
&mut self,
translation: impl Into<Self::Translation>,
rotation: impl Into<Self::Rotation>
)
fn transform_by( &mut self, translation: impl Into<Self::Translation>, rotation: impl Into<Self::Rotation> )
Transforms the bounding volume by first rotating it around the origin and then applying a translation.
§fn translated_by(self, translation: impl Into<Self::Translation>) -> Self
fn translated_by(self, translation: impl Into<Self::Translation>) -> Self
Translates the bounding volume by the given translation.
§fn rotated_by(self, rotation: impl Into<Self::Rotation>) -> Self
fn rotated_by(self, rotation: impl Into<Self::Rotation>) -> Self
Rotates the bounding volume around the origin by the given rotation. Read more
§impl Clone for BoundingSphere
impl Clone for BoundingSphere
§fn clone(&self) -> BoundingSphere
fn clone(&self) -> BoundingSphere
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read more§impl Debug for BoundingSphere
impl Debug for BoundingSphere
§impl IntersectsVolume<Aabb3d> for BoundingSphere
impl IntersectsVolume<Aabb3d> for BoundingSphere
§fn intersects(&self, aabb: &Aabb3d) -> bool
fn intersects(&self, aabb: &Aabb3d) -> bool
Check if a volume intersects with this intersection test
§impl IntersectsVolume<BoundingSphere> for Aabb3d
impl IntersectsVolume<BoundingSphere> for Aabb3d
§fn intersects(&self, sphere: &BoundingSphere) -> bool
fn intersects(&self, sphere: &BoundingSphere) -> bool
Check if a volume intersects with this intersection test
§impl IntersectsVolume<BoundingSphere> for BoundingSphere
impl IntersectsVolume<BoundingSphere> for BoundingSphere
§fn intersects(&self, other: &BoundingSphere) -> bool
fn intersects(&self, other: &BoundingSphere) -> bool
Check if a volume intersects with this intersection test
§impl IntersectsVolume<BoundingSphere> for BoundingSphereCast
impl IntersectsVolume<BoundingSphere> for BoundingSphereCast
§fn intersects(&self, volume: &BoundingSphere) -> bool
fn intersects(&self, volume: &BoundingSphere) -> bool
Check if a volume intersects with this intersection test
§impl IntersectsVolume<BoundingSphere> for RayCast3d
impl IntersectsVolume<BoundingSphere> for RayCast3d
§fn intersects(&self, volume: &BoundingSphere) -> bool
fn intersects(&self, volume: &BoundingSphere) -> bool
Check if a volume intersects with this intersection test
impl Copy for BoundingSphere
Auto Trait Implementations§
impl Freeze for BoundingSphere
impl RefUnwindSafe for BoundingSphere
impl Send for BoundingSphere
impl Sync for BoundingSphere
impl Unpin for BoundingSphere
impl UnwindSafe for BoundingSphere
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
Return the
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§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> ⓘ
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 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> ⓘ
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