# tfg.math.interpolation.slerp.quaternion_weights

Calculates slerp weights for two normalized quaternions.

``````tfg.math.interpolation.slerp.quaternion_weights(
quaternion1,
quaternion2,
percent,
eps=None,
name=None
)
``````

Defined in `math/interpolation/slerp.py`.

Given a percent and two normalized quaternions, this function returns the slerp weights. It can also produce extrapolation weights when percent is outside of the [0, 1] range. It reduces to lerp when input quaternions are almost parallel or anti-parallel. Input quaternions are assumed to be normalized. The tf.graphics debug flag TFG_ADD_ASSERTS_TO_GRAPH defined in tfg_flags.py can be set to add assertions to the graph that check whether the inputs are normalized, and whether Inf or Nan values are produced.

#### Note:

In the following, A1 to An are optional batch dimensions.

#### Args:

• `quaternion1`: A tensor of shape `[A1, ... , An, 4]` storing normalized quaternions in its last dimension.
• `quaternion2`: A tensor of shape `[A1, ... , An, 4]` storing normalized quaternions in its last dimension.
• `percent`: A `float` or a tensor with a shape broadcastable to the shape ```[A1, ... , An]```.
• `eps`: A `float` used to make operations safe. When left as None, the function automatically picks the best epsilon based on the dtype and the operation.
• `name`: A name for this op. Defaults to "quaternion_weights".

#### Raises:

• `ValueError`: If the shapes of quaternions do not match, if the last dimensions of quaternions are not 4, or if percent is neither a float, nor a tensor with last dimension 1.

#### Returns:

Two tensors of shape `[A1, ... , An, 1]` each, which are the two slerp weights for each quaternion.