FCL  0.6.0
Flexible Collision Library
fcl::detail::Intersect< S > Class Template Reference

CCD intersect kernel among primitives. More...

#include <intersect.h>

Static Public Member Functions

static bool intersect_VF (const Vector3< S > &a0, const Vector3< S > &b0, const Vector3< S > &c0, const Vector3< S > &p0, const Vector3< S > &a1, const Vector3< S > &b1, const Vector3< S > &c1, const Vector3< S > &p1, S *collision_time, Vector3< S > *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. More...
 
static bool intersect_EE (const Vector3< S > &a0, const Vector3< S > &b0, const Vector3< S > &c0, const Vector3< S > &d0, const Vector3< S > &a1, const Vector3< S > &b1, const Vector3< S > &c1, const Vector3< S > &d1, S *collision_time, Vector3< S > *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. More...
 
static bool intersect_VF_filtered (const Vector3< S > &a0, const Vector3< S > &b0, const Vector3< S > &c0, const Vector3< S > &p0, const Vector3< S > &a1, const Vector3< S > &b1, const Vector3< S > &c1, const Vector3< S > &p1, S *collision_time, Vector3< S > *p_i, bool useNewton=true)
 CCD intersect between one vertex and one face, using additional filter.
 
static bool intersect_EE_filtered (const Vector3< S > &a0, const Vector3< S > &b0, const Vector3< S > &c0, const Vector3< S > &d0, const Vector3< S > &a1, const Vector3< S > &b1, const Vector3< S > &c1, const Vector3< S > &d1, S *collision_time, Vector3< S > *p_i, bool useNewton=true)
 CCD intersect between two edges, using additional filter.
 
static bool intersect_VE (const Vector3< S > &a0, const Vector3< S > &b0, const Vector3< S > &p0, const Vector3< S > &a1, const Vector3< S > &b1, const Vector3< S > &p1, const Vector3< S > &L)
 CCD intersect between one vertex and and one edge.
 
static bool intersect_Triangle (const Vector3< S > &P1, const Vector3< S > &P2, const Vector3< S > &P3, const Vector3< S > &Q1, const Vector3< S > &Q2, const Vector3< S > &Q3, Vector3< S > *contact_points=nullptr, unsigned int *num_contact_points=nullptr, S *penetration_depth=nullptr, Vector3< S > *normal=nullptr)
 CD intersect between two triangles [P1, P2, P3] and [Q1, Q2, Q3].
 
static bool intersect_Triangle_ODE_style (const Vector3< S > &P1, const Vector3< S > &P2, const Vector3< S > &P3, const Vector3< S > &Q1, const Vector3< S > &Q2, const Vector3< S > &Q3, Vector3< S > *contact_points=nullptr, unsigned int *num_contact_points=nullptr, S *penetration_depth=nullptr, Vector3< S > *normal=nullptr)
 CD intersect between two triangles [P1, P2, P3] and [Q1, Q2, Q3]. More...
 
static bool intersect_Triangle (const Vector3< S > &P1, const Vector3< S > &P2, const Vector3< S > &P3, const Vector3< S > &Q1, const Vector3< S > &Q2, const Vector3< S > &Q3, const Matrix3< S > &R, const Vector3< S > &T, Vector3< S > *contact_points=nullptr, unsigned int *num_contact_points=nullptr, S *penetration_depth=nullptr, Vector3< S > *normal=nullptr)
 
static bool intersect_Triangle (const Vector3< S > &P1, const Vector3< S > &P2, const Vector3< S > &P3, const Vector3< S > &Q1, const Vector3< S > &Q2, const Vector3< S > &Q3, const Transform3< S > &tf, Vector3< S > *contact_points=nullptr, unsigned int *num_contact_points=nullptr, S *penetration_depth=nullptr, Vector3< S > *normal=nullptr)
 

Detailed Description

template<typename S>
class fcl::detail::Intersect< S >

CCD intersect kernel among primitives.

Member Function Documentation

template<typename S >
bool fcl::detail::Intersect< S >::intersect_EE ( const Vector3< S > &  a0,
const Vector3< S > &  b0,
const Vector3< S > &  c0,
const Vector3< S > &  d0,
const Vector3< S > &  a1,
const Vector3< S > &  b1,
const Vector3< S > &  c1,
const Vector3< S > &  d1,
S *  collision_time,
Vector3< S > *  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.

if(isZero(a)) { return solveSquare(b, c, d, a0, b0, c0, d0, va, vb, vc, vd, collision_time, false); }

template<typename S >
bool fcl::detail::Intersect< S >::intersect_Triangle_ODE_style ( const Vector3< S > &  P1,
const Vector3< S > &  P2,
const Vector3< S > &  P3,
const Vector3< S > &  Q1,
const Vector3< S > &  Q2,
const Vector3< S > &  Q3,
Vector3< S > *  contact_points = nullptr,
unsigned int *  num_contact_points = nullptr,
S *  penetration_depth = nullptr,
Vector3< S > *  normal = nullptr 
)
static

CD intersect between two triangles [P1, P2, P3] and [Q1, Q2, Q3].

Return contact information

template<typename S >
bool fcl::detail::Intersect< S >::intersect_VF ( const Vector3< S > &  a0,
const Vector3< S > &  b0,
const Vector3< S > &  c0,
const Vector3< S > &  p0,
const Vector3< S > &  a1,
const Vector3< S > &  b1,
const Vector3< S > &  c1,
const Vector3< S > &  p1,
S *  collision_time,
Vector3< S > *  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.

if(isZero(a)) { return solveSquare(b, c, d, a0, b0, c0, p0, va, vb, vc, vp, true, collision_time); }


The documentation for this class was generated from the following files: