pub struct ConvexHull<N: RealField + Copy> { /* private fields */ }
Expand description
A convex polyhedron without degenerate faces.
Implementations§
Source§impl<N: RealField + Copy> ConvexHull<N>
impl<N: RealField + Copy> ConvexHull<N>
Sourcepub fn try_from_points(points: &[Point<N>]) -> Option<ConvexHull<N>>
pub fn try_from_points(points: &[Point<N>]) -> Option<ConvexHull<N>>
Creates a new 2D convex polyhedron from an arbitrary set of points.
This explicitly computes the convex hull of the given set of points. Use
Returns None
if the convex hull computation failed.
Sourcepub fn try_new(
points: Vec<Point<N>>,
indices: &[usize],
) -> Option<ConvexHull<N>>
pub fn try_new( points: Vec<Point<N>>, indices: &[usize], ) -> Option<ConvexHull<N>>
Attempts to create a new solid assumed to be convex from the set of points and indices.
The given points and index information are assumed to describe a convex polyhedron. It it is not, weird results may be produced.
§Return
Retruns None
if:
- The given solid does not satisfy the euler characteristic.
- The given solid contains degenerate edges/triangles.
Sourcepub fn check_geometry(&self)
pub fn check_geometry(&self)
Verify if this convex polyhedron is actually convex.
Trait Implementations§
Source§impl<N: Clone + RealField + Copy> Clone for ConvexHull<N>
impl<N: Clone + RealField + Copy> Clone for ConvexHull<N>
Source§fn clone(&self) -> ConvexHull<N>
fn clone(&self) -> ConvexHull<N>
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<N: RealField + Copy> ConvexPolyhedron<N> for ConvexHull<N>
impl<N: RealField + Copy> ConvexPolyhedron<N> for ConvexHull<N>
Source§fn vertex(&self, id: FeatureId) -> Point<N>
fn vertex(&self, id: FeatureId) -> Point<N>
Gets the specified vertex in the shape local-space.
Source§fn edge(&self, id: FeatureId) -> (Point<N>, Point<N>, FeatureId, FeatureId)
fn edge(&self, id: FeatureId) -> (Point<N>, Point<N>, FeatureId, FeatureId)
Get the specified edge’s vertices (in the shape local-space) and the vertices’ identifiers.
Source§fn face(&self, id: FeatureId, out: &mut ConvexPolygonalFeature<N>)
fn face(&self, id: FeatureId, out: &mut ConvexPolygonalFeature<N>)
Fill
face
with the geometric description of the specified face, in the shape’s local-space.Source§fn feature_normal(&self, feature: FeatureId) -> Unit<Vector<N>>
fn feature_normal(&self, feature: FeatureId) -> Unit<Vector<N>>
Returns any normal from the normal cone of the given feature.
Source§fn support_face_toward(
&self,
m: &Isometry<N>,
dir: &Unit<Vector<N>>,
out: &mut ConvexPolygonalFeature<N>,
)
fn support_face_toward( &self, m: &Isometry<N>, dir: &Unit<Vector<N>>, out: &mut ConvexPolygonalFeature<N>, )
Retrieve the face (in world-space) with a normal that maximizes the scalar product with
dir
.Source§fn support_feature_toward(
&self,
transform: &Isometry<N>,
dir: &Unit<Vector<N>>,
angle: N,
out: &mut ConvexPolygonalFeature<N>,
)
fn support_feature_toward( &self, transform: &Isometry<N>, dir: &Unit<Vector<N>>, angle: N, out: &mut ConvexPolygonalFeature<N>, )
Retrieve the feature (in world-space) which normal cone contains
dir
.Source§impl<N: RealField + Copy> HasBoundingVolume<N, AABB<N>> for ConvexHull<N>
impl<N: RealField + Copy> HasBoundingVolume<N, AABB<N>> for ConvexHull<N>
Source§fn bounding_volume(&self, m: &Isometry<N>) -> AABB<N>
fn bounding_volume(&self, m: &Isometry<N>) -> AABB<N>
The bounding volume of
self
transformed by m
.Source§fn local_bounding_volume(&self) -> AABB<N>
fn local_bounding_volume(&self) -> AABB<N>
The bounding volume of
self
.Source§impl<N: RealField + Copy> HasBoundingVolume<N, BoundingSphere<N>> for ConvexHull<N>
impl<N: RealField + Copy> HasBoundingVolume<N, BoundingSphere<N>> for ConvexHull<N>
Source§fn bounding_volume(&self, m: &Isometry<N>) -> BoundingSphere<N>
fn bounding_volume(&self, m: &Isometry<N>) -> BoundingSphere<N>
The bounding volume of
self
transformed by m
.Source§fn local_bounding_volume(&self) -> BoundingSphere<N>
fn local_bounding_volume(&self) -> BoundingSphere<N>
The bounding volume of
self
.Source§impl<N: RealField + Copy> PointQuery<N> for ConvexHull<N>
impl<N: RealField + Copy> PointQuery<N> for ConvexHull<N>
Source§fn project_point(
&self,
m: &Isometry<N>,
point: &Point<N>,
solid: bool,
) -> PointProjection<N>
fn project_point( &self, m: &Isometry<N>, point: &Point<N>, solid: bool, ) -> PointProjection<N>
Projects a point on
self
transformed by m
.Source§fn project_point_with_feature(
&self,
m: &Isometry<N>,
point: &Point<N>,
) -> (PointProjection<N>, FeatureId)
fn project_point_with_feature( &self, m: &Isometry<N>, point: &Point<N>, ) -> (PointProjection<N>, FeatureId)
Projects a point on the boundary of
self
transformed by m
and retuns the id of the
feature the point was projected on.Source§impl<N: RealField + Copy> RayCast<N> for ConvexHull<N>
impl<N: RealField + Copy> RayCast<N> for ConvexHull<N>
Source§fn toi_and_normal_with_ray(
&self,
m: &Isometry<N>,
ray: &Ray<N>,
max_toi: N,
solid: bool,
) -> Option<RayIntersection<N>>
fn toi_and_normal_with_ray( &self, m: &Isometry<N>, ray: &Ray<N>, max_toi: N, solid: bool, ) -> Option<RayIntersection<N>>
Computes the time of impact, and normal between this transformed shape and a ray.
Source§fn toi_with_ray(
&self,
m: &Isometry<N>,
ray: &Ray<N>,
max_toi: N,
solid: bool,
) -> Option<N>
fn toi_with_ray( &self, m: &Isometry<N>, ray: &Ray<N>, max_toi: N, solid: bool, ) -> Option<N>
Computes the time of impact between this transform shape and a ray.
Source§fn toi_and_normal_and_uv_with_ray(
&self,
m: &Isometry<N>,
ray: &Ray<N>,
max_toi: N,
solid: bool,
) -> Option<RayIntersection<N>>
fn toi_and_normal_and_uv_with_ray( &self, m: &Isometry<N>, ray: &Ray<N>, max_toi: N, solid: bool, ) -> Option<RayIntersection<N>>
Computes time of impact, normal, and texture coordinates (uv) between this transformed
shape and a ray.
Source§impl<N: RealField + Copy> Shape<N> for ConvexHull<N>
impl<N: RealField + Copy> Shape<N> for ConvexHull<N>
Source§fn local_aabb(&self) -> AABB<N>
fn local_aabb(&self) -> AABB<N>
The AABB of
self
.Source§fn bounding_sphere(&self, m: &Isometry<N>) -> BoundingSphere<N>
fn bounding_sphere(&self, m: &Isometry<N>) -> BoundingSphere<N>
The bounding sphere of
self
transformed by m
.Source§fn as_ray_cast(&self) -> Option<&dyn RayCast<N>>
fn as_ray_cast(&self) -> Option<&dyn RayCast<N>>
The
RayCast
implementation of self
.Source§fn as_point_query(&self) -> Option<&dyn PointQuery<N>>
fn as_point_query(&self) -> Option<&dyn PointQuery<N>>
The
PointQuery
implementation of self
.Source§fn as_support_map(&self) -> Option<&dyn SupportMap<N>>
fn as_support_map(&self) -> Option<&dyn SupportMap<N>>
The support mapping of
self
if applicable.Source§fn is_support_map(&self) -> bool
fn is_support_map(&self) -> bool
Whether
self
uses a support-mapping based representation.Source§fn as_convex_polyhedron(&self) -> Option<&dyn ConvexPolyhedron<N>>
fn as_convex_polyhedron(&self) -> Option<&dyn ConvexPolyhedron<N>>
The convex polyhedron representation of
self
if applicable.Source§fn is_convex_polyhedron(&self) -> bool
fn is_convex_polyhedron(&self) -> bool
Whether
self
uses a convex polyhedron representation.Source§fn tangent_cone_contains_dir(
&self,
feature: FeatureId,
m: &Isometry<N>,
_: Option<&[N]>,
dir: &Unit<Vector<N>>,
) -> bool
fn tangent_cone_contains_dir( &self, feature: FeatureId, m: &Isometry<N>, _: Option<&[N]>, dir: &Unit<Vector<N>>, ) -> bool
Check if if the feature
_feature
of the i-th
subshape of self
transformed by m
has a tangent
cone that contains dir
at the point pt
.Source§fn local_bounding_sphere(&self) -> BoundingSphere<N>
fn local_bounding_sphere(&self) -> BoundingSphere<N>
The bounding sphere of
self
.Source§fn subshape_containing_feature(&self, _i: FeatureId) -> usize
fn subshape_containing_feature(&self, _i: FeatureId) -> usize
Returns the id of the subshape containing the specified feature. Read more
Source§fn as_composite_shape(&self) -> Option<&dyn CompositeShape<N>>
fn as_composite_shape(&self) -> Option<&dyn CompositeShape<N>>
The composite shape representation of
self
if applicable.Source§fn as_deformable_shape(&self) -> Option<&dyn DeformableShape<N>>
fn as_deformable_shape(&self) -> Option<&dyn DeformableShape<N>>
The deformable shape representation of
self
if applicable.Source§fn as_deformable_shape_mut(&mut self) -> Option<&mut dyn DeformableShape<N>>
fn as_deformable_shape_mut(&mut self) -> Option<&mut dyn DeformableShape<N>>
The mutable deformable shape representation of
self
if applicable.Source§fn is_composite_shape(&self) -> bool
fn is_composite_shape(&self) -> bool
Whether
self
uses a composite shape-based representation.Source§fn is_deformable_shape(&self) -> bool
fn is_deformable_shape(&self) -> bool
Whether
self
uses a composite shape-based representation.Source§impl<N: RealField + Copy> SupportMap<N> for ConvexHull<N>
impl<N: RealField + Copy> SupportMap<N> for ConvexHull<N>
impl<N: RealField + Copy> StructuralPartialEq for ConvexHull<N>
Auto Trait Implementations§
impl<N> Freeze for ConvexHull<N>
impl<N> RefUnwindSafe for ConvexHull<N>where
N: RefUnwindSafe,
impl<N> Send for ConvexHull<N>
impl<N> Sync for ConvexHull<N>
impl<N> Unpin for ConvexHull<N>where
N: Unpin,
impl<N> UnwindSafe for ConvexHull<N>where
N: UnwindSafe,
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§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>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read moreSource§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).Source§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.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.