|
@@ -27,27 +27,48 @@ |
|
|
|
|
|
|
|
|
namespace lol |
|
|
namespace lol |
|
|
{ |
|
|
{ |
|
|
bool TriangleIsectTriangle(vec3 const &v00, vec3 const &v01, vec3 const &v02, |
|
|
|
|
|
vec3 const &v10, vec3 const &v11, vec3 const &v12, |
|
|
|
|
|
vec3 &iP00, vec3 &iP10); |
|
|
|
|
|
bool RayIsectTriangleSide(vec3 const &v0, vec3 const &v1, vec3 const &v2, |
|
|
|
|
|
vec3 const &iP0, vec3 const &iP1, |
|
|
|
|
|
vec3 &iV0, int &iIdx0, vec3 &iV1, int &iIdx1); |
|
|
|
|
|
bool RayIsectTriangle(vec3 const &rayP, vec3 const &rayD, |
|
|
|
|
|
vec3 const &triV0, vec3 const &triV1, vec3 const &triV2, |
|
|
|
|
|
vec3 &vi); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct Box2D |
|
|
|
|
|
{ |
|
|
|
|
|
inline Box2D(vec2 a, vec2 b) |
|
|
|
|
|
: A(a), |
|
|
|
|
|
B(b) |
|
|
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
vec2 A, B; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
struct Box3D |
|
|
|
|
|
{ |
|
|
|
|
|
inline Box3D(vec3 a, vec3 b) |
|
|
|
|
|
: A(a), |
|
|
|
|
|
B(b) |
|
|
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
vec3 A, B; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
bool TriangleIsectTriangle(vec3 const &v00, vec3 const &v01, vec3 const &v02, |
|
|
|
|
|
vec3 const &v10, vec3 const &v11, vec3 const &v12, |
|
|
|
|
|
vec3 &iP00, vec3 &iP10); |
|
|
|
|
|
bool RayIsectTriangleSide(vec3 const &v0, vec3 const &v1, vec3 const &v2, |
|
|
|
|
|
vec3 const &iP0, vec3 const &iP1, |
|
|
|
|
|
vec3 &iV0, int &iIdx0, vec3 &iV1, int &iIdx1); |
|
|
|
|
|
bool RayIsectTriangle(vec3 const &rayP, vec3 const &rayD, |
|
|
|
|
|
vec3 const &triV0, vec3 const &triV1, vec3 const &triV2, |
|
|
|
|
|
vec3 &vi); |
|
|
#define RAY_ISECT_NOTHING 0 |
|
|
#define RAY_ISECT_NOTHING 0 |
|
|
#define RAY_ISECT_ALL 1 |
|
|
#define RAY_ISECT_ALL 1 |
|
|
#define RAY_ISECT_NONE 2 |
|
|
#define RAY_ISECT_NONE 2 |
|
|
#define RAY_ISECT_P0 3 |
|
|
#define RAY_ISECT_P0 3 |
|
|
#define RAY_ISECT_P1 4 |
|
|
#define RAY_ISECT_P1 4 |
|
|
int RayIsectRay(vec3 const &rayP00, vec3 const &rayP01, |
|
|
|
|
|
vec3 const &rayP10, vec3 const &rayP11, |
|
|
|
|
|
vec3 &vIsec); |
|
|
|
|
|
vec3 ProjPointOnPlane(vec3 const &point, vec3 const &planeP, vec3 const &planeN); |
|
|
|
|
|
bool RayIsectPlane(vec3 const &rayP0, vec3 const &rayP1, |
|
|
|
|
|
vec3 const &planeP, vec3 const &planeN, |
|
|
|
|
|
vec3 &vIsec, bool test_line_only = false); |
|
|
|
|
|
|
|
|
int RayIsectRay(vec3 const &rayP00, vec3 const &rayP01, |
|
|
|
|
|
vec3 const &rayP10, vec3 const &rayP11, |
|
|
|
|
|
vec3 &vIsec); |
|
|
|
|
|
vec3 ProjPointOnPlane(vec3 const &point, vec3 const &planeP, vec3 const &planeN); |
|
|
|
|
|
bool RayIsectPlane(vec3 const &rayP0, vec3 const &rayP1, |
|
|
|
|
|
vec3 const &planeP, vec3 const &planeN, |
|
|
|
|
|
vec3 &vIsec, bool test_line_only = false); |
|
|
|
|
|
|
|
|
} /* namespace lol */ |
|
|
} /* namespace lol */ |
|
|
|
|
|
|
|
|