#[repr(C)]pub struct Segment {
pub a: Point<Real>,
pub b: Point<Real>,
}
Expand description
A segment shape.
Fields§
§a: Point<Real>
The segment first point.
b: Point<Real>
The segment second point.
Implementations§
source§impl Segment
impl Segment
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 segment, transformed by pos
.
sourcepub fn local_bounding_sphere(&self) -> BoundingSphere
pub fn local_bounding_sphere(&self) -> BoundingSphere
Computes the local-space bounding sphere of this segment.
source§impl Segment
impl Segment
sourcepub fn canonical_split(
&self,
axis: usize,
bias: Real,
epsilon: Real
) -> SplitResult<Self>
pub fn canonical_split( &self, axis: usize, bias: Real, epsilon: Real ) -> SplitResult<Self>
Splits this segment along the given canonical axis.
This will split the segment by a plane with a normal with it’s axis
-th component set to 1.
The splitting plane is shifted wrt. the origin by the bias
(i.e. it passes through the point
equal to normal * bias
).
§Result
Returns the result of the split. The first shape returned is the piece lying on the negative half-space delimited by the splitting plane. The second shape returned is the piece lying on the positive half-space delimited by the splitting plane.
sourcepub fn local_split(
&self,
local_axis: &UnitVector<Real>,
bias: Real,
epsilon: Real
) -> SplitResult<Self>
pub fn local_split( &self, local_axis: &UnitVector<Real>, bias: Real, epsilon: Real ) -> SplitResult<Self>
Splits this segment by a plane identified by its normal local_axis
and
the bias
(i.e. the plane passes through the point equal to normal * bias
).
sourcepub fn local_split_and_get_intersection(
&self,
local_axis: &UnitVector<Real>,
bias: Real,
epsilon: Real
) -> (SplitResult<Self>, Option<(Point<Real>, Real)>)
pub fn local_split_and_get_intersection( &self, local_axis: &UnitVector<Real>, bias: Real, epsilon: Real ) -> (SplitResult<Self>, Option<(Point<Real>, Real)>)
Split a segment with a plane.
This returns the result of the splitting operation, as well as
the intersection point (and barycentric coordinate of this point)
with the plane. The intersection point is None
if the plane is
parallel or near-parallel to the segment.
source§impl Segment
impl Segment
sourcepub fn from_array(arr: &[Point<Real>; 2]) -> &Segment
pub fn from_array(arr: &[Point<Real>; 2]) -> &Segment
Creates the reference to a segment from the reference to an array of two points.
sourcepub fn scaled_direction(&self) -> Vector<Real>
pub fn scaled_direction(&self) -> Vector<Real>
The direction of this segment scaled by its length.
Points from self.a
toward self.b
.
sourcepub fn direction(&self) -> Option<Unit<Vector<Real>>>
pub fn direction(&self) -> Option<Unit<Vector<Real>>>
The unit direction of this segment.
Points from self.a()
toward self.b()
.
Returns None
is both points are equal.
sourcepub fn scaled_planar_normal(&self, plane_axis: u8) -> Vector<Real>
pub fn scaled_planar_normal(&self, plane_axis: u8) -> Vector<Real>
The not-normalized counterclockwise normal of this segment, assuming it lies on the plane with the normal collinear to the given axis (0 = X, 1 = Y, 2 = Z).
sourcepub fn normal(&self) -> Option<Unit<Vector<Real>>>
pub fn normal(&self) -> Option<Unit<Vector<Real>>>
Returns None
. Exists only for API similarity with the 2D parry.
sourcepub fn planar_normal(&self, plane_axis: u8) -> Option<Unit<Vector<Real>>>
pub fn planar_normal(&self, plane_axis: u8) -> Option<Unit<Vector<Real>>>
The normalized counterclockwise normal of this segment, assuming it lies on the plane with the normal collinear to the given axis (0 = X, 1 = Y, 2 = Z).
sourcepub fn transformed(&self, m: &Isometry<Real>) -> Self
pub fn transformed(&self, m: &Isometry<Real>) -> Self
Applies the isometry m
to the vertices of this segment and returns the resulting segment.
sourcepub fn point_at(&self, location: &SegmentPointLocation) -> Point<Real>
pub fn point_at(&self, location: &SegmentPointLocation) -> Point<Real>
Computes the point at the given location.
Trait Implementations§
source§impl From<Segment> for PolygonalFeature
impl From<Segment> for PolygonalFeature
source§impl PartialEq for Segment
impl PartialEq for Segment
source§impl PointQuery for Segment
impl PointQuery for Segment
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 PointQueryWithLocation for Segment
impl PointQueryWithLocation for Segment
§type Location = SegmentPointLocation
type Location = SegmentPointLocation
source§fn project_local_point_and_get_location(
&self,
pt: &Point<Real>,
_: bool
) -> (PointProjection, Self::Location)
fn project_local_point_and_get_location( &self, pt: &Point<Real>, _: bool ) -> (PointProjection, Self::Location)
self
.source§fn project_point_and_get_location(
&self,
m: &Isometry<Real>,
pt: &Point<Real>,
solid: bool
) -> (PointProjection, Self::Location)
fn project_point_and_get_location( &self, m: &Isometry<Real>, pt: &Point<Real>, solid: bool ) -> (PointProjection, Self::Location)
self
transformed by m
.source§fn project_local_point_and_get_location_with_max_dist(
&self,
pt: &Point<Real>,
solid: bool,
max_dist: Real
) -> Option<(PointProjection, Self::Location)>
fn project_local_point_and_get_location_with_max_dist( &self, pt: &Point<Real>, solid: bool, max_dist: Real ) -> Option<(PointProjection, Self::Location)>
self
, with a maximum projection distance.source§impl PolygonalFeatureMap for Segment
impl PolygonalFeatureMap for Segment
source§fn local_support_feature(
&self,
_: &Unit<Vector<Real>>,
out_feature: &mut PolygonalFeature
)
fn local_support_feature( &self, _: &Unit<Vector<Real>>, out_feature: &mut PolygonalFeature )
self
towards the dir
.source§fn is_convex_polyhedron(&self) -> bool
fn is_convex_polyhedron(&self) -> bool
ConvexPolyhedron
?source§impl RayCast for Segment
impl RayCast for Segment
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 Segment
impl Shape for Segment
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
fn ccd_thickness(&self) -> Real
fn ccd_angular_thickness(&self) -> Real
source§fn shape_type(&self) -> ShapeType
fn shape_type(&self) -> ShapeType
source§fn as_typed_shape(&self) -> TypedShape<'_>
fn as_typed_shape(&self) -> TypedShape<'_>
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 feature_normal_at_point(
&self,
feature: FeatureId,
_point: &Point<Real>
) -> Option<Unit<Vector<Real>>>
fn feature_normal_at_point( &self, feature: FeatureId, _point: &Point<Real> ) -> Option<Unit<Vector<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 Segment
impl SupportMap for Segment
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 Segment
impl StructuralPartialEq for Segment
Auto Trait Implementations§
impl Freeze for Segment
impl RefUnwindSafe for Segment
impl Send for Segment
impl Sync for Segment
impl Unpin for Segment
impl UnwindSafe for Segment
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.