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)
Пример #2
0
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)))
Пример #3
0
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)
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
def circle_00():
    return Circle(100)
Пример #9
0
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),
    }
Пример #10
0
def circle_11():
    return Circle(100, P2(1, 1))
Пример #11
0
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)