DART 6.12.2
Loading...
Searching...
No Matches
tri_tri_intersection_test.hpp File Reference
#include <cmath>

Go to the source code of this file.

Namespaces

namespace  dart
 
namespace  dart::collision
 

Macros

#define DART_CROSS(dest, v1, v2)
 
#define DART_DOT(v1, v2)   (v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2])
 
#define DART_SUB(dest, v1, v2)
 
#define DART_ADD(dest, v1, v2)
 
#define DART_MULT(dest, v, factor)
 
#define DART_DIV(dest, v1, v2)
 
#define DART_SET(dest, src)
 
#define DART_SORT(a, b)
 
#define DART_SWAP(a, b)
 
#define DART_ISECT(VV0, VV1, VV2, D0, D1, D2, isect0, isect1)
 
#define DART_COMPUTE_INTERVALS( VV0, VV1, VV2, D0, D1, D2, D0D1, D0D2, isect0, isect1)
 

Functions

float dart::collision::FABS (float x)
 
void dart::collision::edge_tri_intersect (float V0[3], float V1[3], float DV0, float DV1, float V[3])
 
int dart::collision::tri_tri_intersect (float V0[3], float V1[3], float V2[3], float U0[3], float U1[3], float U2[3], float res1[3], float res2[3])
 

Variables

constexpr bool dart::collision::USE_EPSILON_TEST = true
 
constexpr double dart::collision::EPSILON = 1e-6
 
constexpr int dart::collision::NO_CONTACT = 0
 
constexpr int dart::collision::COPLANAR_CONTACT = -1
 
constexpr int dart::collision::INTERIAL_CONTACT = 1
 

Macro Definition Documentation

◆ DART_ADD

#define DART_ADD (   dest,
  v1,
  v2 
)
Value:
dest[0] = v1[0] + v2[0]; \
dest[1] = v1[1] + v2[1]; \
dest[2] = v1[2] + v2[2];

◆ DART_COMPUTE_INTERVALS

#define DART_COMPUTE_INTERVALS (   VV0,
  VV1,
  VV2,
  D0,
  D1,
  D2,
  D0D1,
  D0D2,
  isect0,
  isect1 
)
Value:
if (D0D1 > 0.0f) \
{ \
/* here we know that D0D2<=0.0 */ \
/* that is D0, D1 are on the same side, D2 on the other or on the plane */ \
DART_ISECT(VV2, VV0, VV1, D2, D0, D1, isect0, isect1); \
} \
else if (D0D2 > 0.0f) \
{ \
/* here we know that d0d1<=0.0 */ \
DART_ISECT(VV1, VV0, VV2, D1, D0, D2, isect0, isect1); \
} \
else if (D1 * D2 > 0.0f || D0 != 0.0f) \
{ \
/* here we know that d0d1<=0.0 or that D0!=0.0 */ \
DART_ISECT(VV0, VV1, VV2, D0, D1, D2, isect0, isect1); \
} \
else if (D1 != 0.0f) \
{ \
DART_ISECT(VV1, VV0, VV2, D1, D0, D2, isect0, isect1); \
} \
else if (D2 != 0.0f) \
{ \
DART_ISECT(VV2, VV0, VV1, D2, D0, D1, isect0, isect1); \
} \
else \
{ \
/* triangles are coplanar */ \
return COPLANAR_CONTACT; \
}
constexpr int COPLANAR_CONTACT
Definition tri_tri_intersection_test.hpp:136

◆ DART_CROSS

#define DART_CROSS (   dest,
  v1,
  v2 
)
Value:
dest[0] = v1[1] * v2[2] - v1[2] * v2[1]; \
dest[1] = v1[2] * v2[0] - v1[0] * v2[2]; \
dest[2] = v1[0] * v2[1] - v1[1] * v2[0];

◆ DART_DIV

#define DART_DIV (   dest,
  v1,
  v2 
)
Value:
dest[0] = v1[0] / v2[0]; \
dest[1] = v1[1] / 2 [1]; \
dest[2] = v1[2] / v2[2];

◆ DART_DOT

#define DART_DOT (   v1,
  v2 
)    (v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2])

◆ DART_ISECT

#define DART_ISECT (   VV0,
  VV1,
  VV2,
  D0,
  D1,
  D2,
  isect0,
  isect1 
)
Value:
isect0 = VV0 + (VV1 - VV0) * D0 / (D0 - D1); \
isect1 = VV0 + (VV2 - VV0) * D0 / (D0 - D2);

◆ DART_MULT

#define DART_MULT (   dest,
  v,
  factor 
)
Value:
dest[0] = factor * v[0]; \
dest[1] = factor * v[1]; \
dest[2] = factor * v[2];

◆ DART_SET

#define DART_SET (   dest,
  src 
)
Value:
dest[0] = src[0]; \
dest[1] = src[1]; \
dest[2] = src[2];

◆ DART_SORT

#define DART_SORT (   a,
 
)
Value:
if (a > b) \
{ \
float c; \
c = a; \
a = b; \
b = c; \
}

◆ DART_SUB

#define DART_SUB (   dest,
  v1,
  v2 
)
Value:
dest[0] = v1[0] - v2[0]; \
dest[1] = v1[1] - v2[1]; \
dest[2] = v1[2] - v2[2];

◆ DART_SWAP

#define DART_SWAP (   a,
 
)
Value:
{ \
float c; \
c = a; \
a = b; \
b = c; \
}