Struct bevy_internal::math::bounding::BoundingSphere
source · pub struct BoundingSphere {
pub center: Vec3,
pub sphere: Sphere,
}
Expand description
A bounding sphere
Fields§
§center: Vec3
The center of the bounding sphere
sphere: Sphere
The sphere
Implementations§
source§impl BoundingSphere
impl BoundingSphere
sourcepub fn new(center: Vec3, radius: f32) -> BoundingSphere
pub fn new(center: Vec3, radius: f32) -> BoundingSphere
Constructs a bounding sphere from its center and radius.
sourcepub fn from_point_cloud(
translation: Vec3,
rotation: Quat,
points: &[Vec3]
) -> BoundingSphere
pub fn from_point_cloud( translation: Vec3, rotation: Quat, points: &[Vec3] ) -> 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.
sourcepub fn aabb_3d(&self) -> Aabb3d
pub fn aabb_3d(&self) -> Aabb3d
Computes the smallest Aabb3d
containing this BoundingSphere
.
sourcepub fn closest_point(&self, point: Vec3) -> Vec3
pub fn closest_point(&self, point: Vec3) -> Vec3
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§
source§impl BoundingVolume for BoundingSphere
impl BoundingVolume for BoundingSphere
§type Position = Vec3
type Position = Vec3
The position type used for the volume. This should be
Vec2
for 2D and Vec3
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 boxsource§fn center(&self) -> <BoundingSphere as BoundingVolume>::Position
fn center(&self) -> <BoundingSphere as BoundingVolume>::Position
Returns the center of the bounding volume.
source§fn half_size(&self) -> <BoundingSphere as BoundingVolume>::HalfSize
fn half_size(&self) -> <BoundingSphere as BoundingVolume>::HalfSize
Returns the half size of the bounding volume.
source§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
source§fn contains(&self, other: &BoundingSphere) -> bool
fn contains(&self, other: &BoundingSphere) -> bool
Checks if this bounding volume contains another one.
source§fn merge(&self, other: &BoundingSphere) -> BoundingSphere
fn merge(&self, other: &BoundingSphere) -> BoundingSphere
Computes the smallest bounding volume that contains both
self
and other
.source§fn grow(
&self,
amount: <BoundingSphere as BoundingVolume>::HalfSize
) -> BoundingSphere
fn grow( &self, amount: <BoundingSphere as BoundingVolume>::HalfSize ) -> BoundingSphere
Increase the size of the bounding volume in each direction by the given amount
source§fn shrink(
&self,
amount: <BoundingSphere as BoundingVolume>::HalfSize
) -> BoundingSphere
fn shrink( &self, amount: <BoundingSphere as BoundingVolume>::HalfSize ) -> BoundingSphere
Decrease the size of the bounding volume in each direction by the given amount
source§impl Clone for BoundingSphere
impl Clone for BoundingSphere
source§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 moresource§impl Debug for BoundingSphere
impl Debug for BoundingSphere
source§impl IntersectsVolume<Aabb3d> for BoundingSphere
impl IntersectsVolume<Aabb3d> for BoundingSphere
source§fn intersects(&self, aabb: &Aabb3d) -> bool
fn intersects(&self, aabb: &Aabb3d) -> bool
Check if a volume intersects with this intersection test
source§impl IntersectsVolume<BoundingSphere> for Aabb3d
impl IntersectsVolume<BoundingSphere> for Aabb3d
source§fn intersects(&self, sphere: &BoundingSphere) -> bool
fn intersects(&self, sphere: &BoundingSphere) -> bool
Check if a volume intersects with this intersection test
source§impl IntersectsVolume<BoundingSphere> for BoundingSphere
impl IntersectsVolume<BoundingSphere> for BoundingSphere
source§fn intersects(&self, other: &BoundingSphere) -> bool
fn intersects(&self, other: &BoundingSphere) -> bool
Check if a volume intersects with this intersection test
source§impl IntersectsVolume<BoundingSphere> for BoundingSphereCast
impl IntersectsVolume<BoundingSphere> for BoundingSphereCast
source§fn intersects(&self, volume: &BoundingSphere) -> bool
fn intersects(&self, volume: &BoundingSphere) -> bool
Check if a volume intersects with this intersection test
source§impl IntersectsVolume<BoundingSphere> for RayCast3d
impl IntersectsVolume<BoundingSphere> for RayCast3d
source§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 RefUnwindSafe for BoundingSphere
impl Send for BoundingSphere
impl Sync for BoundingSphere
impl Unpin for BoundingSphere
impl UnwindSafe for BoundingSphere
Blanket Implementations§
source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> 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
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>
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
.source§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
.source§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.source§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.