Public Types | |
enum | Side { SIDE_OVER, SIDE_UNDER, SIDE_SPANNING, SIDE_COPLANAR } |
Public Member Functions | |
int | split_by_plane (const Plane &p_plane, Face3 *p_res, bool *p_is_point_over) const |
Plane | get_plane (ClockDirection p_dir=CLOCKWISE) const |
Vector3 | get_random_point_inside () const |
Side | get_side_of (const Face3 &p_face, ClockDirection p_clock_dir=CLOCKWISE) const |
bool | is_degenerate () const |
real_t | get_area () const |
Vector3 | get_median_point () const |
Vector3 | get_closest_point_to (const Vector3 &p_point) const |
bool | intersects_ray (const Vector3 &p_from, const Vector3 &p_dir, Vector3 *p_intersection=0) const |
bool | intersects_segment (const Vector3 &p_from, const Vector3 &p_dir, Vector3 *p_intersection=0) const |
ClockDirection | get_clock_dir () const |
todo, test if this is returning the proper clockwisity | |
void | get_support (const Vector3 &p_normal, const Transform &p_transform, Vector3 *p_vertices, int *p_count, int p_max) const |
void | project_range (const Vector3 &p_normal, const Transform &p_transform, float &r_min, float &r_max) const |
AABB | get_aabb () const |
bool | intersects_aabb (const AABB &p_aabb) const |
_FORCE_INLINE_ bool | intersects_aabb2 (const AABB &p_aabb) const |
operator String () const | |
Face3 (const Vector3 &p_v1, const Vector3 &p_v2, const Vector3 &p_v3) | |
Public Attributes | |
Vector3 | vertex [3] |
void Face3::get_support | ( | const Vector3 & | p_normal, |
const Transform & | p_transform, | ||
Vector3 * | p_vertices, | ||
int * | p_count, | ||
int | p_max | ||
) | const |
TEST FACE AS SUPPORT
FIND SUPPORT VERTEX
TEST EDGES AS SUPPORT
bool Face3::intersects_aabb | ( | const AABB & | p_aabb | ) | const |
TEST PLANE
TEST FACE AXIS
TEST ALL EDGES
p_plane | plane used to split the face |
p_res | array of at least 3 faces, amount used in functio return |
p_is_point_over | array of at least 3 booleans, determining which face is over the plane, amount used in functio return |
_epsilon | constant used for numerical error rounding, to add "thickness" to the plane (so coplanar points can happen) |