108 const Vector3 &tri_point2,
const Vector3 &test_point,
int axis_1,
int axis_2,
109 unsigned char &flags)
117 Vector2 p0p1(tri_point1[axis_1] - tri_point0[axis_1], tri_point1[axis_2] - tri_point0[axis_2]);
118 Vector2 p1p2(tri_point2[axis_1] - tri_point1[axis_1], tri_point2[axis_2] - tri_point1[axis_2]);
119 Vector2 p2p0(tri_point0[axis_1] - tri_point2[axis_1], tri_point0[axis_2] - tri_point2[axis_2]);
125 Vector2 p0p2(tri_point2[axis_1] - tri_point0[axis_1], tri_point2[axis_2] - tri_point0[axis_2]);
127 if (p0p1p2 != 0.0f) {
130 float side_factor = p0p1p2 > 0.0f ? 1.0f : -1.0f;
134 Vector2 p0pT(test_point[axis_1] - tri_point0[axis_1], test_point[axis_2] - tri_point0[axis_2]);
136 if (factors[0] * side_factor < 0.0f) {
139 Vector2 p1pT(test_point[axis_1] - tri_point1[axis_1], test_point[axis_2] - tri_point1[axis_2]);
141 if (factors[1] * side_factor < 0.0f) {
144 Vector2 p2pT(test_point[axis_1] - tri_point2[axis_1], test_point[axis_2] - tri_point2[axis_2]);
146 if (factors[2] * side_factor < 0.0f) {
158 float p0p1dist2 = p0p1.
Length2();
159 float p1p2dist2 = p1p2.
Length2();
160 float p2p0dist2 = p1p2.
Length2();
163 if (p0p1dist2 > p1p2dist2) {
164 if (p0p1dist2 > p2p0dist2) {
167 pSpT.
Set(test_point[axis_1] - tri_point0[axis_1], test_point[axis_2] - tri_point0[axis_2]);
168 max_dist2 = p0p1dist2;
172 pSpT.
Set(test_point[axis_1] - tri_point2[axis_1], test_point[axis_2] - tri_point2[axis_2]);
173 max_dist2 = p2p0dist2;
176 if (p1p2dist2 > p2p0dist2) {
179 pSpT.
Set(test_point[axis_1] - tri_point1[axis_1], test_point[axis_2] - tri_point1[axis_2]);
180 max_dist2 = p1p2dist2;
184 pSpT.
Set(test_point[axis_1] - tri_point2[axis_1], test_point[axis_2] - tri_point2[axis_2]);
185 max_dist2 = p2p0dist2;
189 if (max_dist2 != 0.0f) {
bool Cast_Semi_Infinite_Axis_Aligned_Ray_To_Triangle(const Vector3 &tri_point0, const Vector3 &tri_point1, const Vector3 &tri_point2, const Vector4 &tri_plane, const Vector3 &ray_start, int axis_r, int axis_1, int axis_2, int direction, unsigned char &flags)
bool Point_In_Triangle_2D(const Vector3 &tri_point0, const Vector3 &tri_point1, const Vector3 &tri_point2, const Vector3 &test_point, int axis_1, int axis_2, unsigned char &flags)