Esempio n. 1
0
 def test_distance_of_0_0_from_flat_line_yintercept_is_zero(self):
     x = LineModel(0, 1, -3)
     test_point = Point(0, 0)
     distance_actual = x.compute_distance(test_point)
     distance_expected = 3
     self.assertEqual(distance_actual, distance_expected)
     pass
Esempio n. 2
0
 def test_distance_of_origin_from_slope_45degrees_yintercept_is_zero(self):
     x = LineModel(-1, 1, 0)
     test_origin = Point(0, 0)
     distance_actual = x.compute_distance(test_origin)
     distance_expected = 0
     self.assertEqual(distance_actual, distance_expected)
     pass
Esempio n. 3
0
 def test_distance_of_1_0_from_slope_45degrees_yintercept_is_zero(self):
     x = LineModel(-1, 1, 0)
     test_point = Point(1, 0)
     distance_actual = x.compute_distance(test_point)
     distance_expected = 1 / math.sqrt(2)
     self.assertEqual(distance_actual, distance_expected)
     pass
Esempio n. 4
0
    def test_x_y_intercept_45_degrees_1_0(self):
        line = LineModel(-1, 1, 1)
        xintercept_actual = line.xintercept()
        xintercept_expected = 1
        yintercept_actual = line.yintercept()
        yintercept_expected = -1

        self.assertEqual(xintercept_actual, xintercept_expected)
        self.assertEqual(yintercept_actual, yintercept_expected)
Esempio n. 5
0
    def test_x_y_intercept_90_degrees_5_inf(self):
        line = LineModel(1, 0, -5)
        xintercept_actual = line.xintercept()
        xintercept_expected = 5
        yintercept_actual = line.yintercept()
        yintercept_expected = math.inf

        self.assertEqual(xintercept_actual, xintercept_expected)
        self.assertEqual(yintercept_actual, yintercept_expected)
Esempio n. 6
0
    def test_x_y_intercept_0_degrees_inf_5(self):
        line = LineModel(0, 1, -5)
        xintercept_actual = line.xintercept()
        xintercept_expected = math.inf
        yintercept_actual = line.yintercept()
        yintercept_expected = 5

        self.assertEqual(xintercept_actual, xintercept_expected)
        self.assertEqual(yintercept_actual, yintercept_expected)
Esempio n. 7
0
    def test_is_vertical(self):
        vertical_line = LineModel(1, 0, 1)
        self.assertEqual(vertical_line.is_vertical, True)

        horizontal_line = LineModel(0, 1, 1)
        self.assertEqual(horizontal_line.is_vertical, False)

        inclined_line = LineModel(0, 1, 1)
        self.assertEqual(inclined_line.is_vertical, False)
Esempio n. 8
0
 def test_generate_points_from_line_45_degrees_passing_through_0_0(self):
     line = LineModel(-1, 1, 0)
     x1 = 20
     x2 = 40
     y1 = 10
     y2 = 30
     new_points = LineModel.generate_points_from_line(line, x1, y1, x2, y2)
     for p in new_points:
         print("Testing point=%s" % (p))
         self.assertTrue(p.X >= x1)
         self.assertTrue(p.X <= x2)
Esempio n. 9
0
 def test_generate_points_from_line_90_degrees_passing_through_5_0(self):
     line = LineModel(1, 0, -5)
     x1 = 20
     x2 = 40
     y1 = 10
     y2 = 30
     new_points = LineModel.generate_points_from_line(line, x1, y1, x2, y2)
     for p in new_points:
         print("Testing point=%s" % (p))
         self.assertTrue(p.Y >= y1)
         self.assertTrue(p.Y <= y2)
Esempio n. 10
0
 def generate_plottable_points_from_projection_of_points(
         cls, line: LineModel, points: List[Point]):
     projected_points = LineModel.compute_projection_of_points(line, points)
     first_point, second_point = Util.get_terminal_points_from_coliner_points(
         projected_points)
     plottable_points = Util.generate_plottable_points_between_twopoints(
         first_point, second_point)
     return plottable_points
