aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/utils/AngleUtils.java
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2012-06-01 01:30:36 +0200
committerSamuel Tardieu <sam@rfc1149.net>2012-06-01 01:30:36 +0200
commite1afa5a46fc00e26639e97de007f2b84aedb9f7c (patch)
tree50ab550bf20ee00c23e261e0833faa1aed00138f /main/src/cgeo/geocaching/utils/AngleUtils.java
parent087555a763cf4c308536df5afd160967323fa91c (diff)
downloadcgeo-e1afa5a46fc00e26639e97de007f2b84aedb9f7c.zip
cgeo-e1afa5a46fc00e26639e97de007f2b84aedb9f7c.tar.gz
cgeo-e1afa5a46fc00e26639e97de007f2b84aedb9f7c.tar.bz2
Put angle-related utilities into their own package
Also, use float instead of double for every angle computation.
Diffstat (limited to 'main/src/cgeo/geocaching/utils/AngleUtils.java')
-rw-r--r--main/src/cgeo/geocaching/utils/AngleUtils.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/utils/AngleUtils.java b/main/src/cgeo/geocaching/utils/AngleUtils.java
new file mode 100644
index 0000000..e2b4a66
--- /dev/null
+++ b/main/src/cgeo/geocaching/utils/AngleUtils.java
@@ -0,0 +1,28 @@
+package cgeo.geocaching.utils;
+
+public class AngleUtils {
+
+ private AngleUtils() {
+ // Do not instantiate
+ }
+
+ /**
+ * Return the angle to turn of to go from an angle to the other
+ *
+ * @param from the origin angle in degrees
+ * @param to the target angle in degreees
+ * @return a value in degrees, in the [-180, 180[ range
+ */
+ public static float difference(final float from, final float to) {
+ return normalize(to - from + 180) - 180;
+ }
+
+ /**
+ * Normalize an angle so that it belongs to the [0, 360[ range.
+ * @param angle the angle in degrees
+ * @return the same angle in the [0, 360[ range
+ */
+ public static float normalize(final float angle) {
+ return (angle >= 0 ? angle : (360 - ((-angle) % 360))) % 360;
+ }
+}