def vector_rotated_by_quaternion_reversed(v: Vector3r, q: Quaternionr) -> Vector3r: # NOTE we could have used q.conjugate(), if we assumed q was a unit quaternion return vector_rotated_by_quaternion(v, q.inverse())
def quaternion_that_rotates_orientation( from_orientation: Quaternionr, to_orientation: Quaternionr, ) -> Quaternionr: """ Returns the quaternion that rotates `from_orientation` into `to_orientation`. """ return to_orientation * from_orientation.inverse()