# Module: tfg.geometry.transformation.quaternion

This module implements TensorFlow quaternion utility functions.

A quaternion is written as $$q = xi + yj + zk + w$$, where $$i,j,k$$ forms the three bases of the imaginary part. The functions implemented in this file use the Hamilton convention where $$i^2 = j^2 = k^2 = ijk = -1$$. A quaternion is stored in a 4-D vector $$[x, y, z, w]^T$$.

## Functions

between_two_vectors_3d(...): Computes quaternion over the shortest arc between two vectors.

conjugate(...): Computes the conjugate of a quaternion.

from_axis_angle(...): Converts an axis-angle representation to a quaternion.

from_euler(...): Converts an Euler angle representation to a quaternion.

from_euler_with_small_angles_approximation(...): Converts small Euler angles to quaternions.

from_rotation_matrix(...): Converts a rotation matrix representation to a quaternion.

inverse(...): Computes the inverse of a quaternion.

is_normalized(...): Determines if quaternion is normalized quaternion or not.

multiply(...): Multiplies two quaternions.

normalize(...): Normalizes a quaternion.

normalized_random_uniform(...): Random normalized quaternion following a uniform distribution law on SO(3).

normalized_random_uniform_initializer(...): Random unit quaternion initializer.

relative_angle(...): Computes the unsigned relative rotation angle between 2 unit quaternions.

rotate(...): Rotates a point using a quaternion.

[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }]
[{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }]