nibabel.quaternions

Functions to operate on, or return, quaternions.

The module also includes functions for the closely related angle, axis pair as a specification for rotation.

Quaternions here consist of 4 values w, x, y, z, where w is the real (scalar) part, and x, y, z are the complex (vector) part.

Note - rotation matrices here apply to column vectors, that is, they are applied on the left of the vector. For example:

>>> import numpy as np
>>> q = [0, 1, 0, 0] # 180 degree rotation around axis 0
>>> M = quat2mat(q) # from this module
>>> vec = np.array([1, 2, 3]).reshape((3,1)) # column vector
>>> tvec = np.dot(M, vec)

Functions

angle_axis2mat(theta, vector[, is_normalized])

Rotation matrix of angle theta around vector

angle_axis2quat(theta, vector[, is_normalized])

Quaternion for rotation of angle theta around vector

conjugate(q)

Conjugate of quaternion

eye()

Return identity quaternion

fillpositive(xyz[, w2_thresh])

Compute unit quaternion from last 3 values

inverse(q)

Return multiplicative inverse of quaternion q

isunit(q)

Return True is this is very nearly a unit quaternion

mat2quat(M)

Calculate quaternion corresponding to given rotation matrix

mult(q1, q2)

Multiply two quaternions

nearly_equivalent(q1, q2[, rtol, atol])

Returns True if q1 and q2 give near equivalent transforms

norm(q)

Return norm of quaternion

quat2angle_axis(quat[, identity_thresh])

Convert quaternion to rotation of angle around axis

quat2mat(q)

Calculate rotation matrix corresponding to quaternion

rotate_vector(v, q)

Apply transformation in quaternion q to vector v