Skip to content
Snippets Groups Projects
Commit abcce8ac authored by Raphael's avatar Raphael
Browse files

fixed calculation for angle differences

parent 260c1964
No related branches found
No related tags found
1 merge request!6Develop
...@@ -141,16 +141,18 @@ def compute_position_dist_std(dat, radius): ...@@ -141,16 +141,18 @@ def compute_position_dist_std(dat, radius):
def angle_between_three_points(p1, p2, p3): def angle_between_three_points(p1, p2, p3):
alpha = bearing(p2, p1) alpha = bearing(p2, p1)
beta = bearing(p2, p3) beta = bearing(p2, p3)
result = alpha - beta
return alpha - beta if result > 180:
return 180 - result
else:
return result
def compute_point_angles(dat): def compute_point_angles(dat):
angles = np.zeros(dat.shape[0]) angles = np.zeros(dat.shape[0])
p1 = (dat[0][0], dat[0][1]) p1 = (dat[0][0], dat[0][1])
p2 = (dat[1][0], dat[1][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): for i in range(1, dat.shape[0] - 1):
p1 = (dat[i - 1][0], dat[i - 1][1]) p1 = (dat[i - 1][0], dat[i - 1][1])
p2 = (dat[i][0], dat[i][1]) p2 = (dat[i][0], dat[i][1])
......
...@@ -356,32 +356,32 @@ class TestAISTrajectory(unittest.TestCase): ...@@ -356,32 +356,32 @@ class TestAISTrajectory(unittest.TestCase):
self.assertAlmostEqual(result, expected) self.assertAlmostEqual(result, expected)
def test_angle_between_three_points_1(self): def test_angle_between_three_points_1(self):
p1 = (0, 0) p1 = (0, -10)
p2 = (0, 10) p2 = (0, 0)
p3 = (10, 10) 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): def test_angle_between_three_points_2(self):
p1 = (0, 0) p1 = (0, -10)
p2 = (0, 10) p2 = (0, 0)
p3 = (-10, -10) 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): def test_angle_between_three_points_3(self):
p1 = (0, 0) p1 = (0, -10)
p2 = (0, 10) p2 = (0, 0)
p3 = (10, 20) 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): def test_angle_between_three_points_4(self):
p1 = (0, 0) p1 = (0, 0)
p2 = (00, 10) p2 = (0, 10)
p3 = (0, 0) 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): # def test_compute_position_angle_std(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment