Public Types | Public Member Functions | Public Attributes | List of all members
Face3 Class Reference

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]
 

Member Function Documentation

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

int Face3::split_by_plane ( const Plane p_plane,
Face3 p_res,
bool *  p_is_point_over 
) const
Parameters
p_planeplane used to split the face
p_resarray of at least 3 faces, amount used in functio return
p_is_point_overarray of at least 3 booleans, determining which face is over the plane, amount used in functio return
_epsilonconstant used for numerical error rounding, to add "thickness" to the plane (so coplanar points can happen)
Returns
amount of faces generated by the split, either 0 (means no split possible), 2 or 3

The documentation for this class was generated from the following files: