示例#1
0
 def test_it_should_find_the_correct_distance_when_p1_equals_p2(self):
     self.assertEqual(point_to_point_distance(
         Point(0, 0),
         Point(0, 0),
     ), 0)
     self.assertEqual(point_to_point_distance(
         Point(1, 1),
         Point(1, 1),
     ), 0)
示例#2
0
 def test_it_should_always_return_only_the_first_and_last_points_in_a_list_if_a_large_enough_error_limit_is_given(
         self):
     self.assertEqual(waringo_henrich_smooth(self.points2, 1000), [
         Point(-34, 134),
         Point(30, 12),
     ])
     self.assertEqual(waringo_henrich_smooth(self.points1, 1000), [
         Point(0, 0),
         Point(638, 140),
     ])
示例#3
0
 def test_it_should_find_the_correct_distance_in_a_normal_case(self):
     self.assertAlmostEqual(
         point_to_point_distance(
             Point(0, 0),
             Point(10, 10),
         ), 14.1421, 4)
     self.assertAlmostEqual(
         point_to_point_distance(
             Point(10, -5),
             Point(-10, 5),
         ), 22.3607, 4)
示例#4
0
 def test_it_should_find_the_correct_distance_when_the_line_slope_is_0(
         self):
     self.assertEqual(point_to_point_distance(
         Point(0, 0),
         Point(10, 0),
     ), 10)
     self.assertEqual(
         point_to_point_distance(
             Point(0, -10),
             Point(1000, -10),
         ), 1000)
示例#5
0
 def test_it_should_return_the_given_list_if_the_list_has_a_length_less_than_3(
         self):
     self.assertEqual(waringo_henrich_smooth([], 0), [])
     self.assertEqual(waringo_henrich_smooth([Point(0, 0)], 0),
                      [Point(0, 0)])
     self.assertEqual(waringo_henrich_smooth(
         [Point(0, 0), Point(1, 1)], 0),
                      [Point(0, 0), Point(1, 1)])
示例#6
0
 def test_it_should_find_the_correct_distance_when_the_line_has_length_0(
         self):
     self.assertEqual(
         point_to_line_distance(
             Point(0, 0),
             Point(5, 0),
             Point(0, 0),
         ), 5)
     self.assertEqual(
         point_to_line_distance(
             Point(-10, -10),
             Point(10, 10),
             Point(-10, -10),
         ), math.sqrt(20.0 * 20.0 + 20.0 * 20.0))
示例#7
0
 def test_it_should_find_the_correct_distance_when_the_line_slope_is_infinity(
         self):
     self.assertEqual(
         point_to_line_distance(
             Point(0, 0),
             Point(5, -100),
             Point(0, 10),
         ), 5)
     self.assertEqual(
         point_to_line_distance(
             Point(-20, -2000),
             Point(5, 0),
             Point(-20, 10),
         ), 25)
示例#8
0
 def test_it_should_smooth_paths_to_within_the_specified_degree_of_error(
         self):
     self.assertEqual(waringo_henrich_smooth(self.points2, 1), [
         Point(-34, 134),
         Point(0, 128),
         Point(21, 121),
         Point(35, 114),
         Point(42, 108),
         Point(44, 108),
         Point(59, 94),
         Point(77, 67),
         Point(81, 56),
         Point(82, 44),
         Point(78, 30),
         Point(76, 29),
         Point(73, 22),
         Point(62, 15),
         Point(53, 12),
         Point(30, 12),
     ])
     self.assertEqual(waringo_henrich_smooth(self.points2, 1.5), [
         Point(-34, 134),
         Point(0, 128),
         Point(21, 121),
         Point(44, 108),
         Point(59, 94),
         Point(77, 67),
         Point(81, 56),
         Point(82, 44),
         Point(78, 30),
         Point(73, 22),
         Point(53, 12),
         Point(30, 12),
     ])
     self.assertEqual(waringo_henrich_smooth(self.points2, 2), [
         Point(-34, 134),
         Point(21, 121),
         Point(44, 108),
         Point(59, 94),
         Point(77, 67),
         Point(82, 44),
         Point(73, 22),
         Point(53, 12),
         Point(30, 12),
     ])
     self.assertEqual(waringo_henrich_smooth(self.points1, 30), [
         Point(0, 0),
         Point(198, 28),
         Point(214, 100),
         Point(326, 76),
         Point(438, 124),
         Point(502, 76),
         Point(638, 140),
     ])
     self.assertEqual(waringo_henrich_smooth(self.points1, 60), [
         Point(0, 0),
         Point(638, 140),
     ])
