예제 #1
0
파일: test_geometry.py 프로젝트: labuzm/kaa
def test_vector():
    v1 = Vector.xy(1.)
    assert v1.x == 1. and v1.y == 1.
    v2 = Vector(2., 2.)
    assert v2.x == 2. and v2.y == 2.
    assert v1 == Vector(1., 1.)
    assert v2 == Vector(2., 2.)

    zero = Vector(0, 0)
    assert not zero
    assert zero.is_zero()

    assert v1 + v2 == Vector.xy(3)
    assert Vector.xy(3.) - v2 == v1
    assert v1 * 10 == Vector.xy(10.)
    assert Vector.xy(10.) / 10 == v1
    assert -v1 == Vector.xy(-1.)

    rotated_vector = Vector(1, 0).rotate_angle_degrees(90)
    assert pytest.approx(rotated_vector.x) == 0
    assert pytest.approx(rotated_vector.y) == 1.

    v = Vector.from_angle_degrees(90)
    assert pytest.approx(rotated_vector.x) == 0
    assert pytest.approx(rotated_vector.y) == 1.
    assert v.to_angle_degrees() == 90
    assert Vector(1., 0).angle_between_degrees(Vector(0, 1.)) == 90

    assert Vector(1., 0).normalize().dot(Vector(1, 1.).normalize()) > 0
    assert Vector(1., 0).normalize().dot(Vector(0, 1.).normalize()) == 0
    assert Vector(1., 0).normalize().dot(Vector(-1, 1.).normalize()) < 0

    assert Vector(0, 0).distance(Vector(10., 0)) == 10.

    v = Vector(10., 10.)
    assert v.normalize() == v / v.length()
    assert v.length() == math.sqrt(v.x**2 + v.y**2)
예제 #2
0
파일: main.py 프로젝트: ylwb/kaa
    m = 2.5
    a_deg = 90

    fmt_print("bool({})\n --> {}", v0, bool(v0))
    fmt_print("bool({})\n --> {}", v1, bool(v1))
    fmt_print("{} == {}\n --> {}", v1, v2, v1 == v2)
    fmt_print("{} == {}\n --> {}", v1, v1, v1 == v1)
    fmt_print("{} + {}\n --> {}", v1, v2, v1 + v2)
    fmt_print("{} - {}\n --> {}", v1, v2, v1 - v2)
    fmt_print("{} * {}\n --> {}", v1, m, v1 * m)
    fmt_print("{} / {}\n --> {}", v1, m, v1 / m)
    fmt_print("{} dot {}\n --> {}", v1, v2, v1.dot(v2))
    fmt_print("{} distance to {}\n --> {}", v1, v2, v1.distance(v2))
    fmt_print("negative {}\n --> {}", v1, -v1)
    fmt_print("normalized {}\n --> {}", v1, v1.normalize())
    fmt_print("length of {}\n --> {}", v1, v1.length())
    fmt_print("{} rotated by {} degrees\n --> {}", v1, a_deg,
              v1.rotate_angle_degrees(a_deg))
    fmt_print("vector from angle (degrees) {}\n --> {}", a_deg,
              Vector.from_angle_degrees(a_deg))
    fmt_print("vector {} to angle (degrees)\n --> {}", v1,
              v1.to_angle_degrees())
    fmt_print("vector {} to angle (degrees)\n --> {}", v2,
              v2.to_angle_degrees())
    fmt_print("vector {} to angle (degrees)\n --> {}", v_up,
              v_up.to_angle_degrees())
    fmt_print("vector {} to angle (degrees)\n --> {}", v_down,
              v_down.to_angle_degrees())

    points = [Vector(0., 0.), Vector(1., 0.), Vector(0., 1.)]
    rev_points = list(reversed(points))