[][src]Trait parry3d::query::QueryDispatcher

pub trait QueryDispatcher: Send + Sync {
    fn intersection_test(
        &self,
        pos12: &Isometry<Real>,
        g1: &dyn Shape,
        g2: &dyn Shape
    ) -> Result<bool, Unsupported>;
fn distance(
        &self,
        pos12: &Isometry<Real>,
        g1: &dyn Shape,
        g2: &dyn Shape
    ) -> Result<Real, Unsupported>;
fn contact(
        &self,
        pos12: &Isometry<Real>,
        g1: &dyn Shape,
        g2: &dyn Shape,
        prediction: Real
    ) -> Result<Option<Contact>, Unsupported>;
fn closest_points(
        &self,
        pos12: &Isometry<Real>,
        g1: &dyn Shape,
        g2: &dyn Shape,
        max_dist: Real
    ) -> Result<ClosestPoints, Unsupported>;
fn time_of_impact(
        &self,
        pos12: &Isometry<Real>,
        vel12: &Vector<Real>,
        g1: &dyn Shape,
        g2: &dyn Shape,
        max_toi: Real,
        target_distance: Real
    ) -> Result<Option<TOI>, Unsupported>;
fn nonlinear_time_of_impact(
        &self,
        motion12: &dyn RigidMotion,
        g1: &dyn Shape,
        g2: &dyn Shape,
        max_toi: Real,
        target_distance: Real
    ) -> Result<Option<TOI>, Unsupported>; fn chain<U: QueryDispatcher>(
        self,
        other: U
    ) -> QueryDispatcherChain<Self, U>
    where
        Self: Sized
, { ... } }

Dispatcher for pairwise queries.

Custom implementations allow crates that support an abstract QueryDispatcher to handle custom shapes.

Required methods

fn intersection_test(
    &self,
    pos12: &Isometry<Real>,
    g1: &dyn Shape,
    g2: &dyn Shape
) -> Result<bool, Unsupported>
[src]

Tests whether two shapes are intersecting.

fn distance(
    &self,
    pos12: &Isometry<Real>,
    g1: &dyn Shape,
    g2: &dyn Shape
) -> Result<Real, Unsupported>
[src]

Computes the minimum distance separating two shapes.

Returns 0.0 if the objects are touching or penetrating.

fn contact(
    &self,
    pos12: &Isometry<Real>,
    g1: &dyn Shape,
    g2: &dyn Shape,
    prediction: Real
) -> Result<Option<Contact>, Unsupported>
[src]

Computes one pair of contact points point between two shapes.

Returns None if the objects are separated by a distance greater than prediction.

fn closest_points(
    &self,
    pos12: &Isometry<Real>,
    g1: &dyn Shape,
    g2: &dyn Shape,
    max_dist: Real
) -> Result<ClosestPoints, Unsupported>
[src]

Computes the pair of closest points between two shapes.

Returns ClosestPoints::Disjoint if the objects are separated by a distance greater than max_dist.

fn time_of_impact(
    &self,
    pos12: &Isometry<Real>,
    vel12: &Vector<Real>,
    g1: &dyn Shape,
    g2: &dyn Shape,
    max_toi: Real,
    target_distance: Real
) -> Result<Option<TOI>, Unsupported>
[src]

Computes the smallest time when two shapes under translational movement are separated by a distance smaller or equal to distance.

Returns 0.0 if the objects are touching or penetrating.

fn nonlinear_time_of_impact(
    &self,
    motion12: &dyn RigidMotion,
    g1: &dyn Shape,
    g2: &dyn Shape,
    max_toi: Real,
    target_distance: Real
) -> Result<Option<TOI>, Unsupported>
[src]

Computes the smallest time of impact of two shapes under translational movement.

Loading content...

Provided methods

fn chain<U: QueryDispatcher>(self, other: U) -> QueryDispatcherChain<Self, U> where
    Self: Sized
[src]

Construct a QueryDispatcher that falls back on other for cases not handled by self

Loading content...

Implementors

impl QueryDispatcher for DefaultQueryDispatcher[src]

fn distance(
    &self,
    pos12: &Isometry<Real>,
    shape1: &dyn Shape,
    shape2: &dyn Shape
) -> Result<Real, Unsupported>
[src]

Computes the minimum distance separating two shapes.

Returns 0.0 if the objects are touching or penetrating.

impl<T, U> QueryDispatcher for QueryDispatcherChain<T, U> where
    T: QueryDispatcher,
    U: QueryDispatcher
[src]

Loading content...