Exemplo n.º 1
0
def test_transfromation_movement(
    vp_width,
    vp_height,
    pixel_ratio,
    cam_pos,
    point,
    delta,
):
    cam = Camera(
        viewport=(0, 0, vp_width, vp_height),
        pixel_ratio=pixel_ratio,
    )
    cam.position = cam_pos

    assume(delta.length != 0)

    point_moved = point + delta

    assume(point_moved !=
           point)  # This will happen when delta is too small to make an effect

    note(f"point moved: {point_moved}")

    diff = cam.translate_to_frame(point_moved) - cam.translate_to_frame(point)
    note(f"frame diff: {diff}")
    assert isclose(delta.length, pixel_ratio * diff.length, rel_tol=1e-4)
    diff = cam.translate_to_viewport(point_moved) - cam.translate_to_viewport(
        point)
    note(f"viewport diff: {diff}")
    assert isclose(diff.length, pixel_ratio * delta.length, rel_tol=1e-4)
Exemplo n.º 2
0
def test_transfromation_roundtrip(vp_width, vp_height, pixel_ratio, cam_pos,
                                  point):
    cam = Camera(
        viewport=(0, 0, vp_width, vp_height),
        pixel_ratio=pixel_ratio,
    )
    cam.position = cam_pos

    note(
        f"frame: ({cam.frame_left}, {cam.frame_bottom}) -> ({cam.frame_right}, {cam.frame_top})"
    )

    # Some underflow/loss of precision problems
    assume(cam.frame_left != cam.frame_right)
    assume(cam.frame_top != cam.frame_bottom)

    note(f"point: {point}")

    point_frame = cam.translate_to_frame(point)
    note(f"point->frame: {point_frame}")
    point_viewport = cam.translate_to_viewport(point_frame)
    note(f"point->frame->viewport: {point_viewport}")
    assert point_viewport.isclose(point, rel_tol=1e-5, rel_to=[cam.position])

    point_viewport = cam.translate_to_viewport(point)
    note(f"point->viewport: {point_viewport}")
    point_frame = cam.translate_to_frame(point_viewport)
    note(f"point->viewport->frame: {point_frame}")
    assert point_frame.isclose(point, rel_tol=1e-5, rel_to=[cam.position])
Exemplo n.º 3
0
def test_camera_translate_to_viewport():
    cam = Camera(viewport=(0, 0, 800, 600), pixel_ratio=80)
    assert cam.position == Vector(0, 0)
    assert cam.translate_to_viewport(Vector(0, 0)) == Vector(400, 300)
    assert cam.translate_to_viewport(Vector(2, -1)) == Vector(560, 220)
    cam.position = Vector(5, 5)
    assert cam.translate_to_viewport(Vector(5, 5)) == Vector(400, 300)
    assert cam.translate_to_viewport(Vector(7, 4)) == Vector(560, 220)
Exemplo n.º 4
0
def test_camera_translate_to_frame():
    cam = Camera(viewport=(0, 0, 800, 600), pixel_ratio=80)
    assert cam.position == Vector(0, 0)
    assert cam.frame_top == 3.75
    assert cam.frame_bottom == -3.75
    assert cam.frame_left == -5
    assert cam.frame_right == 5
    assert cam.translate_to_frame(Vector(400, 300)) == Vector(0, 0)
    assert cam.translate_to_frame(Vector(560, 220)) == Vector(2, 1)
    cam.position = Vector(5, 5)
    assert cam.translate_to_frame(Vector(400, 300)) == Vector(5, 5)
    assert cam.translate_to_frame(Vector(560, 220)) == Vector(7, 6)
Exemplo n.º 5
0
def test_transformation_roundtrip(vp_width, vp_height, target_width, cam_pos, point):
    cam = Camera(None, target_width, (vp_width, vp_height))
    cam.position = cam_pos

    note(f"frame: ({cam.left}, {cam.bottom}) -> ({cam.right}, {cam.top})")

    # Some underflow/loss of precision problems
    assume(cam.left != cam.right)
    assume(cam.top != cam.bottom)

    note(f"point: {point}")

    point_frame = cam.translate_point_to_screen(point)
    note(f"point->frame: {point_frame}")
    point_viewport = cam.translate_point_to_game_space(point_frame)
    note(f"point->frame->viewport: {point_viewport}")
    assert point_viewport.isclose(point, rel_tol=1e-5, rel_to=[cam.position])

    point_viewport = cam.translate_point_to_game_space(point)
    note(f"point->viewport: {point_viewport}")
    point_frame = cam.translate_point_to_screen(point_viewport)
    note(f"point->viewport->frame: {point_frame}")
    assert point_frame.isclose(point, rel_tol=1e-5, rel_to=[cam.position])
Exemplo n.º 6
0
def test_camera_move():
    cam = Camera()
    cam.position = Vector(500, 500)
    assert cam.position == Vector(500, 500)
    cam.position += Vector(100, 100)
    assert cam.position == Vector(600, 600)