View difference between Paste ID: CYnvHDwX and 0zvBj6TE
SHOW: | | - or go back to the newest paste.
1
Index: OSGMath.h
2
===================================================================
3
--- OSGMath.h	(revision 91664)
4
+++ OSGMath.h	(working copy)
5-
@@ -70,6 +70,34 @@
5+
@@ -70,6 +70,29 @@
6
 	return a.x() * b.y() - b.x() * a.y();
7
 }
8
 
9
+/**
10
+ * wrapAngle - Приводит значение угла к соответствующему значению из полуинтервала [-Pi, Pi)
11
+ */
12-
+inline double wrapAngle(double& angle)
12+
+inline double wrapAngle(const double& angle)
13
+{
14-
+	if ((angle >= -M_PI) && (angle < M_PI))
14+
+	double wrappedAngle = fmod(angle,360);
15-
+		return angle;
15+
+	if (wrappedAngle < 0)
16
+        wrappedAngle += 360;
17-
+	else if (angle > -M_PI)
17+
18-
+		return wrapAngle(angle -= 2*M_PI);
18+
+    return wrappedAngle;
19-
+	else 
19+
20-
+		return wrapAngle(angle += 2*M_PI);
20+
21
+/**
22
+ * wrapAngle0_2Pi - Приводит значение угла к соответствующему значению из полуинтервала [0, 2*Pi)
23
+ */
24
+inline double wrapAngle0_2Pi(const double& angle)
25
+{
26-
+inline double wrapAngle0_2Pi(double& angle)
26+
+	double wrappedAngle = fmod(wrappedAngle + 180,360);
27
+    if (wrappedAngle < 0)
28-
+	if ((angle >= 0) && (angle < 2*M_PI))
28+
+        wrappedAngle += 360;
29-
+		return angle;
29+
+    return wrappedAngle - 180;
30
+}
31-
+	else if (angle > 0)
31+
32-
+		return wrapAngle0_2Pi(angle -= 2*M_PI);
32+
33-
+	else 
33+
34-
+		return wrapAngle0_2Pi(angle += 2*M_PI);
34+
35
\ No newline at end of file