Classes | |
struct | Vec3Data |
struct | Matrix3Data |
struct | MinkowskiDiff |
Minkowski difference class of two shapes. More... | |
struct | GJK |
class for GJK algorithm More... | |
struct | EPA |
class for EPA algorithm More... | |
class | GJKInitializer |
initialize GJK stuffs More... | |
class | GJKInitializer< Cylinder > |
initialize GJK Cylinder More... | |
class | GJKInitializer< Sphere > |
initialize GJK Sphere More... | |
class | GJKInitializer< Box > |
initialize GJK Box More... | |
class | GJKInitializer< Capsule > |
initialize GJK Capsule More... | |
class | GJKInitializer< Cone > |
initialize GJK Cone More... | |
class | GJKInitializer< Convex > |
initialize GJK Convex More... | |
struct | sse_meta_f4 |
struct | sse_meta_d4 |
struct | sse_meta_f12 |
struct | sse_meta_f16 |
Typedefs | |
typedef void(*) | GJKSupportFunction (const void *obj, const ccd_vec3_t *dir_, ccd_vec3_t *v) |
callback function used by GJK algorithm | |
typedef void(*) | GJKCenterFunction (const void *obj, ccd_vec3_t *c) |
Functions | |
template<typename T> | |
static Vec3Data< T > | cross_prod (const Vec3Data< T > &l, const Vec3Data< T > &r) |
template<typename T> | |
static T | dot_prod3 (const Vec3Data< T > &l, const Vec3Data< T > &r) |
template<typename T> | |
static Vec3Data< T > | min (const Vec3Data< T > &x, const Vec3Data< T > &y) |
template<typename T> | |
static Vec3Data< T > | max (const Vec3Data< T > &x, const Vec3Data< T > &y) |
template<typename T> | |
static Vec3Data< T > | abs (const Vec3Data< T > &x) |
template<typename T> | |
static bool | equal (const Vec3Data< T > &x, const Vec3Data< T > &y, T epsilon) |
template<typename T> | |
Matrix3Data< T > | abs (const Matrix3Data< T > &m) |
template<typename T> | |
Matrix3Data< T > | transpose (const Matrix3Data< T > &m) |
template<typename T> | |
Matrix3Data< T > | inverse (const Matrix3Data< T > &m) |
Vec3f | getSupport (const ShapeBase *shape, const Vec3f &dir) |
the support function for shape | |
FCL_REAL | projectOrigin (const Vec3f &a, const Vec3f &b, FCL_REAL *w, size_t &m) |
project origin on to a line (a, b). w[0:1] return the (0, 1) parameterization of the projected point. m is a encode about the result case: 0x10--> project is larger than b; 0x01--> project is smaller than a; 0x11-> within the line; return value is distance between the origin and its projection. | |
FCL_REAL | projectOrigin (const Vec3f &a, const Vec3f &b, const Vec3f &c, FCL_REAL *w, size_t &m) |
project origin on to a triangle (a, b, c). w[0:2] return the (0, 1) parameterization of the projected point. m is a encode about the result case. return value is distance between the origin and its projection. | |
FCL_REAL | projectOrigin (const Vec3f &a, const Vec3f &b, const Vec3f &c, const Vec3f &d, FCL_REAL *w, size_t &m) |
project origin on to a tetrahedra (a, b, c, d). w[0:3] return the (0, 1) parameterization of the projected point. m is a encode about the result case. return value is distance between the origin and its projection. | |
GJKSupportFunction | triGetSupportFunction () |
initialize GJK Triangle | |
GJKCenterFunction | triGetCenterFunction () |
void * | triCreateGJKObject (const Vec3f &P1, const Vec3f &P2, const Vec3f &P3) |
void * | triCreateGJKObject (const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf) |
void | triDeleteGJKObject (void *o) |
bool | GJKCollide (void *obj1, ccd_support_fn supp1, ccd_center_fn cen1, void *obj2, ccd_support_fn supp2, ccd_center_fn cen2, unsigned int max_iterations, FCL_REAL tolerance, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) |
GJK collision algorithm. | |
bool | GJKDistance (void *obj1, ccd_support_fn supp1, void *obj2, ccd_support_fn supp2, unsigned int max_iterations, FCL_REAL tolerance, FCL_REAL *dist) |
static __m128 | vec_sel (__m128 a, __m128 b, __m128 mask) |
static __m128 | vec_sel (__m128 a, __m128 b, const unsigned int *mask) |
static __m128 | vec_sel (__m128 a, __m128 b, unsigned int mask) |
static __m128 | vec_splat (__m128 a, int e) |
static __m128d | vec_splat (__m128d a, int e) |
static __m128 | _mm_ror_ps (__m128 x, int e) |
static __m128 | _mm_rol_ps (__m128 x, int e) |
static __m128 | newtonraphson_rsqrt4 (const __m128 v) |
static __m128 | cross_prod (__m128 x, __m128 y) |
static sse_meta_f4 | cross_prod (const sse_meta_f4 &x, const sse_meta_f4 &y) |
static void | cross_prod (__m128d x0, __m128d x1, __m128d y0, __m128d y1, __m128d *z0, __m128d *z1) |
static sse_meta_d4 | cross_prod (const sse_meta_d4 &x, const sse_meta_d4 &y) |
static __m128 | dot_prod3 (__m128 x, __m128 y) |
static float | dot_prod3 (const sse_meta_f4 &x, const sse_meta_f4 &y) |
static __m128d | dot_prod3 (__m128d x0, __m128d x1, __m128d y0, __m128d y1) |
static double | dot_prod3 (const sse_meta_d4 &x, const sse_meta_d4 &y) |
static __m128 | dot_prod4 (__m128 x, __m128 y) |
static float | dot_prod4 (const sse_meta_f4 &x, const sse_meta_f4 &y) |
static __m128d | dot_prod4 (__m128d x0, __m128d x1, __m128d y0, __m128d y1) |
static double | dot_prod4 (const sse_meta_d4 &x, const sse_meta_d4 &y) |
static sse_meta_f4 | min (const sse_meta_f4 &x, const sse_meta_f4 &y) |
static sse_meta_d4 | min (const sse_meta_d4 &x, const sse_meta_d4 &y) |
static sse_meta_f4 | max (const sse_meta_f4 &x, const sse_meta_f4 &y) |
static sse_meta_d4 | max (const sse_meta_d4 &x, const sse_meta_d4 &y) |
static sse_meta_f4 | abs (const sse_meta_f4 &x) |
static sse_meta_d4 | abs (const sse_meta_d4 &x) |
static bool | equal (const sse_meta_f4 &x, const sse_meta_f4 &y, float epsilon) |
static bool | equal (const sse_meta_d4 &x, const sse_meta_d4 &y, double epsilon) |
static sse_meta_f4 | normalize3 (const sse_meta_f4 &x) |
static sse_meta_f4 | normalize3_approx (const sse_meta_f4 &x) |
static void | transpose (__m128 c0, __m128 c1, __m128 c2, __m128 *r0, __m128 *r1, __m128 *r2) |
static void | inverse (__m128 c0, __m128 c1, __m128 c2, __m128 *i0, __m128 *i1, __m128 *i2) |
static sse_meta_f12 | abs (const sse_meta_f12 &mat) |
static sse_meta_f12 | transpose (const sse_meta_f12 &mat) |
static sse_meta_f12 | inverse (const sse_meta_f12 &mat) |
static void | transpose (__m128 c0, __m128 c1, __m128 c2, __m128 c3, __m128 *r0, __m128 *r1, __m128 *r2, __m128 *r3) |
static void | inverse (__m128 c0, __m128 c1, __m128 c2, __m128 c3, __m128 *res0, __m128 *res1, __m128 *res2, __m128 *res3) |
static sse_meta_f16 | abs (const sse_meta_f16 &mat) |
static sse_meta_f16 | transpose (const sse_meta_f16 &mat) |
static sse_meta_f16 | inverse (const sse_meta_f16 &mat) |
template<typename S, typename BV, typename NarrowPhaseSolver, template< typename, typename > class OrientedNode> | |
static bool | setupShapeMeshDistanceOrientedNode (OrientedNode< S, NarrowPhaseSolver > &node, const S &model1, const Transform3f &tf1, const BVHModel< BV > &model2, const Transform3f &tf2, const NarrowPhaseSolver *nsolver, const DistanceRequest &request, DistanceResult &result) |
static void | tripleCross (const ccd_vec3_t *a, const ccd_vec3_t *b, const ccd_vec3_t *c, ccd_vec3_t *d) |
static int | doSimplex2Dist (ccd_simplex_t *simplex, ccd_vec3_t *dir, ccd_real_t *dist) |
static int | doSimplex3Dist (ccd_simplex_t *simplex, ccd_vec3_t *dir, ccd_real_t *dist) |
static int | doSimplex4Dist (ccd_simplex_t *simplex, ccd_vec3_t *dir, ccd_real_t *dist) |
static int | doSimplexDist (ccd_simplex_t *simplex, ccd_vec3_t *dir, ccd_real_t *dist) |
static ccd_real_t | __ccdGJKDist (const void *obj1, const void *obj2, const ccd_t *ccd, ccd_simplex_t *simplex, ccd_real_t tolerance) |
static void | shapeToGJK (const ShapeBase &s, const Transform3f &tf, ccd_obj_t *o) |
static void | boxToGJK (const Box &s, const Transform3f &tf, ccd_box_t *box) |
static void | capToGJK (const Capsule &s, const Transform3f &tf, ccd_cap_t *cap) |
static void | cylToGJK (const Cylinder &s, const Transform3f &tf, ccd_cyl_t *cyl) |
static void | coneToGJK (const Cone &s, const Transform3f &tf, ccd_cone_t *cone) |
static void | sphereToGJK (const Sphere &s, const Transform3f &tf, ccd_sphere_t *sph) |
static void | convexToGJK (const Convex &s, const Transform3f &tf, ccd_convex_t *conv) |
static void | supportBox (const void *obj, const ccd_vec3_t *dir_, ccd_vec3_t *v) |
static void | supportCap (const void *obj, const ccd_vec3_t *dir_, ccd_vec3_t *v) |
static void | supportCyl (const void *obj, const ccd_vec3_t *dir_, ccd_vec3_t *v) |
static void | supportCone (const void *obj, const ccd_vec3_t *dir_, ccd_vec3_t *v) |
static void | supportSphere (const void *obj, const ccd_vec3_t *dir_, ccd_vec3_t *v) |
static void | supportConvex (const void *obj, const ccd_vec3_t *dir_, ccd_vec3_t *v) |
static void | supportTriangle (const void *obj, const ccd_vec3_t *dir_, ccd_vec3_t *v) |
static void | centerShape (const void *obj, ccd_vec3_t *c) |
static void | centerConvex (const void *obj, ccd_vec3_t *c) |
static void | centerTriangle (const void *obj, ccd_vec3_t *c) |
bool | sphereSphereIntersect (const Sphere &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) |
bool | sphereSphereDistance (const Sphere &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL *dist) |
FCL_REAL | segmentSqrDistance (const Vec3f &from, const Vec3f &to, const Vec3f &p, Vec3f &nearest) |
the minimum distance from a point to a line | |
bool | projectInTriangle (const Vec3f &p1, const Vec3f &p2, const Vec3f &p3, const Vec3f &normal, const Vec3f &p) |
Whether a point's projection is in a triangle. | |
bool | sphereTriangleIntersect (const Sphere &s, const Transform3f &tf, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal_) |
bool | sphereTriangleDistance (const Sphere &sp, const Transform3f &tf, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, FCL_REAL *dist) |
static void | lineClosestApproach (const Vec3f &pa, const Vec3f &ua, const Vec3f &pb, const Vec3f &ub, FCL_REAL *alpha, FCL_REAL *beta) |
static int | intersectRectQuad2 (FCL_REAL h[2], FCL_REAL p[8], FCL_REAL ret[16]) |
static void | cullPoints2 (int n, FCL_REAL p[], int m, int i0, int iret[]) |
int | boxBox2 (const Vec3f &side1, const Matrix3f &R1, const Vec3f &T1, const Vec3f &side2, const Matrix3f &R2, const Vec3f &T2, Vec3f &normal, FCL_REAL *depth, int *return_code, int maxc, std::vector< ContactPoint > &contacts) |
bool | boxBoxIntersect (const Box &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth_, Vec3f *normal_) |
std::vector< Vec3f > | getBoundVertices (const Box &box, const Transform3f &tf) |
std::vector< Vec3f > | getBoundVertices (const Sphere &sphere, const Transform3f &tf) |
std::vector< Vec3f > | getBoundVertices (const Capsule &capsule, const Transform3f &tf) |
std::vector< Vec3f > | getBoundVertices (const Cone &cone, const Transform3f &tf) |
std::vector< Vec3f > | getBoundVertices (const Cylinder &cylinder, const Transform3f &tf) |
std::vector< Vec3f > | getBoundVertices (const Convex &convex, const Transform3f &tf) |
std::vector< Vec3f > | getBoundVertices (const Triangle2 &triangle, const Transform3f &tf) |
template<typename BV> | |
static void | meshCollisionOrientedNodeLeafTesting (int b1, int b2, const BVHModel< BV > *model1, const BVHModel< BV > *model2, Vec3f *vertices1, Vec3f *vertices2, Triangle *tri_indices1, Triangle *tri_indices2, const Matrix3f &R, const Vec3f &T, const Transform3f &tf1, const Transform3f &tf2, bool enable_statistics, FCL_REAL cost_density, int &num_leaf_tests, const CollisionRequest &request, CollisionResult &result) |
template<typename BV> | |
static void | meshDistanceOrientedNodeLeafTesting (int b1, int b2, const BVHModel< BV > *model1, const BVHModel< BV > *model2, Vec3f *vertices1, Vec3f *vertices2, Triangle *tri_indices1, Triangle *tri_indices2, const Matrix3f &R, const Vec3f &T, bool enable_statistics, int &num_leaf_tests, const DistanceRequest &request, DistanceResult &result) |
template<typename BV> | |
static void | distancePreprocessOrientedNode (const BVHModel< BV > *model1, const BVHModel< BV > *model2, const Vec3f *vertices1, Vec3f *vertices2, Triangle *tri_indices1, Triangle *tri_indices2, int init_tri_id1, int init_tri_id2, const Matrix3f &R, const Vec3f &T, const DistanceRequest &request, DistanceResult &result) |
template<typename BV> | |
static void | distancePostprocessOrientedNode (const BVHModel< BV > *model1, const BVHModel< BV > *model2, const Transform3f &tf1, const DistanceRequest &request, DistanceResult &result) |
template<typename BV, typename OrientedNode> | |
static bool | setupMeshCollisionOrientedNode (OrientedNode &node, const BVHModel< BV > &model1, const Transform3f &tf1, const BVHModel< BV > &model2, const Transform3f &tf2, const CollisionRequest &request, CollisionResult &result) |
template<typename BV, typename OrientedNode> | |
static bool | setupMeshDistanceOrientedNode (OrientedNode &node, const BVHModel< BV > &model1, const Transform3f &tf1, const BVHModel< BV > &model2, const Transform3f &tf2, const DistanceRequest &request, DistanceResult &result) |
Variables | |
static const size_t | EPA_MAX_FACES = 128 |
static const size_t | EPA_MAX_VERTICES = 64 |
static const FCL_REAL | EPA_EPS = 0.000001 |
static const size_t | EPA_MAX_ITERATIONS = 255 |
const __m128 | xmms_0 = {0.f, 0.f, 0.f, 0.f} |
const __m128d | xmmd_0 = {0, 0} |
fcl::details::sse_meta_f4 | aligned |
fcl::details::sse_meta_d4 | aligned |
static void fcl::details::shapeToGJK | ( | const ShapeBase & | s, | |
const Transform3f & | tf, | |||
ccd_obj_t * | o | |||
) | [static] |
Basic shape to ccd shape
Definition at line 441 of file gjk_libccd.cpp.
static void fcl::details::supportBox | ( | const void * | obj, | |
const ccd_vec3_t * | dir_, | |||
ccd_vec3_t * | v | |||
) | [static] |
Support functions
Definition at line 492 of file gjk_libccd.cpp.
static void fcl::details::distancePostprocessOrientedNode | ( | const BVHModel< BV > * | model1, | |
const BVHModel< BV > * | model2, | |||
const Transform3f & | tf1, | |||
const DistanceRequest & | request, | |||
DistanceResult & | result | |||
) | [inline, static] |
Definition at line 333 of file traversal_node_bvhs.cpp.