Struct oxygengine_physics_2d::prelude::ConvexPolygon
source · pub struct ConvexPolygon<N>where
N: RealField + Copy,{ /* private fields */ }
Expand description
A 2D convex polygon.
Implementations§
source§impl<N> ConvexPolygon<N>where
N: RealField + Copy,
impl<N> ConvexPolygon<N>where N: RealField + Copy,
sourcepub fn try_from_points(
points: &[OPoint<N, Const<2>>]
) -> Option<ConvexPolygon<N>>
pub fn try_from_points( points: &[OPoint<N, Const<2>>] ) -> Option<ConvexPolygon<N>>
Creates a new 2D convex polygon 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<OPoint<N, Const<2>>, Global>
) -> Option<ConvexPolygon<N>>
pub fn try_new( points: Vec<OPoint<N, Const<2>>, Global> ) -> Option<ConvexPolygon<N>>
Creates a new 2D convex polygon from a set of points assumed to describe a counter-clockwise convex polyline.
Convexity of the input polyline is not checked.
Returns None
if some consecutive points are identical (or too close to being so).
sourcepub fn normals(
&self
) -> &[Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>>]
pub fn normals( &self ) -> &[Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>>]
The normals of the edges of this convex polygon.
sourcepub fn tangent_cone_contains_dir(
&self,
feature: FeatureId,
m: &Isometry<N, Unit<Complex<N>>, 2>,
dir: &Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>>
) -> bool
pub fn tangent_cone_contains_dir( &self, feature: FeatureId, m: &Isometry<N, Unit<Complex<N>>, 2>, dir: &Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>> ) -> bool
Checks that the given direction in world-space is on the tangent cone of the given feature
.
Trait Implementations§
source§impl<N> Clone for ConvexPolygon<N>where
N: Clone + RealField + Copy,
impl<N> Clone for ConvexPolygon<N>where N: Clone + RealField + Copy,
source§fn clone(&self) -> ConvexPolygon<N>
fn clone(&self) -> ConvexPolygon<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> ConvexPolyhedron<N> for ConvexPolygon<N>where
N: RealField + Copy,
impl<N> ConvexPolyhedron<N> for ConvexPolygon<N>where N: RealField + Copy,
source§fn vertex(&self, id: FeatureId) -> OPoint<N, Const<2>>
fn vertex(&self, id: FeatureId) -> OPoint<N, Const<2>>
Gets the specified vertex in the shape local-space.
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<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>>
fn feature_normal( &self, feature: FeatureId ) -> Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>>
Returns any normal from the normal cone of the given feature.
source§fn support_face_toward(
&self,
m: &Isometry<N, Unit<Complex<N>>, 2>,
dir: &Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>>,
out: &mut ConvexPolygonalFeature<N>
)
fn support_face_toward( &self, m: &Isometry<N, Unit<Complex<N>>, 2>, dir: &Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>>, 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, Unit<Complex<N>>, 2>,
dir: &Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>>,
_angle: N,
out: &mut ConvexPolygonalFeature<N>
)
fn support_feature_toward( &self, transform: &Isometry<N, Unit<Complex<N>>, 2>, dir: &Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>>, _angle: N, out: &mut ConvexPolygonalFeature<N> )
Retrieve the feature (in world-space) which normal cone contains
dir
.source§fn support_feature_id_toward(
&self,
local_dir: &Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>>
) -> FeatureId
fn support_feature_id_toward( &self, local_dir: &Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>> ) -> FeatureId
Retrieve the identifier of the feature which normal cone contains
dir
.source§impl<'de, N> Deserialize<'de> for ConvexPolygon<N>where
N: RealField + Copy + Deserialize<'de>,
impl<'de, N> Deserialize<'de> for ConvexPolygon<N>where N: RealField + Copy + Deserialize<'de>,
source§fn deserialize<__D>(
__deserializer: __D
) -> Result<ConvexPolygon<N>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>( __deserializer: __D ) -> Result<ConvexPolygon<N>, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<N> HasBoundingVolume<N, AABB<N>> for ConvexPolygon<N>where
N: RealField + Copy,
impl<N> HasBoundingVolume<N, AABB<N>> for ConvexPolygon<N>where N: RealField + Copy,
source§impl<N> HasBoundingVolume<N, BoundingSphere<N>> for ConvexPolygon<N>where
N: RealField + Copy,
impl<N> HasBoundingVolume<N, BoundingSphere<N>> for ConvexPolygon<N>where N: RealField + Copy,
source§fn bounding_volume(
&self,
m: &Isometry<N, Unit<Complex<N>>, 2>
) -> BoundingSphere<N>
fn bounding_volume( &self, m: &Isometry<N, Unit<Complex<N>>, 2> ) -> 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> PointQuery<N> for ConvexPolygon<N>where
N: RealField + Copy,
impl<N> PointQuery<N> for ConvexPolygon<N>where N: RealField + Copy,
source§fn project_point(
&self,
m: &Isometry<N, Unit<Complex<N>>, 2>,
point: &OPoint<N, Const<2>>,
solid: bool
) -> PointProjection<N>
fn project_point( &self, m: &Isometry<N, Unit<Complex<N>>, 2>, point: &OPoint<N, Const<2>>, solid: bool ) -> PointProjection<N>
Projects a point on
self
transformed by m
.source§fn project_point_with_feature(
&self,
m: &Isometry<N, Unit<Complex<N>>, 2>,
point: &OPoint<N, Const<2>>
) -> (PointProjection<N>, FeatureId)
fn project_point_with_feature( &self, m: &Isometry<N, Unit<Complex<N>>, 2>, point: &OPoint<N, Const<2>> ) -> (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> RayCast<N> for ConvexPolygon<N>where
N: RealField + Copy,
impl<N> RayCast<N> for ConvexPolygon<N>where N: RealField + Copy,
source§fn toi_and_normal_with_ray(
&self,
m: &Isometry<N, Unit<Complex<N>>, 2>,
ray: &Ray<N>,
max_toi: N,
solid: bool
) -> Option<RayIntersection<N>>
fn toi_and_normal_with_ray( &self, m: &Isometry<N, Unit<Complex<N>>, 2>, 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§impl<N> Serialize for ConvexPolygon<N>where
N: RealField + Copy + Serialize,
impl<N> Serialize for ConvexPolygon<N>where N: RealField + Copy + Serialize,
source§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,
Serialize this value into the given Serde serializer. Read more
source§impl<N> Shape<N> for ConvexPolygon<N>where
N: RealField + Copy,
impl<N> Shape<N> for ConvexPolygon<N>where N: RealField + Copy,
source§fn aabb(&self, m: &Isometry<N, Unit<Complex<N>>, 2>) -> AABB<N>
fn aabb(&self, m: &Isometry<N, Unit<Complex<N>>, 2>) -> AABB<N>
The AABB of
self
transformed by m
.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, Unit<Complex<N>>, 2>
) -> BoundingSphere<N>
fn bounding_sphere( &self, m: &Isometry<N, Unit<Complex<N>>, 2> ) -> 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, Unit<Complex<N>>, 2>,
_: Option<&[N]>,
dir: &Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>>
) -> bool
fn tangent_cone_contains_dir( &self, feature: FeatureId, m: &Isometry<N, Unit<Complex<N>>, 2>, _: Option<&[N]>, dir: &Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>> ) -> 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> SupportMap<N> for ConvexPolygon<N>where
N: RealField + Copy,
impl<N> SupportMap<N> for ConvexPolygon<N>where N: RealField + Copy,
fn local_support_point( &self, dir: &Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>> ) -> OPoint<N, Const<2>>
source§fn local_support_point_toward(
&self,
dir: &Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>>
) -> OPoint<N, Const<2>>
fn local_support_point_toward( &self, dir: &Unit<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>> ) -> OPoint<N, Const<2>>
Same as
self.local_support_point
except that dir
is normalized.fn support_point( &self, transform: &Isometry<N, Unit<Complex<N>>, 2>, dir: &Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>> ) -> OPoint<N, Const<2>>
source§impl<N> Volumetric<N> for ConvexPolygon<N>where
N: RealField + Copy,
impl<N> Volumetric<N> for ConvexPolygon<N>where N: RealField + Copy,
source§fn center_of_mass(&self) -> OPoint<N, Const<2>>
fn center_of_mass(&self) -> OPoint<N, Const<2>>
Computes the center of mass of this object.
source§fn unit_angular_inertia(
&self
) -> Matrix<N, Const<1>, Const<1>, ArrayStorage<N, 1, 1>>
fn unit_angular_inertia( &self ) -> Matrix<N, Const<1>, Const<1>, ArrayStorage<N, 1, 1>>
Computes the angular inertia tensor of this object.
source§fn mass_properties(
&self,
density: N
) -> (N, OPoint<N, Const<2>>, Matrix<N, Const<1>, Const<1>, ArrayStorage<N, 1, 1>>)
fn mass_properties( &self, density: N ) -> (N, OPoint<N, Const<2>>, Matrix<N, Const<1>, Const<1>, ArrayStorage<N, 1, 1>>)
Given its density, this computes the mass, center of mass, and inertia tensor of this object.
source§fn angular_inertia(
&self,
mass: N
) -> Matrix<N, Const<1>, Const<1>, ArrayStorage<N, 1, 1>>
fn angular_inertia( &self, mass: N ) -> Matrix<N, Const<1>, Const<1>, ArrayStorage<N, 1, 1>>
Given its mass, this computes the angular inertia of this object.
source§fn transformed_mass_properties(
&self,
density: N,
pos: &Isometry<N, Unit<Complex<N>>, 2>
) -> (OPoint<N, Const<2>>, Inertia2<N>)
fn transformed_mass_properties( &self, density: N, pos: &Isometry<N, Unit<Complex<N>>, 2> ) -> (OPoint<N, Const<2>>, Inertia2<N>)
Given its density and position, this computes the mass, transformed center of mass, and transformed inertia tensor of this object.
fn inertia(&self, density: N) -> Inertia2<N>
Auto Trait Implementations§
impl<N> RefUnwindSafe for ConvexPolygon<N>where N: RefUnwindSafe,
impl<N> Send for ConvexPolygon<N>
impl<N> Sync for ConvexPolygon<N>
impl<N> Unpin for ConvexPolygon<N>where N: Unpin,
impl<N> UnwindSafe for ConvexPolygon<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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
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, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
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<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
§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 more§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).§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.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.