#[repr(C)]pub struct Capsule {
pub segment: Segment,
pub radius: Real,
}
Expand description
A capsule shape defined as a round segment.
Fields§
§segment: Segment
The endpoints of the capsule’s principal axis.
radius: Real
The radius of the capsule.
Implementations§
source§impl Capsule
impl Capsule
sourcepub fn bounding_sphere(&self, pos: &Isometry<Real>) -> BoundingSphere
pub fn bounding_sphere(&self, pos: &Isometry<Real>) -> BoundingSphere
Computes the world-space bounding sphere of this capsule, transformed by pos
.
sourcepub fn local_bounding_sphere(&self) -> BoundingSphere
pub fn local_bounding_sphere(&self) -> BoundingSphere
Computes the world-space bounding sphere of this capsule.
source§impl Capsule
impl Capsule
sourcepub fn new_x(half_height: Real, radius: Real) -> Self
pub fn new_x(half_height: Real, radius: Real) -> Self
Creates a new capsule aligned with the x
axis and with the given half-height an radius.
sourcepub fn new_y(half_height: Real, radius: Real) -> Self
pub fn new_y(half_height: Real, radius: Real) -> Self
Creates a new capsule aligned with the y
axis and with the given half-height an radius.
sourcepub fn new_z(half_height: Real, radius: Real) -> Self
pub fn new_z(half_height: Real, radius: Real) -> Self
Creates a new capsule aligned with the z
axis and with the given half-height an radius.
sourcepub fn new(a: Point<Real>, b: Point<Real>, radius: Real) -> Self
pub fn new(a: Point<Real>, b: Point<Real>, radius: Real) -> Self
Creates a new capsule defined as the segment between a
and b
and with the given radius
.
sourcepub fn half_height(&self) -> Real
pub fn half_height(&self) -> Real
The half-height of this capsule.
sourcepub fn transform_by(&self, pos: &Isometry<Real>) -> Self
pub fn transform_by(&self, pos: &Isometry<Real>) -> Self
Creates a new capsule equal to self
with all its endpoints transformed by pos
.
sourcepub fn canonical_transform(&self) -> Isometry<Real>
pub fn canonical_transform(&self) -> Isometry<Real>
The transformation such that t * Y
is collinear with b - a
and t * origin
equals
the capsule’s center.
sourcepub fn rotation_wrt_y(&self) -> Rotation<Real>
pub fn rotation_wrt_y(&self) -> Rotation<Real>
The rotation r
such that r * Y
is collinear with b - a
.
sourcepub fn transform_wrt_y(&self) -> Isometry<Real>
pub fn transform_wrt_y(&self) -> Isometry<Real>
The transform t
such that t * Y
is collinear with b - a
and such that t * origin = (b + a) / 2.0
.
sourcepub fn scaled(
self,
scale: &Vector<Real>,
nsubdivs: u32
) -> Option<Either<Self, ConvexPolyhedron>>
pub fn scaled( self, scale: &Vector<Real>, nsubdivs: u32 ) -> Option<Either<Self, ConvexPolyhedron>>
Computes a scaled version of this capsule.
If the scaling factor is non-uniform, then it can’t be represented as
capsule. Instead, a convex polygon approximation (with nsubdivs
subdivisions) is returned. Returns None
if that approximation had degenerate
normals (for example if the scaling factor along one axis is zero).
Trait Implementations§
source§impl PointQuery for Capsule
impl PointQuery for Capsule
source§fn project_local_point(&self, pt: &Point<Real>, solid: bool) -> PointProjection
fn project_local_point(&self, pt: &Point<Real>, solid: bool) -> PointProjection
self
. Read moresource§fn project_local_point_and_get_feature(
&self,
pt: &Point<Real>
) -> (PointProjection, FeatureId)
fn project_local_point_and_get_feature( &self, pt: &Point<Real> ) -> (PointProjection, FeatureId)
self
and returns the id of the
feature the point was projected on.source§fn project_local_point_with_max_dist(
&self,
pt: &Point<Real>,
solid: bool,
max_dist: Real
) -> Option<PointProjection>
fn project_local_point_with_max_dist( &self, pt: &Point<Real>, solid: bool, max_dist: Real ) -> Option<PointProjection>
self
, unless the projection lies further than the given max distance. Read moresource§fn project_point_with_max_dist(
&self,
m: &Isometry<Real>,
pt: &Point<Real>,
solid: bool,
max_dist: Real
) -> Option<PointProjection>
fn project_point_with_max_dist( &self, m: &Isometry<Real>, pt: &Point<Real>, solid: bool, max_dist: Real ) -> Option<PointProjection>
self
transformed by m
, unless the projection lies further than the given max distance.source§fn distance_to_local_point(&self, pt: &Point<Real>, solid: bool) -> Real
fn distance_to_local_point(&self, pt: &Point<Real>, solid: bool) -> Real
self
.source§fn contains_local_point(&self, pt: &Point<Real>) -> bool
fn contains_local_point(&self, pt: &Point<Real>) -> bool
self
.source§fn project_point(
&self,
m: &Isometry<Real>,
pt: &Point<Real>,
solid: bool
) -> PointProjection
fn project_point( &self, m: &Isometry<Real>, pt: &Point<Real>, solid: bool ) -> PointProjection
self
transformed by m
.source§fn distance_to_point(
&self,
m: &Isometry<Real>,
pt: &Point<Real>,
solid: bool
) -> Real
fn distance_to_point( &self, m: &Isometry<Real>, pt: &Point<Real>, solid: bool ) -> Real
self
transformed by m
.source§fn project_point_and_get_feature(
&self,
m: &Isometry<Real>,
pt: &Point<Real>
) -> (PointProjection, FeatureId)
fn project_point_and_get_feature( &self, m: &Isometry<Real>, pt: &Point<Real> ) -> (PointProjection, FeatureId)
self
transformed by m
and returns the id of the
feature the point was projected on.source§impl RayCast for Capsule
impl RayCast for Capsule
source§fn cast_local_ray_and_get_normal(
&self,
ray: &Ray,
max_time_of_impact: Real,
solid: bool
) -> Option<RayIntersection>
fn cast_local_ray_and_get_normal( &self, ray: &Ray, max_time_of_impact: Real, solid: bool ) -> Option<RayIntersection>
source§fn cast_local_ray(
&self,
ray: &Ray,
max_time_of_impact: Real,
solid: bool
) -> Option<Real>
fn cast_local_ray( &self, ray: &Ray, max_time_of_impact: Real, solid: bool ) -> Option<Real>
source§fn intersects_local_ray(&self, ray: &Ray, max_time_of_impact: Real) -> bool
fn intersects_local_ray(&self, ray: &Ray, max_time_of_impact: Real) -> bool
source§fn cast_ray(
&self,
m: &Isometry<Real>,
ray: &Ray,
max_time_of_impact: Real,
solid: bool
) -> Option<Real>
fn cast_ray( &self, m: &Isometry<Real>, ray: &Ray, max_time_of_impact: Real, solid: bool ) -> Option<Real>
source§fn cast_ray_and_get_normal(
&self,
m: &Isometry<Real>,
ray: &Ray,
max_time_of_impact: Real,
solid: bool
) -> Option<RayIntersection>
fn cast_ray_and_get_normal( &self, m: &Isometry<Real>, ray: &Ray, max_time_of_impact: Real, solid: bool ) -> Option<RayIntersection>
source§impl Shape for Capsule
impl Shape for Capsule
source§fn compute_local_aabb(&self) -> Aabb
fn compute_local_aabb(&self) -> Aabb
Aabb
of this shape.source§fn compute_local_bounding_sphere(&self) -> BoundingSphere
fn compute_local_bounding_sphere(&self) -> BoundingSphere
source§fn compute_aabb(&self, position: &Isometry<Real>) -> Aabb
fn compute_aabb(&self, position: &Isometry<Real>) -> Aabb
Aabb
of this shape with the given position.source§fn mass_properties(&self, density: Real) -> MassProperties
fn mass_properties(&self, density: Real) -> MassProperties
source§fn shape_type(&self) -> ShapeType
fn shape_type(&self) -> ShapeType
source§fn as_typed_shape(&self) -> TypedShape<'_>
fn as_typed_shape(&self) -> TypedShape<'_>
fn ccd_thickness(&self) -> Real
fn ccd_angular_thickness(&self) -> Real
source§fn as_support_map(&self) -> Option<&dyn SupportMap>
fn as_support_map(&self) -> Option<&dyn SupportMap>
source§fn as_polygonal_feature_map(&self) -> Option<(&dyn PolygonalFeatureMap, Real)>
fn as_polygonal_feature_map(&self) -> Option<(&dyn PolygonalFeatureMap, Real)>
source§fn compute_bounding_sphere(&self, position: &Isometry<Real>) -> BoundingSphere
fn compute_bounding_sphere(&self, position: &Isometry<Real>) -> BoundingSphere
fn as_composite_shape(&self) -> Option<&dyn SimdCompositeShape>
source§impl SupportMap for Capsule
impl SupportMap for Capsule
fn local_support_point(&self, dir: &Vector<Real>) -> Point<Real>
source§fn local_support_point_toward(&self, dir: &Unit<Vector<Real>>) -> Point<Real>
fn local_support_point_toward(&self, dir: &Unit<Vector<Real>>) -> Point<Real>
self.local_support_point
except that dir
is normalized.fn support_point( &self, transform: &Isometry<Real>, dir: &Vector<Real> ) -> Point<Real>
impl Copy for Capsule
Auto Trait Implementations§
impl Freeze for Capsule
impl RefUnwindSafe for Capsule
impl Send for Capsule
impl Sync for Capsule
impl Unpin for Capsule
impl UnwindSafe for Capsule
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> 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> 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 moresource§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.