summary refs log tree commit diff
path: root/src/Quaternions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Quaternions.cpp')
-rw-r--r--src/Quaternions.cpp61
1 files changed, 18 insertions, 43 deletions
diff --git a/src/Quaternions.cpp b/src/Quaternions.cpp
index 2de000b..2c01da9 100644
--- a/src/Quaternions.cpp
+++ b/src/Quaternions.cpp
@@ -2,41 +2,16 @@
 
 #include "Quaternions.h"
 
-extern float u0, u1, u2;
-extern float v0, v1, v2;
-extern float a, b;
-extern int i, j;
-extern bool bInter;
-extern float pointv[3];
-extern float p1v[3];
-extern float p2v[3];
-extern float p3v[3];
-extern float normalv[3];
-
 bool PointInTriangle(XYZ *p, XYZ normal, XYZ *p1, XYZ *p2, XYZ *p3)
 {
-	bInter=0;
-
-	pointv[0]=p->x;
-	pointv[1]=p->y;
-	pointv[2]=p->z;
-
-	p1v[0]=p1->x;
-	p1v[1]=p1->y;
-	p1v[2]=p1->z;
-
-	p2v[0]=p2->x;
-	p2v[1]=p2->y;
-	p2v[2]=p2->z;
-
-	p3v[0]=p3->x;
-	p3v[1]=p3->y;
-	p3v[2]=p3->z;
-
-	normalv[0]=normal.x;
-	normalv[1]=normal.y;
-	normalv[2]=normal.z;
-
+	bool bInter = false;
+	float pointv[3] { p->x, p->y, p->z };
+	float p1v[3] { p1->x, p1->y, p1->z };
+	float p2v[3] { p2->x, p2->y, p2->z };
+	float p3v[3] { p3->x, p3->y, p3->z };
+	float normalv[3] { normal.x, normal.y, normal.z };
+
+	int i = 0, j = 0;
 #define ABS(X) (((X)<0.f)?-(X):(X) )
 #define MAX(A, B) (((A)<(B))?(B):(A))
 	float max = MAX(MAX(ABS(normalv[0]), ABS(normalv[1])), ABS(normalv[2]));
@@ -46,29 +21,29 @@ bool PointInTriangle(XYZ *p, XYZ normal, XYZ *p1, XYZ *p2, XYZ *p3)
 	if (max == ABS(normalv[2])) {i = 0; j = 1;} // x, y
 #undef ABS
 
-	u0 = pointv[i] - p1v[i];
-	v0 = pointv[j] - p1v[j];
-	u1 = p2v[i] - p1v[i];
-	v1 = p2v[j] - p1v[j];
-	u2 = p3v[i] - p1v[i];
-	v2 = p3v[j] - p1v[j];
+	float u0 = pointv[i] - p1v[i];
+	float v0 = pointv[j] - p1v[j];
+	float u1 = p2v[i] - p1v[i];
+	float v1 = p2v[j] - p1v[j];
+	float u2 = p3v[i] - p1v[i];
+	float v2 = p3v[j] - p1v[j];
 
 	if (u1 > -1.0e-05f && u1 < 1.0e-05f)// == 0.0f)
 	{
-		b = u0 / u2;
+		float b = u0 / u2;
 		if (0.0f <= b && b <= 1.0f)
 		{
-			a = (v0 - b * v2) / v1;
+			float a = (v0 - b * v2) / v1;
 			if ((a >= 0.0f) && (( a + b ) <= 1.0f))
 				bInter = 1;
 		}
 	}
 	else
 	{
-		b = (v0 * u1 - u0 * v1) / (v2 * u1 - u2 * v1);
+		float b = (v0 * u1 - u0 * v1) / (v2 * u1 - u2 * v1);
 		if (0.0f <= b && b <= 1.0f)
 		{
-			a = (u0 - b * u2) / u1;
+			float a = (u0 - b * u2) / u1;
 			if ((a >= 0.0f) && (( a + b ) <= 1.0f ))
 				bInter = 1;
 		}