openalea.phenomenal.calibration.transformations.quaternion_slerp
- openalea.phenomenal.calibration.transformations.quaternion_slerp(quat0, quat1, fraction, spin=0, shortestpath=True)[source]
Return spherical linear interpolation between two quaternions.
>>> q0 = random_quaternion() >>> q1 = random_quaternion() >>> q = quaternion_slerp(q0, q1, 0) >>> numpy.allclose(q, q0) True >>> q = quaternion_slerp(q0, q1, 1, 1) >>> numpy.allclose(q, q1) True >>> q = quaternion_slerp(q0, q1, 0.5) >>> angle = math.acos(numpy.dot(q0, q)) >>> numpy.allclose(2, math.acos(numpy.dot(q0, q1)) / angle) or numpy.allclose(2, math.acos(-numpy.dot(q0, q1)) / angle) True