View difference between Paste ID: 3EkSQU1R and CYnvHDwX
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,29 @@
5+
@@ -70,6 +70,38 @@
6
 	return a.x() * b.y() - b.x() * a.y();
7
 }
8
 
9
+/**
10
+ * wrapAngle - Приводит значение угла к соответствующему значению из полуинтервала [-Pi, Pi)
11
+ */
12
+inline double wrapAngle(const double& angle)
13
+{
14-
+	double wrappedAngle = fmod(angle,360);
14+
+	double wrappedAngle = angle;
15
+	if (wrappedAngle < -M_PI)
16-
+        wrappedAngle += 360;
16+
+		while (wrappedAngle < -M_PI)
17
+			wrappedAngle += 2*M_PI;
18
+	else if (wrappedAngle >= M_PI)
19
+		while (wrappedAngle >= M_PI)
20
+			wrappedAngle -= 2*M_PI;
21
+
22
+    return wrappedAngle;
23
 }
24
 
25
+/**
26-
+	double wrappedAngle = fmod(wrappedAngle + 180,360);
26+
27-
+    if (wrappedAngle < 0)
27+
28-
+        wrappedAngle += 360;
28+
29-
+    return wrappedAngle - 180;
29+
30
+	double wrappedAngle = angle;
31
+	if (wrappedAngle < 0)
32
+		while (wrappedAngle < 0)
33
+			wrappedAngle += 2*M_PI;
34
+	else if (wrappedAngle >= 2*M_PI)
35
+		while (wrappedAngle >= 2*M_PI)
36
+			wrappedAngle -= 2*M_PI;
37
+
38
+    return wrappedAngle;
39
+}
40
+
41
+}
42
+
43
 #endif
44
\ No newline at end of file