예제 #1
0
def test_eq():
    assert Shape.regular_polygon([0, 0], 1, 4) != Shape.regular_polygon([0, 0],
                                                                        1, 5)
    assert Shape.regular_polygon([0, 0], 1,
                                 4) == Shape.regular_polygon([0, 0],
                                                             1,
                                                             4,
                                                             start_angle=np.pi)
예제 #2
0
def test_update():
    shape = Shape.circle([0, 0], 1, velocity=[1, 1])
    shape.update(1)
    assert np.all(np.isclose(shape.center, [1, 1]))

    shape = Shape.regular_polygon([0, 0], 1, 6, angular_velocity=1, velocity=[-2, 2])
    shape.update(0.5)
    assert shape == Shape.regular_polygon([-1, 1], 1, 6, angular_velocity=1, velocity=[-2, 2], start_angle=0.5)
예제 #3
0
def main(screen=None):
    if screen:
        screens = pyglet.canvas.get_display().get_screens()
        window = pyglet.window.Window(screen=screens[screen], fullscreen=True)
    else:
        window = pyglet.window.Window(fullscreen=True)

    radius = np.diff(RADIUS_RANGE) * np.random.sample() + RADIUS_RANGE[0]
    shape_kwargs = {
        'velocity':
        np.random.sample(2) * np.diff(VELOCITY_RANGE) + VELOCITY_RANGE[0]
    }
    center = [window.width / 2, window.height / 2]
    shapes = [Shape.circle(center, radius, **shape_kwargs)]
    shapes.extend(
        Shape.regular_polygon(center,
                              radius,
                              verts,
                              start_angle=np.random.random() * 2 * np.pi /
                              verts,
                              **shape_kwargs)
        for verts in range(3, MAX_POLYGON_VERTICES + 1))
    change_angular_velocity(shapes)
    for shape in shapes[1:]:
        shape.enable(False)

    window.set_handlers(on_draw=partial(draw, window, shapes),
                        on_key_press=partial(on_key_press, shapes))
    pyglet.clock.schedule(partial(update, window, shapes))
    pyglet.app.run()
예제 #4
0
def test_regular_polygon_from_dict():
    spec = {
        'center': [0, 0],
        'radius': 1,
        'n_vertices': 10,
    }
    assert Shape.from_dict(spec) == Shape.regular_polygon([0, 0], 1, 10)
예제 #5
0
def test_regular_polygon_from_dict():
    spec = {
        'center': [0, 0],
        'radius': 1,
        'n_vertices': 10,
    }
    assert Shape.from_dict(spec) == Shape.regular_polygon([0, 0], 1, 10)
예제 #6
0
def test_rectangle():
    rect = Shape.rectangle([[-1, -1], [1, 1]])
    other_rect = Shape.regular_polygon([0, 0],
                                       np.sqrt(2),
                                       4,
                                       start_angle=np.pi / 4)
    assert rect == other_rect
예제 #7
0
def test_update():
    shape = Shape.circle([0, 0], 1, velocity=[1, 1])
    shape.update(1)
    assert np.all(np.isclose(shape.center, [1, 1]))

    shape = Shape.regular_polygon([0, 0],
                                  1,
                                  6,
                                  angular_velocity=1,
                                  velocity=[-2, 2])
    shape.update(0.5)
    assert shape == Shape.regular_polygon([-1, 1],
                                          1,
                                          6,
                                          angular_velocity=1,
                                          velocity=[-2, 2],
                                          start_angle=0.5)
예제 #8
0
def test_regular_polygon():
    shape = Shape.regular_polygon([0, 0], 1, 4)
    assert np.all(np.isclose(
        shape.vertices,
        [[1, 0],
         [0, 1],
         [-1, 0],
         [0, -1]]
    ))
예제 #9
0
def test_rotate():
    shape = Shape.rectangle([[-1, -1], [1, 1]])
    shape.rotate(np.pi/2)
    assert shape == Shape.rectangle([[-1, -1], [1, 1]])
    shape.rotate(np.pi/4)
    assert shape == Shape.regular_polygon([0, 0], np.sqrt(2), 4)

    shape = Shape.rectangle([[-1, -1], [1, 1]])
    shape.rotate(np.pi/2, [1, 1])
    assert shape == Shape.rectangle([[1, -1], [3, 1]])
예제 #10
0
def test_rotate():
    shape = Shape.rectangle([[-1, -1], [1, 1]])
    shape.rotate(np.pi / 2)
    assert shape == Shape.rectangle([[-1, -1], [1, 1]])
    shape.rotate(np.pi / 4)
    assert shape == Shape.regular_polygon([0, 0], np.sqrt(2), 4)

    shape = Shape.rectangle([[-1, -1], [1, 1]])
    shape.rotate(np.pi / 2, [1, 1])
    assert shape == Shape.rectangle([[1, -1], [3, 1]])
예제 #11
0
def main(screen=None):
    if screen:
        screens = pyglet.canvas.get_display().get_screens()
        window = pyglet.window.Window(screen=screens[screen], fullscreen=True)
    else:
        window = pyglet.window.Window(fullscreen=True)

    radius = np.diff(RADIUS_RANGE) * np.random.sample() + RADIUS_RANGE[0]
    shape_kwargs = {'velocity':  np.random.sample(2) * np.diff(VELOCITY_RANGE) + VELOCITY_RANGE[0]}
    center = [window.width/2, window.height/2]
    shapes = [Shape.circle(center, radius, **shape_kwargs)]
    shapes.extend(Shape.regular_polygon(center, radius, verts,
                                        start_angle=np.random.random() * 2 * np.pi / verts, **shape_kwargs)
                  for verts in range(3, MAX_POLYGON_VERTICES + 1))
    change_angular_velocity(shapes)
    for shape in shapes[1:]:
        shape.enable(False)

    window.set_handlers(on_draw=partial(draw, window, shapes),
                        on_key_press=partial(on_key_press, shapes))
    pyglet.clock.schedule(partial(update, window, shapes))
    pyglet.app.run()
예제 #12
0
def test_rectangle():
    rect = Shape.rectangle([[-1, -1], [1, 1]])
    other_rect = Shape.regular_polygon([0, 0], np.sqrt(2), 4, start_angle=np.pi/4)
    assert rect == other_rect
예제 #13
0
def test_circle():
    assert Shape.circle([0, 0], 1, n_vertices=50) == Shape.regular_polygon([0, 0], 1, 50)
예제 #14
0
def test_getitem():
    assert np.all(Shape.regular_polygon([0, 0], 1, 10)[0] == [1, 0])
예제 #15
0
def test_eq():
    assert Shape.regular_polygon([0, 0], 1, 4) != Shape.regular_polygon([0, 0], 1, 5)
    assert Shape.regular_polygon([0, 0], 1, 4) == Shape.regular_polygon([0, 0], 1, 4, start_angle=np.pi)
예제 #16
0
def test_regular_polygon():
    shape = Shape.regular_polygon([0, 0], 1, 4)
    assert np.all(
        np.isclose(shape.vertices, [[1, 0], [0, 1], [-1, 0], [0, -1]]))
예제 #17
0
def test_circle():
    assert Shape.circle([0, 0], 1,
                        n_vertices=50) == Shape.regular_polygon([0, 0], 1, 50)
예제 #18
0
def test_getitem():
    assert np.all(Shape.regular_polygon([0, 0], 1, 10)[0] == [1, 0])