All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fcl::TriangleDistance Class Reference

Triangle distance functions. More...

#include <hpp/fcl/intersect.h>

Static Public Member Functions

static void segPoints (const Vec3f &P, const Vec3f &A, const Vec3f &Q, const Vec3f &B, Vec3f &VEC, Vec3f &X, Vec3f &Y)
 Returns closest points between an segment pair. More...
 
static FCL_REAL sqrTriDistance (const Vec3f S[3], const Vec3f T[3], Vec3f &P, Vec3f &Q)
 Compute squared distance between triangles. More...
 
static FCL_REAL sqrTriDistance (const Vec3f &S1, const Vec3f &S2, const Vec3f &S3, const Vec3f &T1, const Vec3f &T2, const Vec3f &T3, Vec3f &P, Vec3f &Q)
 
static FCL_REAL sqrTriDistance (const Vec3f S[3], const Vec3f T[3], const Matrix3f &R, const Vec3f &Tl, Vec3f &P, Vec3f &Q)
 Compute squared distance between triangles. More...
 
static FCL_REAL sqrTriDistance (const Vec3f S[3], const Vec3f T[3], const Transform3f &tf, Vec3f &P, Vec3f &Q)
 Compute squared distance between triangles. More...
 
static FCL_REAL sqrTriDistance (const Vec3f &S1, const Vec3f &S2, const Vec3f &S3, const Vec3f &T1, const Vec3f &T2, const Vec3f &T3, const Matrix3f &R, const Vec3f &Tl, Vec3f &P, Vec3f &Q)
 Compute squared distance between triangles. More...
 
static FCL_REAL sqrTriDistance (const Vec3f &S1, const Vec3f &S2, const Vec3f &S3, const Vec3f &T1, const Vec3f &T2, const Vec3f &T3, const Transform3f &tf, Vec3f &P, Vec3f &Q)
 Compute squared distance between triangles. More...
 

Detailed Description

Triangle distance functions.

Member Function Documentation

static void fcl::TriangleDistance::segPoints ( const Vec3f P,
const Vec3f A,
const Vec3f Q,
const Vec3f B,
Vec3f VEC,
Vec3f X,
Vec3f Y 
)
static

Returns closest points between an segment pair.

The first segment is P + t * A The second segment is Q + t * B X, Y are the closest points on the two segments VEC is the vector between X and Y

static FCL_REAL fcl::TriangleDistance::sqrTriDistance ( const Vec3f  S[3],
const Vec3f  T[3],
Vec3f P,
Vec3f Q 
)
static

Compute squared distance between triangles.

Parameters
Sand T are two triangles
Return values
P,Qclosest points if triangles do not intersect.
Returns
squared distance if triangles do not intersect, 0 otherwise. If the triangles are disjoint, P and Q give the closet points of S and T respectively. However, if the triangles overlap, P and Q are basically a random pair of points from the triangles, not coincident points on the intersection of the triangles, as might be expected.

Referenced by fcl::MeshDistanceTraversalNode< OBBRSS >::leafTesting(), and fcl::MeshConservativeAdvancementTraversalNode< OBBRSS >::leafTesting().

static FCL_REAL fcl::TriangleDistance::sqrTriDistance ( const Vec3f S1,
const Vec3f S2,
const Vec3f S3,
const Vec3f T1,
const Vec3f T2,
const Vec3f T3,
Vec3f P,
Vec3f Q 
)
static
static FCL_REAL fcl::TriangleDistance::sqrTriDistance ( const Vec3f  S[3],
const Vec3f  T[3],
const Matrix3f R,
const Vec3f Tl,
Vec3f P,
Vec3f Q 
)
static

Compute squared distance between triangles.

Parameters
Sand T are two triangles
R,Tl,rotationand translation applied to T,
Return values
P,Qclosest points if triangles do not intersect.
Returns
squared distance if triangles do not intersect, 0 otherwise. If the triangles are disjoint, P and Q give the closet points of S and T respectively. However, if the triangles overlap, P and Q are basically a random pair of points from the triangles, not coincident points on the intersection of the triangles, as might be expected.
static FCL_REAL fcl::TriangleDistance::sqrTriDistance ( const Vec3f  S[3],
const Vec3f  T[3],
const Transform3f tf,
Vec3f P,
Vec3f Q 
)
static

Compute squared distance between triangles.

Parameters
Sand T are two triangles
tf,rotationand translation applied to T,
Return values
P,Qclosest points if triangles do not intersect.
Returns
squared distance if triangles do not intersect, 0 otherwise. If the triangles are disjoint, P and Q give the closet points of S and T respectively. However, if the triangles overlap, P and Q are basically a random pair of points from the triangles, not coincident points on the intersection of the triangles, as might be expected.
static FCL_REAL fcl::TriangleDistance::sqrTriDistance ( const Vec3f S1,
const Vec3f S2,
const Vec3f S3,
const Vec3f T1,
const Vec3f T2,
const Vec3f T3,
const Matrix3f R,
const Vec3f Tl,
Vec3f P,
Vec3f Q 
)
static

Compute squared distance between triangles.

Parameters
S1,S2,S3and T1, T2, T3 are triangle vertices
R,Tl,rotationand translation applied to T1, T2, T3,
Return values
P,Qclosest points if triangles do not intersect.
Returns
squared distance if triangles do not intersect, 0 otherwise. If the triangles are disjoint, P and Q give the closet points of S and T respectively. However, if the triangles overlap, P and Q are basically a random pair of points from the triangles, not coincident points on the intersection of the triangles, as might be expected.
static FCL_REAL fcl::TriangleDistance::sqrTriDistance ( const Vec3f S1,
const Vec3f S2,
const Vec3f S3,
const Vec3f T1,
const Vec3f T2,
const Vec3f T3,
const Transform3f tf,
Vec3f P,
Vec3f Q 
)
static

Compute squared distance between triangles.

Parameters
S1,S2,S3and T1, T2, T3 are triangle vertices
tf,rotationand translation applied to T1, T2, T3,
Return values
P,Qclosest points if triangles do not intersect.
Returns
squared distance if triangles do not intersect, 0 otherwise. If the triangles are disjoint, P and Q give the closet points of S and T respectively. However, if the triangles overlap, P and Q are basically a random pair of points from the triangles, not coincident points on the intersection of the triangles, as might be expected.