Class for colliding triangles.
More...
#include <gim_tri_collision.h>
|
| | 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...
|
| |
Class for colliding triangles.
Definition at line 125 of file gim_tri_collision.h.
| GIM_TRIANGLE::GIM_TRIANGLE |
( |
) | |
|
|
inline |
| void GIM_TRIANGLE::apply_transform |
( |
const btTransform & |
trans) | |
|
|
inline |
Test boxes before doing hard test.
- Parameters
-
| 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.
Test triangles by finding separating axis.
- Parameters
-
| 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.
| GIM_AABB GIM_TRIANGLE::get_box |
( |
) | |
const |
|
inline |
| void GIM_TRIANGLE::get_normal |
( |
btVector3 & |
normal) | |
const |
|
inline |
| void GIM_TRIANGLE::get_plane |
( |
btVector4 & |
plane) | |
const |
|
inline |
| void GIM_TRIANGLE::get_triangle_transform |
( |
btTransform & |
triangle_transform) | |
const |
|
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:
- triangle normal corresponds to Z axis.
- 1st normalized edge corresponds to X axis,
Definition at line 171 of file gim_tri_collision.h.
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
- Returns
- 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.
| bool GIM_TRIANGLE::is_point_inside |
( |
const btVector3 & |
point, |
|
|
const btVector3 & |
tri_normal |
|
) |
| const |
|
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.
The documentation for this class was generated from the following files: