TensorFlow 2.0 RC is available Learn more

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.