added method to compute difference between bearings

This commit is contained in:
Axel Uhl committed 2011-09-15 09:01:23 +02:00
1 parent 8a4707ecf0
commit 8ea116411f
2 files changed
+34

No files matched your search

@@ -136,4 +136,27 @@ public class PositionTest {
assertEquals(123+345-360, sum.getDegrees(), 0.000000001);
}
@Test
public void bearingDifferenceTest() {
Bearing b1 = new DegreeBearingImpl(340);
Bearing b2 = new DegreeBearingImpl(350);
Bearing b3 = new DegreeBearingImpl(0);
Bearing b4 = new DegreeBearingImpl(10);
Bearing b5 = new DegreeBearingImpl(20);
Bearing b6 = new DegreeBearingImpl(180);
assertEquals(10., b1.getDifferenceTo(b2).getDegrees(), 0.000000001);
assertEquals(10., b2.getDifferenceTo(b3).getDegrees(), 0.000000001);
assertEquals(10., b3.getDifferenceTo(b4).getDegrees(), 0.000000001);
assertEquals(10., b4.getDifferenceTo(b5).getDegrees(), 0.000000001);
assertEquals(20., b2.getDifferenceTo(b4).getDegrees(), 0.000000001);
assertEquals(-20., b4.getDifferenceTo(b2).getDegrees(), 0.000000001);
assertEquals(40., b1.getDifferenceTo(b5).getDegrees(), 0.000000001);
assertEquals(-40., b5.getDifferenceTo(b1).getDegrees(), 0.000000001);
assertEquals(180., b3.getDifferenceTo(b6).getDegrees(), 0.000000001);
assertEquals(-180., b6.getDifferenceTo(b3).getDegrees(), 0.000000001);
}
}
@@ -23,6 +23,17 @@ public abstract class AbstractBearing implements Bearing {
return new DegreeBearingImpl(newDeg);
}
@Override
public Bearing getDifferenceTo(Bearing b) {
double diff = b.getDegrees() - getDegrees();
if (diff < -180) {
diff += 360;
} else if (diff > 180) {
diff -= 360;
}
return new DegreeBearingImpl(diff);
}
@Override
public String toString() {
return ""+getDegrees()+"°";