コード例 #1
0
    def test_type(self):
        # Unit quaternion can be unitary or general:
        assert isinstance(GeneralQuaternion.unit(), GeneralQuaternion)
        assert isinstance(Quaternion.unit(), Quaternion)

        # Unit quaternion can not be unitary:
        assert isinstance(GeneralQuaternion.zero(), GeneralQuaternion)
        assert not isinstance(Quaternion.zero(), Quaternion)
        assert isinstance(Quaternion.zero(), GeneralQuaternion)

        assert isinstance(exp(GeneralQuaternion(1, 2, 3, 4)), GeneralQuaternion)
        assert isinstance(exp(Quaternion(1, 2, 3, 4)), Quaternion)

        assert isinstance(log(Quaternion(1, 2, 3, 4)), GeneralQuaternion)
        assert not isinstance(log(Quaternion(1, 2, 3, 4)), Quaternion)
コード例 #2
0
 def test_log_identity(self):
     assert log(GeneralQuaternion.unit()) == GeneralQuaternion.zero()
コード例 #3
0
 def test_log_identical_both_ways(self, arr):
     assume(np.linalg.norm(arr) > DEFAULT_TOLERANCE)
     q = GeneralQuaternion(*arr)
     assert log(q) == q.log()
コード例 #4
0
 def test_exp_log(self, arr):
     assume(np.linalg.norm(arr) > DEFAULT_TOLERANCE)
     q = GeneralQuaternion(*arr).normalized()
     assert exp(log(q)) == q
     assert log(exp(q)) == GeneralQuaternion(*q.coordinates)
コード例 #5
0
 def test_exp_log(self, arr):
     assume(np.linalg.norm(arr) > DEFAULT_TOLERANCE)
     q = GeneralQuaternion(*arr).normalized()
     assert exp(log(q)) == q
     assert (log(exp(q)).imaginary.tolist() == pytest.approx(
         q.imaginary.tolist()))  # log defined up to real