def testUniform(self): exp_q = ["Quaternion: -0.5105 + -0.7011i + 0.0180j + 0.4976k", "Quaternion: 0.1267 + -0.5028i + -0.7474j + -0.4153k", "Quaternion: 0.1504 + 0.0998i + -0.3025j + 0.9359k", "Quaternion: 0.6418 + -0.5843i + 0.2151j + -0.4476k", "Quaternion: 0.9726 + -0.0334i + 0.2176j + -0.0742k", "Quaternion: 0.0096 + 0.0015i + -0.0778j + 0.9969k", "Quaternion: -0.4398 + 0.5669i + -0.2332j + -0.6564k", "Quaternion: 0.2429 + 0.2133i + -0.3556j + 0.8769k", "Quaternion: -0.0521 + -0.3024i + -0.8972j + 0.3175k"] exp_angle = [-2.0702, 2.8876, 2.8396, 1.7478, 0.4689, 3.1225, -2.2309, 2.6510, -3.0374] exp_axis = ["Axis3: -0.8153, 0.0209, 0.5787", "Axis3: -0.5069, -0.7535, -0.4187", "Axis3: 0.1009, -0.3059, 0.9467", "Axis3: -0.7619, 0.2806, -0.5837", "Axis3: -0.1437, 0.9367, -0.3193", "Axis3: 0.0015, -0.0778, 0.9970", "Axis3: 0.6312, -0.2597, -0.7309", "Axis3: 0.2199, -0.3666, 0.9040", "Axis3: -0.3028, -0.8985, 0.3179"] rng = LFSR(lfsr = 1070, bit_len = 16) q = Quaternion() for i in xrange(9): q.uniform(rng) angle, axis = q.get_angle_axis() self.assertEquals(str(q), exp_q[i]) self.assertLessEqual(angle - exp_angle[i], 0.0001) self.assertGreaterEqual(angle - exp_angle[i], -0.0001) self.assertEquals(str(axis), exp_axis[i])
def testQuaternionToAngleAxis(self): q = Quaternion(a = 0.707, b = -0.240, c = -0.665, d = 0.000) angle, axis = q.get_angle_axis() self.assertLessEqual(angle - 1.5710983268, 0.0000000001) self.assertGreaterEqual(angle - 1.5710983268, -0.0000000001) self.assertEquals(str(axis), "Axis3: -0.3395, -0.9406, 0.0000")