Bullet Collision Detection & Physics Library
|
#include "gim_linear_math.h"
Go to the source code of this file.
Macros | |
#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 More... | |
#define | TRIANGLE_PLANE_FAST(v1, v2, v3, plane) |
plane is a vec4f More... | |
#define | EDGE_PLANE(e1, e2, n, plane) |
Calc a plane from an edge an a normal. plane is a vec4f. More... | |
#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. More... | |
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 > | |
bool | POINT_IN_HULL (const CLASS_POINT &point, const CLASS_PLANE *planes, GUINT plane_count) |
Verifies if a point is in the plane hull. More... | |
template<typename CLASS_POINT , typename CLASS_PLANE > | |
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 > | |
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. More... | |
template<typename CLASS_POINT , typename CLASS_PLANE > | |
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. More... | |
template<typename T , typename CLASS_POINT , typename CLASS_PLANE > | |
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. More... | |
template<typename T , typename CLASS_POINT , typename CLASS_PLANE > | |
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 More... | |
template<typename CLASS_POINT , typename CLASS_PLANE > | |
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. More... | |
template<typename CLASS_POINT > | |
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 > | |
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. More... | |
template<typename CLASS_POINT > | |
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. More... | |
template<typename T > | |
bool | BOX_AXIS_INTERSECT (T pos, T dir, T bmin, T bmax, T &tfirst, T &tlast) |
Line box intersection in one dimension. More... | |
template<typename T > | |
void | SORT_3_INDICES (const T *values, GUINT *order_indices) |
Sorts 3 componets. More... | |
Definition in file gim_basic_geometry_operations.h.
#define DISTANCE_PLANE_POINT | ( | plane, | |
point | |||
) | (VEC_DOT(plane,point) - plane[3]) |
Definition at line 86 of file gim_basic_geometry_operations.h.
#define EDGE_PLANE | ( | e1, | |
e2, | |||
n, | |||
plane | |||
) |
Calc a plane from an edge an a normal. plane is a vec4f.
Definition at line 78 of file gim_basic_geometry_operations.h.
#define PARALELENORMALS 0.000001f |
Definition at line 46 of file gim_basic_geometry_operations.h.
#define PLANE_MINOR_AXES | ( | plane, | |
i0, | |||
i1 | |||
) | VEC_MINOR_AXES(plane, i0, i1) |
Finds the 2 smallest cartesian coordinates of a plane normal.
Definition at line 232 of file gim_basic_geometry_operations.h.
#define PLANEDIREPSILON 0.0000001f |
Definition at line 45 of file gim_basic_geometry_operations.h.
#define PROJECT_POINT_PLANE | ( | point, | |
plane, | |||
projected | |||
) |
Definition at line 88 of file gim_basic_geometry_operations.h.
#define TRIANGLE_NORMAL | ( | v1, | |
v2, | |||
v3, | |||
n | |||
) |
Definition at line 49 of file gim_basic_geometry_operations.h.
#define TRIANGLE_NORMAL_FAST | ( | v1, | |
v2, | |||
v3, | |||
n | |||
) |
Definition at line 58 of file gim_basic_geometry_operations.h.
#define TRIANGLE_PLANE | ( | v1, | |
v2, | |||
v3, | |||
plane | |||
) |
plane is a vec4f
Definition at line 66 of file gim_basic_geometry_operations.h.
#define TRIANGLE_PLANE_FAST | ( | v1, | |
v2, | |||
v3, | |||
plane | |||
) |
plane is a vec4f
Definition at line 72 of file gim_basic_geometry_operations.h.
Enumerator | |
---|---|
G_FRONT_PLANE_S1 | |
G_FRONT_PLANE_S2 | |
G_BACK_PLANE_S1 | |
G_BACK_PLANE_S2 | |
G_COLLIDE_PLANE_S1 | |
G_COLLIDE_PLANE_S2 |
Definition at line 129 of file gim_basic_geometry_operations.h.
Enumerator | |
---|---|
G_BACK_PLANE | |
G_COLLIDE_PLANE | |
G_FRONT_PLANE |
Definition at line 122 of file gim_basic_geometry_operations.h.
|
inline |
Line box intersection in one dimension.
pos | Position of the ray |
dir | Projection of the Direction of the ray |
bmin | Minimum bound of the box |
bmax | Maximum bound of the box |
tfirst | the minimum projection. Assign to 0 at first. |
tlast | the maximum projection. Assign to INFINITY at first. |
Definition at line 498 of file gim_basic_geometry_operations.h.
|
inline |
Finds the closest point(cp) to (v) on a segment (e1,e2)
Definition at line 338 of file gim_basic_geometry_operations.h.
|
inline |
Returns the Ray on which 2 planes intersect if they do. Written by Rodrigo Hernandez on ODE convex collision.
p1 | Plane 1 |
p2 | Plane 2 |
p | Contains the origin of the ray upon returning if planes intersect |
d | Contains the direction of the ray upon returning if planes intersect |
Definition at line 313 of file gim_basic_geometry_operations.h.
|
inline |
Finds the line params where these lines intersect.
dir1 | Direction of line 1 |
point1 | Point of line 1 |
dir2 | Direction of line 2 |
point2 | Point of line 2 |
t1 | Result Parameter for line 1 |
t2 | Result Parameter for line 2 |
dointersect | 0 if the lines won't intersect, else 1 |
Definition at line 375 of file gim_basic_geometry_operations.h.
|
inline |
line collision
Definition at line 267 of file gim_basic_geometry_operations.h.
|
inline |
Definition at line 110 of file gim_basic_geometry_operations.h.
|
inline |
Confirms if the plane intersect the edge or nor.
intersection type must have the following values
Definition at line 153 of file gim_basic_geometry_operations.h.
|
inline |
Confirms if the plane intersect the edge or not.
clipped1 and clipped2 are the vertices behind the plane. clipped1 is the closest
intersection_type must have the following values
Definition at line 195 of file gim_basic_geometry_operations.h.
|
inline |
Verifies if a point is in the plane hull.
Definition at line 97 of file gim_basic_geometry_operations.h.
|
inline |
Ray plane collision in one way.
Intersects plane in one way only. The ray must face the plane (normals must be in opossite directions).
It uses the PLANEDIREPSILON constant.
Definition at line 240 of file gim_basic_geometry_operations.h.
|
inline |
Find closest points on segments.
Definition at line 399 of file gim_basic_geometry_operations.h.
|
inline |
Sorts 3 componets.
Definition at line 516 of file gim_basic_geometry_operations.h.