PxGjkQuery#

Defined in include/geometry/PxGjkQuery.h

Structs#

Support

Abstract interface for a user defined shape GJK mapping support.

class PxGjkQuery#

Collection of GJK query functions (sweeps, raycasts, overlaps, …).

Public Static Functions

static bool proximityInfo(
const Support &a,
const Support &b,
const PxTransform &poseA,
const PxTransform &poseB,
PxReal contactDistance,
PxReal toleranceLength,
PxVec3 &pointA,
PxVec3 &pointB,
PxVec3 &separatingAxis,
PxReal &separation,
)#

Computes proximity information for two shapes using GJK-EPA algorithm.

Parameters:
  • a[in] Shape A support mapping

  • b[in] Shape B support mapping

  • poseA[in] Shape A transformation

  • poseB[in] Shape B transformation

  • contactDistance[in] The distance at which proximity info begins to be computed between the shapes

  • toleranceLength[in] The toleranceLength. Used for scaling distance-based thresholds internally to produce appropriate results given simulations in different units

  • pointA[out] The closest/deepest point on shape A surface

  • pointB[out] The closest/deepest point on shape B surface

  • separatingAxis[out] Translating shape B along ‘separatingAxis’ by ‘separation’ makes the shapes touching

  • separation[out] Translating shape B along ‘separatingAxis’ by ‘separation’ makes the shapes touching

Returns:

False if the distance is greater than contactDistance.

static bool raycast(
const Support &shape,
const PxTransform &pose,
const PxVec3 &rayStart,
const PxVec3 &unitDir,
PxReal maxDist,
PxReal &t,
PxVec3 &n,
PxVec3 &p,
)#

Raycast test against the given shape.

Parameters:
  • shape[in] Shape support mapping

  • pose[in] Shape transformation

  • rayStart[in] The start point of the ray to test the shape against

  • unitDir[in] Normalized direction of the ray to test the shape against

  • maxDist[in] Maximum ray length, has to be in the [0, inf) range

  • t[out] Hit distance

  • n[out] Hit normal

  • p[out] Hit point

Returns:

True if there is a hit.

static bool overlap(
const Support &a,
const Support &b,
const PxTransform &poseA,
const PxTransform &poseB,
)#

Overlap test for two shapes.

Parameters:
  • a[in] Shape A support mapping

  • b[in] Shape B support mapping

  • poseA[in] Shape A transformation

  • poseB[in] Shape B transformation

Returns:

True if the shapes overlap.

static bool sweep(
const Support &a,
const Support &b,
const PxTransform &poseA,
const PxTransform &poseB,
const PxVec3 &unitDir,
PxReal maxDist,
PxReal &t,
PxVec3 &n,
PxVec3 &p,
)#

Sweep the shape B in space and test for collision with the shape A.

Parameters:
  • a[in] Shape A support mapping

  • b[in] Shape B support mapping

  • poseA[in] Shape A transformation

  • poseB[in] Shape B transformation

  • unitDir[in] Normalized direction of the ray to test the shape against

  • maxDist[in] Maximum ray length, has to be in the [0, inf) range

  • t[out] Hit distance

  • n[out] Hit normal

  • p[out] Hit point

Returns:

True if there is a hit.

struct Support#

Abstract interface for a user defined shape GJK mapping support.

A user defined shape consists of a core shape and a margin. If the distance between two shapes’ cores is equal to the sum of their margins, these shapes are considered touching.

Subclassed by PxGjkQueryExt::BoxSupport, PxGjkQueryExt::CapsuleSupport, PxGjkQueryExt::ConvexGeomSupport, PxGjkQueryExt::ConvexMeshSupport, PxGjkQueryExt::SphereSupport

Public Functions

inline virtual ~Support()#
virtual PxReal getMargin() const = 0#

Return the user defined shape margin.

Margin should be greater than or equal to 0

Returns:

Margin.

virtual PxVec3 supportLocal(const PxVec3 &dir) const = 0#

Return the farthest point on the user defined shape’s core in given direction.

Parameters:

dir[in] Direction

Returns:

Farthest point in given direction.