summaryrefslogtreecommitdiff
path: root/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2015-06-23 21:35:43 -0700
committerKeith Packard <keithp@keithp.com>2015-06-23 21:42:35 -0700
commit56146cd379e1319b7adcf8e22cdda55f771e11be (patch)
tree6417550c523318e3792167a947367bfd57a606c6 /altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
parent60b8bea12edb954e6140a92c8412364c9581e3c2 (diff)
altosdroid: Show direction to target in recover tab
This takes the bearing to target and current direction of motion (from the Android API) and computes a turn amount and displays that so you don't have to know which way is north when walking towards the rocket. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java')
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
index 6cd9463a..f1da27d8 100644
--- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
+++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
@@ -990,4 +990,29 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {
}
return false;
}
+
+ static String direction(AltosGreatCircle from_receiver,
+ Location receiver) {
+ if (!receiver.hasBearing())
+ return null;
+
+ float bearing = receiver.getBearing();
+ float heading = (float) from_receiver.bearing - bearing;
+
+ while (heading <= -180.0f)
+ heading += 360.0f;
+ while (heading > 180.0f)
+ heading -= 360.0f;
+
+ int iheading = (int) (heading + 0.5f);
+
+ if (-1 < iheading && iheading < 1)
+ return "ahead";
+ else if (iheading < -179 || 179 < iheading)
+ return "backwards";
+ else if (iheading < 0)
+ return String.format("left %d", -iheading);
+ else
+ return String.format("right %d", iheading);
+ }
}