Example #1
0
    def intersects_at(self, other) -> Point:
        if self.slope == other.slope:
            raise LinesParallelError

        elif is_infinity(self.slope):
            x = self.point.x
            y = other.get_y(x)

        elif is_infinity(other.slope):
            x = other.point.x
            y = self.get_y(x)

        else:
            x = (other.y_intercept - self.y_intercept) / (self.slope -
                                                          other.slope)
            y = (self.slope * x) + self.y_intercept

        return Point(x, y)
Example #2
0
 def point_2d(self):
     return Point(self.x, self.y)
    def test_intersects(self):
        segment_1 = LineSegment(Point(0, 0), Point(5, 5))
        segment_2 = LineSegment(Point(0, 2), Point(5, 2))
        segment_3 = LineSegment(Point(1, 0), Point(1, 5))
        segment_4 = LineSegment(Point(6, 6), Point(8, 8))
        segment_5 = LineSegment(Point(0, 1), Point(5, 6))
        segment_6 = LineSegment(Point(0, 2), Point(3, 0))

        self.assertTrue(segment_1.intersects(segment_2))
        self.assertTrue(segment_1.intersects(segment_3))
        self.assertTrue(segment_2.intersects(segment_3))
        self.assertFalse(segment_1.intersects(segment_4))
        self.assertFalse(segment_1.intersects(segment_5))
        self.assertFalse(segment_1.intersects(segment_6))

        segment_7 = LineSegment(Point(3, 6), Point(3, 0))
        segment_8 = LineSegment(Point(2, 4), Point(6, 4))
        self.assertTrue(segment_7.intersects(segment_8))

        segment_9 = LineSegment(Point(0, 6), Point(3, 6))
        segment_10 = LineSegment(Point(1, 2), Point(1, 1))
        self.assertFalse(segment_9.intersects(segment_10))
 def test_overlaps(self):
     segment_1 = LineSegment(Point(0, 0), Point(5, 5))
     segment_2 = LineSegment(Point(0, 2), Point(5, 2))
     segment_3 = LineSegment(Point(1, 0), Point(1, 5))
     segment_4 = LineSegment(Point(1, 1), Point(2, 2))
     segment_5 = LineSegment(Point(-1, -1), Point(-3, -3))
     segment_6 = LineSegment(Point(0, 1), Point(5, 6))
     self.assertFalse(segment_1.overlaps(segment_2))
     self.assertFalse(segment_1.overlaps(segment_3))
     self.assertFalse(segment_2.overlaps(segment_3))
     self.assertTrue(segment_1.overlaps(segment_4))
     self.assertFalse(segment_1.overlaps(segment_5))
     self.assertFalse(segment_1.overlaps(segment_6))
    def test_distance_to(self):
        point_1 = Point(0, 0)
        point_2 = Point(3, 4)

        self.assertEqual(point_1.distance_to(point_2), 5.0)
 def test_contains(self):
     segment = LineSegment(Point(0, 0), Point(5, 5))
     self.assertTrue(segment.contains(Point(2, 2)))
     self.assertTrue(segment.contains(Point(1, 1)))
     self.assertFalse(segment.contains(Point(6, 6)))
     self.assertFalse(segment.contains(Point(3, 2)))
 def test_closest_position_to_point(self):
     line_1 = Line(Point(0, 0), Point(5, 5))
     self.assertEqual(line_1.closest_position_to_point(Point(0, 5)),
                      Point(2.5, 2.5))
     self.assertEqual(line_1.closest_position_to_point(Point(5, 5)),
                      Point(5, 5))
 def test_distance_to(self):
     rectangle = Rectangle(0, 3, 0, 3)
     self.assertEqual(rectangle.distance_to(Point(1, 5)), 2)
     self.assertEqual(rectangle.distance_to(Point(4, 2)), 1)
     self.assertEqual(rectangle.distance_to(Point(1, 2)), 0)
 def test_contains(self):
     rectangle = Rectangle(-1, 1, -1, 1)
     self.assertTrue(rectangle.contains(Point(0, 0)))
     self.assertFalse(rectangle.contains(Point(10, 0)))
Example #10
0
 def test_equal(self):
     point_1 = Point(0, 0)
     point_2 = Point(0, 0)
     point_3 = Point(3, 4)
     self.assertTrue(point_1 == point_2)
     self.assertFalse(point_1 == point_3)
Example #11
0
    def test_closest_point_to(self):
        segment_1 = LineSegment(Point(0, 0), Point(5, 5))
        self.assertEqual(segment_1.closest_point_to(Point(1, 1)), Point(1, 1))
        self.assertEqual(segment_1.closest_point_to(Point(0, 5)),
                         Point(2.5, 2.5))
        self.assertEqual(segment_1.closest_point_to(Point(6, 6)), Point(5, 5))
        self.assertEqual(segment_1.closest_point_to(Point(-1, -6)),
                         Point(0, 0))

        segment_2 = LineSegment(Point(0, 0), Point(5, 0))
        self.assertEqual(segment_2.closest_point_to(Point(-1, 0)), Point(0, 0))
        self.assertEqual(segment_2.closest_point_to(Point(-1, 60)),
                         Point(0, 0))
        self.assertEqual(segment_2.closest_point_to(Point(3, 60)), Point(3, 0))
        self.assertEqual(segment_2.closest_point_to(Point(33, -60)),
                         Point(5, 0))

        segment_3 = LineSegment(Point(0, 0), Point(0, 5))
        self.assertEqual(segment_3.closest_point_to(Point(3, 3)), Point(0, 3))
        self.assertEqual(segment_3.closest_point_to(Point(30, 30)),
                         Point(0, 5))
        self.assertEqual(segment_3.closest_point_to(Point(0, 2)), Point(0, 2))
Example #12
0
 def test_contains(self):
   self.assertTrue(self.kd.contains(Point(4, 7)))
   self.assertFalse(self.kd.contains(Point(5, 7)))
Example #13
0
 def orientation(self, p):
     return Point.orientation(self.tail, self.head, p)