Kaynağa Gözat

math: add Box2D and Box3D classes.

legacy
Sam Hocevar sam 12 yıl önce
ebeveyn
işleme
eeca0c0339
1 değiştirilmiş dosya ile 37 ekleme ve 16 silme
  1. +37
    -16
      src/lol/math/geometry.h

+ 37
- 16
src/lol/math/geometry.h Dosyayı Görüntüle

@@ -27,27 +27,48 @@


namespace lol namespace lol
{ {
bool TriangleIsectTriangle(vec3 const &v00, vec3 const &v01, vec3 const &v02, struct Box2D
vec3 const &v10, vec3 const &v11, vec3 const &v12, {
vec3 &iP00, vec3 &iP10); inline Box2D(vec2 a, vec2 b)
bool RayIsectTriangleSide(vec3 const &v0, vec3 const &v1, vec3 const &v2, : A(a),
vec3 const &iP0, vec3 const &iP1, B(b)
vec3 &iV0, int &iIdx0, vec3 &iV1, int &iIdx1); {}
bool RayIsectTriangle(vec3 const &rayP, vec3 const &rayD, vec2 A, B;
vec3 const &triV0, vec3 const &triV1, vec3 const &triV2, };
vec3 &vi); 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, int RayIsectRay(vec3 const &rayP00, vec3 const &rayP01,
vec3 const &rayP10, vec3 const &rayP11, vec3 const &rayP10, vec3 const &rayP11,
vec3 &vIsec); vec3 &vIsec);
vec3 ProjPointOnPlane(vec3 const &point, vec3 const &planeP, vec3 const &planeN); vec3 ProjPointOnPlane(vec3 const &point, vec3 const &planeP, vec3 const &planeN);
bool RayIsectPlane(vec3 const &rayP0, vec3 const &rayP1, bool RayIsectPlane(vec3 const &rayP0, vec3 const &rayP1,
vec3 const &planeP, vec3 const &planeN, vec3 const &planeP, vec3 const &planeN,
vec3 &vIsec, bool test_line_only = false); vec3 &vIsec, bool test_line_only = false);


} /* namespace lol */ } /* namespace lol */




||||||
x
 
000:0
Yükleniyor…
İptal
Kaydet