示例#9
0
 def setUp(self):
     # Random line
     self.points1 = [
         Point(0, 0),
         Point(62, 4),
         Point(102, 44),
         Point(198, 28),
         Point(214, 100),
         Point(326, 76),
         Point(406, 92),
         Point(438, 124),
         Point(502, 76),
         Point(574, 108),
         Point(638, 140),
     ]
     # Road bike handlebar contour:
     # 2014 Specialized Comp Alloy Tarmac Bend 44cm
     self.points2 = [
         Point(-34, 134),
         Point(-33, 134),
         Point(-31, 133),
         Point(-30, 133),
         Point(-29, 133),
         Point(-28, 133),
         Point(-27, 132),
         Point(-26, 132),
         Point(-25, 132),
         Point(-24, 132),
         Point(-23, 132),
         Point(-21, 131),
         Point(-20, 131),
         Point(-19, 131),
         Point(-18, 131),
         Point(-17, 131),
         Point(-15, 130),
         Point(-14, 130),
         Point(-13, 130),
         Point(-11, 130),
         Point(-10, 129),
         Point(-9, 129),
         Point(-8, 129),
         Point(-7, 129),
         Point(-5, 128),
         Point(-4, 128),
         Point(-3, 128),
         Point(-2, 128),
         Point(0, 128),
         Point(1, 127),
         Point(3, 127),
         Point(4, 126),
         Point(5, 126),
         Point(6, 126),
         Point(7, 126),
         Point(8, 125),
         Point(9, 125),
         Point(11, 125),
         Point(12, 124),
         Point(14, 124),
         Point(15, 123),
         Point(16, 123),
         Point(17, 122),
         Point(18, 122),
         Point(19, 121),
         Point(21, 121),
         Point(22, 120),
         Point(23, 120),
         Point(24, 119),
         Point(26, 118),
         Point(27, 118),
         Point(28, 117),
         Point(29, 116),
         Point(30, 116),
         Point(31, 116),
         Point(32, 115),
         Point(33, 114),
         Point(35, 114),
         Point(36, 113),
         Point(37, 112),
         Point(38, 111),
         Point(40, 110),
         Point(41, 110),
         Point(42, 109),
         Point(42, 108),
         Point(44, 108),
         Point(44, 107),
         Point(45, 106),
         Point(46, 105),
         Point(47, 105),
         Point(48, 104),
         Point(49, 103),
         Point(50, 102),
         Point(51, 101),
         Point(52, 101),
         Point(52, 100),
         Point(53, 99),
         Point(54, 98),
         Point(55, 97),
         Point(56, 96),
         Point(57, 95),
         Point(58, 94),
         Point(59, 94),
         Point(59, 93),
         Point(60, 92),
         Point(61, 91),
         Point(62, 90),
         Point(63, 89),
         Point(63, 88),
         Point(64, 87),
         Point(65, 86),
         Point(66, 84),
         Point(67, 83),
         Point(68, 82),
         Point(68, 81),
         Point(69, 80),
         Point(70, 79),
         Point(70, 78),
         Point(71, 77),
         Point(72, 76),
         Point(72, 75),
         Point(73, 73),
         Point(74, 72),
         Point(74, 71),
         Point(75, 70),
         Point(75, 69),
         Point(76, 68),
         Point(77, 67),
         Point(77, 66),
         Point(77, 65),
         Point(78, 63),
         Point(79, 62),
         Point(79, 60),
         Point(80, 59),
         Point(80, 58),
         Point(81, 56),
         Point(81, 55),
         Point(81, 54),
         Point(81, 53),
         Point(82, 51),
         Point(82, 50),
         Point(82, 48),
         Point(82, 47),
         Point(82, 46),
         Point(82, 45),
         Point(82, 44),
         Point(81, 43),
         Point(81, 41),
         Point(81, 39),
         Point(81, 38),
         Point(80, 37),
         Point(80, 36),
         Point(79, 35),
         Point(79, 33),
         Point(79, 32),
         Point(78, 31),
         Point(78, 30),
         Point(76, 29),
         Point(76, 27),
         Point(75, 26),
         Point(74, 25),
         Point(74, 24),
         Point(73, 23),
         Point(73, 22),
         Point(72, 22),
         Point(71, 21),
         Point(70, 20),
         Point(69, 19),
         Point(68, 19),
         Point(67, 18),
         Point(66, 17),
         Point(65, 17),
         Point(64, 16),
         Point(63, 16),
         Point(62, 15),
         Point(62, 15),
         Point(61, 15),
         Point(60, 15),
         Point(60, 14),
         Point(58, 14),
         Point(57, 13),
         Point(56, 13),
         Point(55, 13),
         Point(53, 12),
         Point(52, 12),
         Point(51, 12),
         Point(50, 12),
         Point(48, 12),
         Point(47, 12),
         Point(45, 12),
         Point(44, 12),
         Point(43, 12),
         Point(42, 12),
         Point(41, 12),
         Point(39, 12),
         Point(39, 12),
         Point(37, 12),
         Point(36, 12),
         Point(34, 12),
         Point(33, 12),
         Point(33, 12),
         Point(32, 12),
         Point(31, 12),
         Point(30, 12),
         Point(30, 12),
     ]
示例#10
0
 def test_it_should_find_the_correct_distance_in_a_normal_case(self):
     self.assertAlmostEqual(
         point_to_line_distance(
             Point(0, 0),
             Point(0, 1),
             Point(1, 1),
         ), 0.7071, 4)
     self.assertAlmostEqual(
         point_to_line_distance(
             Point(0, 0),
             Point(5, 1),
             Point(10, 1),
         ), 0.4975, 4)
     self.assertAlmostEqual(
         point_to_line_distance(
             Point(0, 0),
             Point(6, 1.1),
             Point(10, 1),
         ), 0.4975, 4)
     self.assertAlmostEqual(
         point_to_line_distance(
             Point(-10, 10),
             Point(-4, 8),
             Point(-3, 5),
         ), 1.8600, 4)