示例#1
0
def test_quaternion_generation():
    q = Quaternion()
    identity = (1, 0, 0, 0)
    assert all(i == j for i, j in zip(q, identity))

    q_id = Quaternion.identity()
    assert all(i == j for i, j in zip(q_id, identity))
示例#2
0
def test_quaternion_inverse():
    q1 = Quaternion(1, 2, 3, 4)
    inv = q1.inverse()
    assert q1 * inv == Quaternion.identity()

    with pytest.raises(ValueError):
        zero_q = Quaternion(0, 0, 0, 0)
        zero_q.inverse()
示例#3
0
def test_quaternion_pow():
    _ = Quaternion.identity()
    i = Quaternion(0, 1, 0, 0)
    j = Quaternion(0, 0, 1, 0)
    k = Quaternion(0, 0, 0, 1)

    i2 = i**2
    j2 = j**2
    k2 = k**2

    assert i2 == j2 == k2
示例#4
0
def test_quaternion_mul_basis():
    _ = Quaternion.identity()
    i = Quaternion(0, 1, 0, 0)
    j = Quaternion(0, 0, 1, 0)
    k = Quaternion(0, 0, 0, 1)

    # test identity multiplication
    assert _ * i == i
    assert i * _ == i
    assert j * _ == j
    assert _ * j == j
    assert _ * k == k
    assert k * _ == k

    i2 = i * i
    j2 = j * j
    k2 = k * k
    ijk = i * j * k
    assert i2 == j2 == k2 == ijk == -_
示例#5
0
def test_quaternion_div():
    q1 = Quaternion(1, 2, 3, 4)

    assert q1 / q1 == Quaternion.identity()