diff --git a/skais/ais/ais_trajectory.py b/skais/ais/ais_trajectory.py index a2cebe8fdbaf5a379f247ff7c8dc939a1432fee6..6d44a36d14c9c9cf2ec89900fb57f083a0435963 100644 --- a/skais/ais/ais_trajectory.py +++ b/skais/ais/ais_trajectory.py @@ -141,16 +141,18 @@ def compute_position_dist_std(dat, radius): def angle_between_three_points(p1, p2, p3): alpha = bearing(p2, p1) beta = bearing(p2, p3) - - return alpha - beta - + result = alpha - beta + if result > 180: + return 180 - result + else: + return result def compute_point_angles(dat): angles = np.zeros(dat.shape[0]) p1 = (dat[0][0], dat[0][1]) p2 = (dat[1][0], dat[1][1]) - angles[0] = bearing(p2, p1) + angles[0] = bearing(p1, p2) for i in range(1, dat.shape[0] - 1): p1 = (dat[i - 1][0], dat[i - 1][1]) p2 = (dat[i][0], dat[i][1]) diff --git a/skais/tests/ais/test_ais_trajectory.py b/skais/tests/ais/test_ais_trajectory.py index 1feb4d0bbabefc62aa1219f144bd76ba5ed9177d..e8100e31a9b1c6051d15c7e5260eb8bfdfbd6ca3 100644 --- a/skais/tests/ais/test_ais_trajectory.py +++ b/skais/tests/ais/test_ais_trajectory.py @@ -356,32 +356,32 @@ class TestAISTrajectory(unittest.TestCase): self.assertAlmostEqual(result, expected) def test_angle_between_three_points_1(self): - p1 = (0, 0) - p2 = (0, 10) - p3 = (10, 10) + p1 = (0, -10) + p2 = (0, 0) + p3 = (10, 0) - self.assertEqual(90, angle_between_three_points.py_func(p1, p2, p3)) + self.assertAlmostEqual(90, angle_between_three_points.py_func(p1, p2, p3), places=3) def test_angle_between_three_points_2(self): - p1 = (0, 0) - p2 = (0, 10) - p3 = (-10, -10) + p1 = (0, -10) + p2 = (0, 0) + p3 = (-10, 0) - self.assertEqual(-90, angle_between_three_points.py_func(p1, p2, p3)) + self.assertAlmostEqual(-90, angle_between_three_points.py_func(p1, p2, p3), places=3) def test_angle_between_three_points_3(self): - p1 = (0, 0) - p2 = (0, 10) - p3 = (10, 20) + p1 = (0, -10) + p2 = (0, 0) + p3 = (10, 10) - self.assertEqual(42.814167, angle_between_three_points.py_func(p1, p2, p3)) + self.assertAlmostEqual(180 - 44.56139, angle_between_three_points.py_func(p1, p2, p3), places=3) def test_angle_between_three_points_4(self): p1 = (0, 0) - p2 = (00, 10) + p2 = (0, 10) p3 = (0, 0) - self.assertEqual(180, abs(angle_between_three_points.py_func(p1, p2, p3))) + self.assertAlmostEqual(0, abs(angle_between_three_points.py_func(p1, p2, p3)), places=3) # def test_compute_position_angle_std(self):