#include "GIMPACT/core/gim_linear_math.h"
Defines | |
#define | PLANEDIREPSILON 0.0000001f |
#define | PARALELENORMALS 0.000001f |
#define | TRIANGLE_NORMAL(v1, v2, v3, n) |
#define | TRIANGLE_NORMAL_FAST(v1, v2, v3, n) |
#define | TRIANGLE_PLANE(v1, v2, v3, plane) |
plane is a vec4f | |
#define | TRIANGLE_PLANE_FAST(v1, v2, v3, plane) |
plane is a vec4f | |
#define | EDGE_PLANE(e1, e2, n, plane) |
Calc a plane from an edge an a normal. plane is a vec4f. | |
#define | DISTANCE_PLANE_POINT(plane, point) (VEC_DOT(plane,point) - plane[3]) |
#define | PROJECT_POINT_PLANE(point, plane, projected) |
#define | PLANE_MINOR_AXES(plane, i0, i1) VEC_MINOR_AXES(plane, i0, i1) |
Finds the 2 smallest cartesian coordinates of a plane normal. | |
Enumerations | |
enum | ePLANE_INTERSECTION_TYPE { G_BACK_PLANE = 0, G_COLLIDE_PLANE, G_FRONT_PLANE } |
enum | eLINE_PLANE_INTERSECTION_TYPE { G_FRONT_PLANE_S1 = 0, G_FRONT_PLANE_S2, G_BACK_PLANE_S1, G_BACK_PLANE_S2, G_COLLIDE_PLANE_S1, G_COLLIDE_PLANE_S2 } |
Functions | |
template<typename CLASS_POINT, typename CLASS_PLANE> | |
SIMD_FORCE_INLINE bool | POINT_IN_HULL (const CLASS_POINT &point, const CLASS_PLANE *planes, GUINT plane_count) |
Verifies if a point is in the plane hull. | |
template<typename CLASS_POINT, typename CLASS_PLANE> | |
SIMD_FORCE_INLINE void | PLANE_CLIP_SEGMENT (const CLASS_POINT &s1, const CLASS_POINT &s2, const CLASS_PLANE &plane, CLASS_POINT &clipped) |
template<typename CLASS_POINT, typename CLASS_PLANE> | |
SIMD_FORCE_INLINE eLINE_PLANE_INTERSECTION_TYPE | PLANE_CLIP_SEGMENT2 (const CLASS_POINT &s1, const CLASS_POINT &s2, const CLASS_PLANE &plane, CLASS_POINT &clipped) |
Confirms if the plane intersect the edge or nor. | |
template<typename CLASS_POINT, typename CLASS_PLANE> | |
SIMD_FORCE_INLINE eLINE_PLANE_INTERSECTION_TYPE | PLANE_CLIP_SEGMENT_CLOSEST (const CLASS_POINT &s1, const CLASS_POINT &s2, const CLASS_PLANE &plane, CLASS_POINT &clipped1, CLASS_POINT &clipped2) |
Confirms if the plane intersect the edge or not. | |
template<typename T, typename CLASS_POINT, typename CLASS_PLANE> | |
SIMD_FORCE_INLINE bool | RAY_PLANE_COLLISION (const CLASS_PLANE &plane, const CLASS_POINT &vDir, const CLASS_POINT &vPoint, CLASS_POINT &pout, T &tparam) |
Ray plane collision in one way. | |
template<typename T, typename CLASS_POINT, typename CLASS_PLANE> | |
SIMD_FORCE_INLINE GUINT | LINE_PLANE_COLLISION (const CLASS_PLANE &plane, const CLASS_POINT &vDir, const CLASS_POINT &vPoint, CLASS_POINT &pout, T &tparam, T tmin, T tmax) |
line collision | |
template<typename CLASS_POINT, typename CLASS_PLANE> | |
SIMD_FORCE_INLINE bool | INTERSECT_PLANES (const CLASS_PLANE &p1, const CLASS_PLANE &p2, CLASS_POINT &p, CLASS_POINT &d) |
Returns the Ray on which 2 planes intersect if they do. Written by Rodrigo Hernandez on ODE convex collision. | |
template<typename CLASS_POINT> | |
SIMD_FORCE_INLINE void | CLOSEST_POINT_ON_SEGMENT (CLASS_POINT &cp, const CLASS_POINT &v, const CLASS_POINT &e1, const CLASS_POINT &e2) |
template<typename T, typename CLASS_POINT> | |
SIMD_FORCE_INLINE bool | LINE_INTERSECTION_PARAMS (const CLASS_POINT &dir1, CLASS_POINT &point1, const CLASS_POINT &dir2, CLASS_POINT &point2, T &t1, T &t2) |
Finds the line params where these lines intersect. | |
template<typename CLASS_POINT> | |
SIMD_FORCE_INLINE void | SEGMENT_COLLISION (const CLASS_POINT &vA1, const CLASS_POINT &vA2, const CLASS_POINT &vB1, const CLASS_POINT &vB2, CLASS_POINT &vPointA, CLASS_POINT &vPointB) |
Find closest points on segments. | |
template<typename T> | |
SIMD_FORCE_INLINE bool | BOX_AXIS_INTERSECT (T pos, T dir, T bmin, T bmax, T &tfirst, T &tlast) |
Line box intersection in one dimension. | |
template<typename T> | |
SIMD_FORCE_INLINE void | SORT_3_INDICES (const T *values, GUINT *order_indices) |
Sorts 3 componets. |