warp.quat\_rotate ================= .. currentmodule:: warp._src.lang .. function:: quat_rotate(quat: Quaternion[Float], vec: Vector[Float, Literal[3]]) -> Vector[Float, Literal[3]] .. wp-function-tags:: :kernel: true :python: true :differentiable: true Return ``vec`` rotated by the rotation that ``quat`` represents. Quaternion products apply rotations from right to left, so ``quat_rotate(a * b, vec)`` equals ``quat_rotate(a, quat_rotate(b, vec))``. :param quat: Rotation quaternion, with unit length. Gradient updates do not preserve its unit length, so re-normalize it after each update. :param vec: Vector to rotate. :returns: The rotated vector, equal to ``quat_to_matrix(quat) @ vec``.