Module query

Source
Expand description

Non-persistent geometric queries.

§General cases

The most general methods provided by this module are:

  • closest_points() to compute the closest points between two shapes.
  • distance() to compute the distance between two shapes.
  • contact() to compute one pair of contact points between two shapes, including penetrating contact.
  • intersection_test() to determine if two shapes are intersecting or not.
  • cast_shapes() to determine when two shapes undergoing translational motions hit for the first time.
  • cast_shapes_nonlinear() to determine when two shapes undergoing continuous rigid motions hit for the first time.

Ray-casting and point-projection can be achieved by importing traits:

§Specific cases

The functions exported by the details submodule are more specific versions of the ones described above. For example distance_ball_ball computes the distance between two shapes known at compile-time to be balls. They are less convenient to use than the most generic version but will be slightly faster due to the lack of dynamic dispatch. The specific functions have the form [operation]_[shape1]_[shape2]() where:

  • [operation] can be closest_points, distance, contact, intersection_test or time_of_impact.
  • [shape1] is the type of the first shape passed to the function, e.g., ball, or halfspace. Can also identify a trait implemented by supported shapes, e.g., support_map.
  • [shape2] is the type of the second shape passed to the function, e.g., ball, or halfspace. Can also identify a trait implemented by supported shapes, e.g., support_map.

Re-exports§

pub use self::closest_points::closest_points;
pub use self::closest_points::ClosestPoints;
pub use self::contact::contact;
pub use self::contact::Contact;
pub use self::point::PointProjection;
pub use self::point::PointQuery;
pub use self::point::PointQueryWithLocation;

Modules§

closest_points
Implementation details of the closest_points function.
contact
Implementation details of the contact and contacts functions.
details
Queries dedicated to specific pairs of shapes.
epa
The EPA algorithm for penetration depth computation.
gjk
The GJK algorithm for distance computation.
point
Point inclusion and projection.
sat
Application of the Separating-Axis-Theorem (SAT).

Structs§

ContactManifold
A contact manifold between two shapes.
ContactManifoldsWorkspace
A serializable workspace used by some contact-manifolds computation algorithms.
DefaultQueryDispatcher
A dispatcher that exposes built-in queries
NonlinearRigidMotion
A nonlinear motion from a starting isometry traveling at constant translational and rotational velocity.
QueryDispatcherChain
The composition of two dispatchers
Ray
A Ray.
RayIntersection
Structure containing the result of a successful ray cast.
ShapeCastHit
The result of a shape casting..
ShapeCastOptions
Configuration for controlling the behavior of time-of-impact (i.e. shape-casting) calculations.
SimdRay
A structure representing 4 rays in an SIMD SoA fashion.
TrackedContact
A single contact between two shape.
Unsupported
Error indicating that a query is not supported between certain shapes

Enums§

IntersectResult
The result of a plane-intersection operation.
RayCullingMode
Controls which side of a triangle a ray-cast is allowed to hit.
ShapeCastStatus
The status of the time-of-impact computation algorithm.
SplitResult
The result of a plane-splitting operation.
TypedWorkspaceData
Enum representing workspace data of a specific type.

Traits§

PersistentQueryDispatcher
A query dispatcher for queries relying on spatial coherence, including contact-manifold computation.
QueryDispatcher
Dispatcher for pairwise queries.
RayCast
Traits of objects which can be transformed and tested for intersection with a ray.
WorkspaceData
Data from a ContactManifoldsWorkspace.

Functions§

cast_shapes
Computes the smallest time when two shapes under translational movement are separated by a distance smaller or equal to distance.
cast_shapes_nonlinear
Computes the smallest time of impact of two shapes under translational an rotational movements.
distance
Computes the minimum distance separating two shapes.
intersection_test
Tests whether two shapes are intersecting.