def test_destination_bearing_east(self): distance = self.cls(kilometers=100) for EAST in (90, 90 + 360, -360 + 90): p = distance.destination(Point(0, 160), bearing=EAST) self.assertAlmostEqual(p.latitude, 0) self.assertAlmostEqual(p.longitude, 160.8993, delta=1e-3) p = distance.destination(Point(60, 160), bearing=EAST) self.assertAlmostEqual(p.latitude, 59.9878, delta=1e-3) self.assertAlmostEqual(p.longitude, 161.79, delta=1e-2)
def test_should_compute_destination_across_antimeridian(self): nines = 1 - 1e-30 # 0.(9) distance = self.cls(10) point = distance.destination((0, -179 - nines), -90) self.assertAlmostEqual(point.latitude, 0.0) self.assertAlmostEqual(point.longitude, 179.91, 3)
def test_max_longitude(self): distance = self.cls(kilometers=1.0) destination = distance.destination(FIJI, 45) self.assertAlmostEqual(destination.longitude, -179.99338, 4)
def test_should_compute_destination_for_trip_between_poles(self): distance = self.cls(EARTH_CIRCUMFERENCE / 2) destination = distance.destination(NORTH_POLE, 0) self.assertAlmostEqual(destination.latitude, -90, 0) self.assertAlmostEqual(destination.longitude, 0)
def test_should_compute_same_destination_as_other_libraries(self): distance = self.cls(54.972271) destination = distance.destination((-37.95103, 144.42487), 306.86816) self.assertAlmostEqual(destination.latitude, -37.6528177174, 10) self.assertAlmostEqual(destination.longitude, 143.9264976682, 10)
def test_should_compute_destination_for_half_trip_around_equator(self): distance = self.cls(EARTH_CIRCUMFERENCE / 2) destination = distance.destination((0, 0), 0) self.assertAlmostEqual(destination.latitude, 0) self.assertAlmostEqual(destination.longitude, 180)
def test_should_compute_destination_for_half_trip_around_equator(self): distance = self.cls() destination = distance.destination((0, 0), 90, math.pi * distance.ELLIPSOID[0]) self.assertAlmostEqual(destination.latitude, 0, 8) self.assertAlmostEqual(abs(destination.longitude), 180, 8)