# How to Use Quaternion in Unity?

Quaternions are an extension of complex numbers and can be used to represent 3D rotations, spatial translations, and scaling. Invented by Sir William Rowan Hamilton in 1843, these numbers are not easy to understand intuitively. **With all honesty, I still don't fully know how it works.**

However, in Unity, we can handle the rotation without having to understand them fully. Now, Let’s look at some useful things we can do with Unity *Quaternion API*

## 1. Slerp

`public static Quaternion `

** Slerp**(Quaternion

**, Quaternion**

**a****, float**

**b****);**

**t**Slerp is a spherical interpolation between quaternions `a`

and `b`

by the ratio of `t`

. The parameter `t`

is clamped in between [0, 1].

## 2. LookRotation

`public static Quaternion `

** LookRotation**(Vector3

**, Vector3**

**forward****= Vector3.up);**

**upwards**Creates a rotation with the specified direction to look in and the vector that defines in which direction up is.

: direction to look in**forward****upwards**: vector that defines in which direction up is

## 3. Quaternion.Euler

`public static Quaternion `

** Euler**(float

**, float**

**x****, float**

**y****);**

**z**Returns a rotation that rotates z degrees around the z-axis, x degrees around the x-axis, and y degrees around the y-axis; applied in that order. We can set a new rotation to a game object with this method.

## 4. Quaternion.RotateTowards

`public static Quaternion `

** RotateTowards**(Quaternion

**, Quaternion**

**from****, float**

**to****);**

**maxDegreesDelta**Creates a rotation that rotates from one direction to another direction **maxDegreesDelta**** **as an angular step towards the target.

## 5. Rotate a vector

`Vector3 rotation = Quaternion.Euler(0,_angle,0) * _rotatingObject.right * _radius;`

Multiplying a vector with Quaternion.