Bullet Collision Detection & Physics Library
|
Class for colliding triangles. More...
#include <gim_tri_collision.h>
Public Member Functions | |
GIM_TRIANGLE () | |
GIM_AABB | get_box () const |
void | get_normal (btVector3 &normal) const |
void | get_plane (btVector4 &plane) const |
void | apply_transform (const btTransform &trans) |
void | get_edge_plane (GUINT edge_index, const btVector3 &triangle_normal, btVector4 &plane) const |
void | get_triangle_transform (btTransform &triangle_transform) const |
Gets the relative transformation of this triangle. More... | |
bool | collide_triangle_hard_test (const GIM_TRIANGLE &other, GIM_TRIANGLE_CONTACT_DATA &contact_data) const |
Test triangles by finding separating axis. More... | |
bool | collide_triangle (const GIM_TRIANGLE &other, GIM_TRIANGLE_CONTACT_DATA &contact_data) const |
Test boxes before doing hard test. More... | |
bool | get_uv_parameters (const btVector3 &point, const btVector3 &tri_plane, GREAL &u, GREAL &v) const |
bool | is_point_inside (const btVector3 &point, const btVector3 &tri_normal) const |
is point in triangle beam? More... | |
bool | ray_collision (const btVector3 &vPoint, const btVector3 &vDir, btVector3 &pout, btVector3 &triangle_normal, GREAL &tparam, GREAL tmax=G_REAL_INFINITY) |
Bidireccional ray collision. More... | |
bool | ray_collision_front_side (const btVector3 &vPoint, const btVector3 &vDir, btVector3 &pout, btVector3 &triangle_normal, GREAL &tparam, GREAL tmax=G_REAL_INFINITY) |
one direccion ray collision More... | |
Public Attributes | |
btScalar | m_margin |
btVector3 | m_vertices [3] |
Class for colliding triangles.
Definition at line 125 of file gim_tri_collision.h.
|
inline |
Definition at line 131 of file gim_tri_collision.h.
|
inline |
Definition at line 150 of file gim_tri_collision.h.
|
inline |
Test boxes before doing hard test.
other | Triangle for collide |
contact_data | Structure for holding contact points, normal and penetration depth; The normal is pointing toward this triangle from the other triangle \ |
Definition at line 206 of file gim_tri_collision.h.
bool GIM_TRIANGLE::collide_triangle_hard_test | ( | const GIM_TRIANGLE & | other, |
GIM_TRIANGLE_CONTACT_DATA & | contact_data | ||
) | const |
Test triangles by finding separating axis.
other | Triangle for collide |
contact_data | Structure for holding contact points, normal and penetration depth; The normal is pointing toward this triangle from the other triangle |
Definition at line 626 of file gim_tri_collision.cpp.
|
inline |
Definition at line 135 of file gim_tri_collision.h.
|
inline |
Definition at line 157 of file gim_tri_collision.h.
|
inline |
Definition at line 140 of file gim_tri_collision.h.
|
inline |
Definition at line 145 of file gim_tri_collision.h.
|
inline |
Gets the relative transformation of this triangle.
The transformation is oriented to the triangle normal , and aligned to the 1st edge of this triangle. The position corresponds to vertice 0:
Definition at line 171 of file gim_tri_collision.h.
|
inline |
Solve the System for u,v parameters:
u*axe1[i1] + v*axe2[i1] = vecproj[i1] u*axe1[i2] + v*axe2[i2] = vecproj[i2]
sustitute: v = (vecproj[i2] - u*axe1[i2])/axe2[i2]
then the first equation in terms of 'u':
–> u*axe1[i1] + ((vecproj[i2] - u*axe1[i2])/axe2[i2])*axe2[i1] = vecproj[i1]
–> u*axe1[i1] + vecproj[i2]*axe2[i1]/axe2[i2] - u*axe1[i2]*axe2[i1]/axe2[i2] = vecproj[i1]
–> u*(axe1[i1] - axe1[i2]*axe2[i1]/axe2[i2]) = vecproj[i1] - vecproj[i2]*axe2[i1]/axe2[i2]
–> u*((axe1[i1]*axe2[i2] - axe1[i2]*axe2[i1])/axe2[i2]) = (vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1])/axe2[i2]
–> u*(axe1[i1]*axe2[i2] - axe1[i2]*axe2[i1]) = vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1]
–> u = (vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1]) /(axe1[i1]*axe2[i2] - axe1[i2]*axe2[i1])
if 0.0<= u+v <=1.0 then they are inside of triangle
\return false if the point is outside of triangle.This function doesn't take the margin
Definition at line 247 of file gim_tri_collision.h.
|
inline |
is point in triangle beam?
Test if point is in triangle, with m_margin tolerance
Definition at line 296 of file gim_tri_collision.h.
|
inline |
Bidireccional ray collision.
Definition at line 316 of file gim_tri_collision.h.
|
inline |
one direccion ray collision
Definition at line 349 of file gim_tri_collision.h.
btScalar GIM_TRIANGLE::m_margin |
Definition at line 128 of file gim_tri_collision.h.
btVector3 GIM_TRIANGLE::m_vertices[3] |
Definition at line 129 of file gim_tri_collision.h.