Esempio n. 11
0
 def test_add_points_to_line(self):
     model = LineModel.create_line_from_2points(0, 0, 100, 100)
     test_point1 = Point(1, 0)
     test_point2 = Point(2, 0)
     model.points.append(test_point1)
     model.points.append(test_point2)
     self.assertTrue(test_point1 in model.points)
     self.assertTrue(test_point2 in model.points)
     self.assertTrue(len(model.points) == 2)
Esempio n. 12
0
    def test_projection_of_points_on_line_with_slope_45degrees_through_origin(
            self):
        line = LineModel(-1, 1, 0)
        test_point1 = Point(4, 0)
        expected_projected1 = Point(2, 2)

        test_point2 = Point(0, 4)
        expected_projected2 = Point(2, 2)

        lst_inputs = [test_point1, test_point2]
        lst_expected = [expected_projected1, expected_projected2]

        lst_actual = LineModel.compute_projection_of_points(line, lst_inputs)

        for index in range(0, len(lst_inputs)):
            actual = lst_actual[index]
            expected = lst_expected[index]
            self.assertAlmostEqual(actual.X, expected.X, 0.1)
            self.assertAlmostEqual(actual.Y, expected.Y, 0.1)
Esempio n. 13
0
 def test_create_line_from_start_and_end_vertical_line(self):
     start_x = 1
     start_y = 5
     end_x = 1
     end_y = 25
     model = LineModel.create_line_from_2points(start_x, start_y, end_x,
                                                end_y)
     expected_B = 0
     expected_x_intercept = start_x
     self.assertAlmostEqual(model.B, 0)
     self.assertAlmostEqual(model.C / model.A, -expected_x_intercept)
Esempio n. 14
0
 def test_generate_points_at_regular_intervals_stline(self):
     start_x = 0
     start_y = 1
     end_x = 10
     end_y = 11
     model = LineModel.create_line_from_2points(start_x, start_y, end_x,
                                                end_y)
     slope = -model.A / model.B
     yintercept = -model.C / model.B
     gap = 5
     new_points = LineModel.generate_points_at_regular_intervals_stline(
         start_x, start_y, end_x, end_y, gap)
     count_of_new_points = len(new_points)
     self.assertTrue(count_of_new_points > 0)
     self.assertTrue(count_of_new_points < 4)
     for new_point in new_points:
         new_x = new_point.X
         new_y = new_point.Y
         expected_y = slope * new_x + yintercept
         self.assertAlmostEqual(new_y, expected_y)
Esempio n. 15
0
 def test_sequential_projection(self):
     diagonal = LineModel(-1, 1, 0)
     external_points = []
     external_points.append(Point(1, 1.2))
     external_points.append(Point(2, 2))
     external_points.append(Point(3, 3.2))
     external_points.append(Point(4.2, 4))
     shuffled_points = sorted(external_points,
                              key=lambda x: random.random())
     projected_points = LineModel.compute_projection_of_points_sequential(
         diagonal, shuffled_points)
     self.assertEqual(len(shuffled_points), len(projected_points))
     for projected_point in projected_points:
         self.assertEqual(projected_point.X, projected_point.Y)
     for index in range(len(projected_points) - 1):
         first_point = projected_points[index]
         second_point = projected_points[index + 1]
         self.assertGreater(second_point.X, first_point.X)
         self.assertGreater(second_point.Y, first_point.Y)
     pass
Esempio n. 16
0
 def test_create_line_from_start_and_end_horizontal_line(self):
     start_x = 0
     start_y = 1
     end_x = 1
     end_y = 2
     model = LineModel.create_line_from_2points(start_x, start_y, end_x,
                                                end_y)
     #equation ax+by+c=0
     #slope=-a/b
     #yinter=-c/b
     expected_slope = 1
     expected_y_intercept = 1
     self.assertAlmostEqual(model.A / model.B, -expected_slope)
     self.assertAlmostEqual(model.C / model.B, -expected_y_intercept)
Esempio n. 17
0
 def test_display_polar(self):
     line = LineModel(-1, 1, 1)
     s = line.display_polar()
     print(s)
Esempio n. 18
0
 def test_construction(self):
     x = LineModel(100, 200, 300)
     self.assertEqual(x.A, 100)
     self.assertEqual(x.B, 200)
     self.assertEqual(x.C, 300)
     pass