def test_circle_circle(): # functionality tested in test_r2_circle circle1 = Circle(100, P2(0, 0)) circle2 = Circle(100, P2(100, 100)) assert {P2(0.0, 100.0), P2(100.0, 0.0)} == intersect(circle1, circle2)
def test_does_intersect_circle_circle(): c1 = Circle(100) c2 = Circle(100, P2(500, 500)) assert not does_intersect(c1, c2) assert not does_intersect(c1, Circle(50)) assert does_intersect(c1, Circle(100, P2(10, 10)))
def test_circle_create(circle_00, circle_11): with pytest.raises(ValueError): Circle(0) with pytest.raises(ValueError): Circle(-100) assert circle_00.center == P2(0, 0) assert circle_00.radius == 100 assert circle_11.center == P2(1, 1) assert circle_11.radius == 100
def test_line_circle(): circle = Circle(100, P2(1, 1)) x = Line(1, 0, 1) points = intersect(x, circle) assert {P2(1.0, 101.0), P2(1.0, -99.0)} == points points = intersect(circle, x) assert {P2(1.0, 101.0), P2(1.0, -99.0)} == points tangent_circle = Circle(1, P2(2, 0)) assert {P2(1.0, 0.0)} == intersect(tangent_circle, x) assert {P2(1.0, 0.0)} == intersect(x, tangent_circle) horz = Line(0, 1, 1) assert {P2(-99.0, 1.0), P2(101, 1.0)} == intersect(horz, circle) assert {P2(-99.0, 1.0), P2(101, 1.0)} == intersect(circle, horz) far_line = Line(1, 0, 200) assert set() == intersect(far_line, circle) assert set() == intersect(circle, far_line)
def test_line_segment_circle(): circle = Circle(100, P2(1, 0)) x = LineSegment(P2(1, -1000), P2(1, 1000)) points = intersect(x, circle) assert {P2(1.0, 100.0), P2(1.0, -100.0)} == points points = intersect(circle, x) assert {P2(1.0, 100.0), P2(1.0, -100.0)} == points x2 = LineSegment(P2(1, -1000), P2(1, 0)) assert {P2(1.0, -100.0)} == intersect(circle, x2) assert {P2(1.0, -100.0)} == intersect(x2, circle)
def test_does_intersect_circle_line_segment(): circle = Circle(100) ls_right = LineSegment(P2(50, 0), P2(150, 0)) assert does_intersect(circle, ls_right) assert does_intersect(ls_right, circle) ls_left = LineSegment(P2(-50, -50), P2(-100, -100)) assert does_intersect(circle, ls_left) assert does_intersect(ls_left, circle) ls_inside = LineSegment(P2(-25, -25), P2(25, 25)) assert not does_intersect(circle, ls_inside) assert not does_intersect(ls_inside, circle) ls_outside = LineSegment(P2(0, 175), P2(175, 0)) assert not does_intersect(circle, ls_outside) assert not does_intersect(ls_outside, circle)
def test_does_intersect_line_circle(): circle = Circle(99, P2(100, 100)) assert not does_intersect(circle, Line(1, 1, 0)) assert not does_intersect(Line(1, 1, 0), circle) assert does_intersect(circle, Line(1, -1, 0)) assert does_intersect(Line(1, -1, 0), circle) assert does_intersect(circle, Line(1, 0, 100)) assert does_intersect(Line(1, 0, 100), circle) assert does_intersect(circle, Line(0, 1, 100)) assert does_intersect(Line(0, 1, 100), circle) assert not does_intersect(circle, Line(1, 0, 0)) assert not does_intersect(Line(1, 0, 0), circle) assert does_intersect(circle, Line(1, 0, 1)) assert does_intersect(Line(1, 0, 1), circle)
def circle_00(): return Circle(100)
def test_circle_intersection(circle_00, circle_11): far_circle = Circle(100, P2(500, 500)) with pytest.raises(ValueError): circle_00.intersection(circle_00) with pytest.raises(TypeError): circle_00.intersection(None) assert circle_00.intersection(far_circle) == set() assert far_circle.intersection(circle_00) == set() contained_circle = Circle(50) assert circle_00.intersection(contained_circle) == set() assert contained_circle.intersection(circle_00) == set() tangent_circle = Circle(100, P2(200, 0)) assert circle_00.intersection(tangent_circle) == {P2(100.0, 0.0)} assert tangent_circle.intersection(circle_00) == {P2(100.0, 0.0)} intersecting_circle = Circle(100, P2(101, 101)) assert intersecting_circle.intersection(circle_11) == { P2(101.0, 1.0), P2(1.0, 101.0), } assert circle_11.intersection(intersecting_circle) == { P2(101.0, 1.0), P2(1.0, 101.0), }
def circle_11(): return Circle(100, P2(1, 1))
def test_rasterize_circle(): expected = ApproxSet([P2(1, 0), P2(0, 1), P2(-1, 0), P2(0, -1)]) assert expected == rasterize(Circle(1), n=4) expected = ApproxSet([P2(2, 1), P2(1, 2), P2(0, 1), P2(1, 0)]) assert expected == rasterize(Circle(1, P2(1, 1)), n=4)