CCD intersect kernel among primitives. More...
#include <hpp/fcl/intersect.h>
Static Public Member Functions | |
static bool | intersect_VF (const Vec3f &a0, const Vec3f &b0, const Vec3f &c0, const Vec3f &p0, const Vec3f &a1, const Vec3f &b1, const Vec3f &c1, const Vec3f &p1, FCL_REAL *collision_time, Vec3f *p_i, bool useNewton=true) |
CCD intersect between one vertex and one face [a0, b0, c0] and [a1, b1, c1] are points for the triangle face in time t0 and t1 p0 and p1 are points for vertex in time t0 and t1 p_i returns the coordinate of the collision point. | |
static bool | intersect_EE (const Vec3f &a0, const Vec3f &b0, const Vec3f &c0, const Vec3f &d0, const Vec3f &a1, const Vec3f &b1, const Vec3f &c1, const Vec3f &d1, FCL_REAL *collision_time, Vec3f *p_i, bool useNewton=true) |
CCD intersect between two edges [a0, b0] and [a1, b1] are points for one edge in time t0 and t1 [c0, d0] and [c1, d1] are points for the other edge in time t0 and t1 p_i returns the coordinate of the collision point. | |
static bool | intersect_VF_filtered (const Vec3f &a0, const Vec3f &b0, const Vec3f &c0, const Vec3f &p0, const Vec3f &a1, const Vec3f &b1, const Vec3f &c1, const Vec3f &p1, FCL_REAL *collision_time, Vec3f *p_i, bool useNewton=true) |
CCD intersect between one vertex and one face, using additional filter. | |
static bool | intersect_EE_filtered (const Vec3f &a0, const Vec3f &b0, const Vec3f &c0, const Vec3f &d0, const Vec3f &a1, const Vec3f &b1, const Vec3f &c1, const Vec3f &d1, FCL_REAL *collision_time, Vec3f *p_i, bool useNewton=true) |
CCD intersect between two edges, using additional filter. | |
static bool | intersect_VE (const Vec3f &a0, const Vec3f &b0, const Vec3f &p0, const Vec3f &a1, const Vec3f &b1, const Vec3f &p1, const Vec3f &L) |
CCD intersect between one vertex and and one edge. | |
static bool | intersect_Triangle (const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Vec3f &Q1, const Vec3f &Q2, const Vec3f &Q3, Vec3f *contact_points=NULL, unsigned int *num_contact_points=NULL, FCL_REAL *penetration_depth=NULL, Vec3f *normal=NULL) |
CD intersect between two triangles [P1, P2, P3] and [Q1, Q2, Q3]. | |
static bool | intersect_Triangle (const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Vec3f &Q1, const Vec3f &Q2, const Vec3f &Q3, const Matrix3f &R, const Vec3f &T, Vec3f *contact_points=NULL, unsigned int *num_contact_points=NULL, FCL_REAL *penetration_depth=NULL, Vec3f *normal=NULL) |
static bool | intersect_Triangle (const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Vec3f &Q1, const Vec3f &Q2, const Vec3f &Q3, const Transform3f &tf, Vec3f *contact_points=NULL, unsigned int *num_contact_points=NULL, FCL_REAL *penetration_depth=NULL, Vec3f *normal=NULL) |
static void | clipTriangleByTriangleAndEdgePlanes (const Vec3f &v1, const Vec3f &v2, const Vec3f &v3, const Vec3f &t1, const Vec3f &t2, const Vec3f &t3, const Vec3f &tn, FCL_REAL to, Vec3f clipped_points[], unsigned int *num_clipped_points, bool clip_triangle=false) |
clip triangle v1, v2, v3 by the prism made by t1, t2 and t3. The normal of the prism is tn and is cutted up by to | |
static bool | buildTrianglePlane (const Vec3f &v1, const Vec3f &v2, const Vec3f &v3, Vec3f *n, FCL_REAL *t) |
build a plane passed through triangle v1 v2 v3 |
CCD intersect kernel among primitives.
static bool fcl::Intersect::buildTrianglePlane | ( | const Vec3f & | v1, |
const Vec3f & | v2, | ||
const Vec3f & | v3, | ||
Vec3f * | n, | ||
FCL_REAL * | t | ||
) | [static] |
build a plane passed through triangle v1 v2 v3
static void fcl::Intersect::clipTriangleByTriangleAndEdgePlanes | ( | const Vec3f & | v1, |
const Vec3f & | v2, | ||
const Vec3f & | v3, | ||
const Vec3f & | t1, | ||
const Vec3f & | t2, | ||
const Vec3f & | t3, | ||
const Vec3f & | tn, | ||
FCL_REAL | to, | ||
Vec3f | clipped_points[], | ||
unsigned int * | num_clipped_points, | ||
bool | clip_triangle = false |
||
) | [static] |
clip triangle v1, v2, v3 by the prism made by t1, t2 and t3. The normal of the prism is tn and is cutted up by to
static bool fcl::Intersect::intersect_EE | ( | const Vec3f & | a0, |
const Vec3f & | b0, | ||
const Vec3f & | c0, | ||
const Vec3f & | d0, | ||
const Vec3f & | a1, | ||
const Vec3f & | b1, | ||
const Vec3f & | c1, | ||
const Vec3f & | d1, | ||
FCL_REAL * | collision_time, | ||
Vec3f * | p_i, | ||
bool | useNewton = true |
||
) | [static] |
CCD intersect between two edges [a0, b0] and [a1, b1] are points for one edge in time t0 and t1 [c0, d0] and [c1, d1] are points for the other edge in time t0 and t1 p_i returns the coordinate of the collision point.
static bool fcl::Intersect::intersect_EE_filtered | ( | const Vec3f & | a0, |
const Vec3f & | b0, | ||
const Vec3f & | c0, | ||
const Vec3f & | d0, | ||
const Vec3f & | a1, | ||
const Vec3f & | b1, | ||
const Vec3f & | c1, | ||
const Vec3f & | d1, | ||
FCL_REAL * | collision_time, | ||
Vec3f * | p_i, | ||
bool | useNewton = true |
||
) | [static] |
CCD intersect between two edges, using additional filter.
static bool fcl::Intersect::intersect_Triangle | ( | const Vec3f & | P1, |
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
const Vec3f & | Q1, | ||
const Vec3f & | Q2, | ||
const Vec3f & | Q3, | ||
Vec3f * | contact_points = NULL , |
||
unsigned int * | num_contact_points = NULL , |
||
FCL_REAL * | penetration_depth = NULL , |
||
Vec3f * | normal = NULL |
||
) | [static] |
CD intersect between two triangles [P1, P2, P3] and [Q1, Q2, Q3].
Referenced by fcl::MeshCollisionTraversalNode< OBBRSS >::leafTesting().
static bool fcl::Intersect::intersect_Triangle | ( | const Vec3f & | P1, |
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
const Vec3f & | Q1, | ||
const Vec3f & | Q2, | ||
const Vec3f & | Q3, | ||
const Matrix3f & | R, | ||
const Vec3f & | T, | ||
Vec3f * | contact_points = NULL , |
||
unsigned int * | num_contact_points = NULL , |
||
FCL_REAL * | penetration_depth = NULL , |
||
Vec3f * | normal = NULL |
||
) | [static] |
static bool fcl::Intersect::intersect_Triangle | ( | const Vec3f & | P1, |
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
const Vec3f & | Q1, | ||
const Vec3f & | Q2, | ||
const Vec3f & | Q3, | ||
const Transform3f & | tf, | ||
Vec3f * | contact_points = NULL , |
||
unsigned int * | num_contact_points = NULL , |
||
FCL_REAL * | penetration_depth = NULL , |
||
Vec3f * | normal = NULL |
||
) | [static] |
static bool fcl::Intersect::intersect_VE | ( | const Vec3f & | a0, |
const Vec3f & | b0, | ||
const Vec3f & | p0, | ||
const Vec3f & | a1, | ||
const Vec3f & | b1, | ||
const Vec3f & | p1, | ||
const Vec3f & | L | ||
) | [static] |
CCD intersect between one vertex and and one edge.
static bool fcl::Intersect::intersect_VF | ( | const Vec3f & | a0, |
const Vec3f & | b0, | ||
const Vec3f & | c0, | ||
const Vec3f & | p0, | ||
const Vec3f & | a1, | ||
const Vec3f & | b1, | ||
const Vec3f & | c1, | ||
const Vec3f & | p1, | ||
FCL_REAL * | collision_time, | ||
Vec3f * | p_i, | ||
bool | useNewton = true |
||
) | [static] |
CCD intersect between one vertex and one face [a0, b0, c0] and [a1, b1, c1] are points for the triangle face in time t0 and t1 p0 and p1 are points for vertex in time t0 and t1 p_i returns the coordinate of the collision point.
static bool fcl::Intersect::intersect_VF_filtered | ( | const Vec3f & | a0, |
const Vec3f & | b0, | ||
const Vec3f & | c0, | ||
const Vec3f & | p0, | ||
const Vec3f & | a1, | ||
const Vec3f & | b1, | ||
const Vec3f & | c1, | ||
const Vec3f & | p1, | ||
FCL_REAL * | collision_time, | ||
Vec3f * | p_i, | ||
bool | useNewton = true |
||
) | [static] |
CCD intersect between one vertex and one face, using additional filter.