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)
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)
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()
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)
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
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]] ))
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]])
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]])
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()
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
def test_circle(): assert Shape.circle([0, 0], 1, n_vertices=50) == Shape.regular_polygon([0, 0], 1, 50)
def test_getitem(): assert np.all(Shape.regular_polygon([0, 0], 1, 10)[0] == [1, 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]]))