# Quaternion

Artifact: [androidx.xr.runtime:runtime](https://developer.android.com/jetpack/androidx/releases/xr-runtime) [View Source](https://cs.android.com/search?q=file:androidx/xr/runtime/math/Quaternion.kt+class:androidx.xr.runtime.math.Quaternion) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

*** ** * ** ***


```
class Quaternion
```

<br />

*** ** * ** ***

Rotation component in three-dimensional space. Any vector can be provided and the resulting quaternion will be normalized at construction time. A zero-length input (all components zero) cannot be normalized and falls back to the identity rotation.

## Summary

| ### Public companion functions |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#angle(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion)(start: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion, end: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion)` Returns the angle between `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#angle(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion)` and `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#angle(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion)` quaternion in degrees. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#dot(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion)(lhs: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion, rhs: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion)` Returns the dot product of two quaternions. |
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#fromAxisAngle(androidx.xr.runtime.math.Vector3,kotlin.Float)(axis: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3, degrees: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Creates a new quaternion using an axis/angle to define the rotation. |
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#fromEulerAngles(androidx.xr.runtime.math.Vector3)(eulerAngles: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3)` Creates a quaternion using Euler angles (in degrees) in YXZ (yaw, pitch, roll) order. |
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#fromEulerAngles(kotlin.Float,kotlin.Float,kotlin.Float)(pitch: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, yaw: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, roll: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Creates a quaternion using Euler angles (in degrees) in YXZ (yaw, pitch, roll) order. |
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#fromLookTowards(androidx.xr.runtime.math.Vector3,androidx.xr.runtime.math.Vector3)(forward: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3, up: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3)` Returns a new quaternion with the specified forward and upward directions. |
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#fromRotation(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion)(start: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion, end: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion)` Returns a new quaternion representing the rotation from one quaternion to another. |
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#fromRotation(androidx.xr.runtime.math.Vector3,androidx.xr.runtime.math.Vector3)(start: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3, end: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3)` Returns a new quaternion representing the rotation from one vector to another. |
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#lerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)(start: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion, end: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion, ratio: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Linearly interpolates between `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#lerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)` and `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#lerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)` by `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#lerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)`. |
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#slerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)(start: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion, end: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion, ratio: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Spherically interpolates between `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#slerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)` and `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#slerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)` by `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#slerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)`. |

| ### Public companion properties |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#Identity()` |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#Quaternion(androidx.xr.runtime.math.Quaternion)(other: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion)` Creates a new quaternion with the same values as the `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#(androidx.xr.runtime.math.Quaternion)` quaternion. |
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#Quaternion(kotlin.Float,kotlin.Float,kotlin.Float,kotlin.Float)(x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, z: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, w: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` |

| ### Public functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#copy(kotlin.Float,kotlin.Float,kotlin.Float,kotlin.Float)(x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, z: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, w: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Returns a copy of the quaternion. |
| `inline infix https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#dot(androidx.xr.runtime.math.Quaternion)(other: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion)` Returns the dot product of this quaternion and the `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#dot(androidx.xr.runtime.math.Quaternion)` quaternion. |
| `open operator https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#equals(kotlin.Any)(other: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?)` Returns true if this quaternion is equal to the `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#equals(kotlin.Any)`. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#hashCode()()` |
| `inline operator https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#minus(androidx.xr.runtime.math.Quaternion)(other: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion)` Returns a new quaternion with the difference of this quaternion and the `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#minus(androidx.xr.runtime.math.Quaternion)` quaternion. |
| `inline operator https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#plus(androidx.xr.runtime.math.Quaternion)(other: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion)` Returns a new quaternion with the sum of this quaternion and `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#plus(androidx.xr.runtime.math.Quaternion)` quaternion. |
| `inline operator https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#times(androidx.xr.runtime.math.Quaternion)(other: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion)` Returns a new quaternion with the product of this quaternion and the `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#times(androidx.xr.runtime.math.Quaternion)` quaternion. |
| `inline operator https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#times(androidx.xr.runtime.math.Vector3)(src: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3)` Rotates a `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3` by this quaternion. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#toString()()` |
| `inline operator https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#unaryMinus()()` Flips the sign of the quaternion, but represents the same rotation. |

| ### Public properties |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-pair/index.html<https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html>` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#axisAngle()` Returns this quaternion as an axis/angle (in degrees) pair. |
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#eulerAngles()` Returns this quaternion as Euler angles (in degrees) applied in YXZ (yaw, pitch, roll) order. |
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#inverse()` Returns a new quaternion with the inverse rotation. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#w()` The normalized w component of the quaternion. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#x()` The normalized x component of the quaternion. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#y()` The normalized y component of the quaternion. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#z()` The normalized z component of the quaternion. |

## Public companion functions

### angle

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
fun angle(start: Quaternion, end: Quaternion): Float
```

Returns the angle between `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#angle(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion)` and `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#angle(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion)` quaternion in degrees.

| Parameters |
|---|---|
| `start: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | the starting quaternion |
| `end: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | the ending quaternion |

### dot

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
fun dot(lhs: Quaternion, rhs: Quaternion): Float
```

Returns the dot product of two quaternions.

| Parameters |
|---|---|
| `lhs: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | the first quaternion |
| `rhs: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | the second quaternion |

### fromAxisAngle

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
fun fromAxisAngle(axis: Vector3, degrees: Float): Quaternion
```

Creates a new quaternion using an axis/angle to define the rotation.

| Parameters |
|---|---|
| `axis: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3` | the axis of rotation |
| `degrees: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | the angle of rotation in degrees |

### fromEulerAngles

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
fun fromEulerAngles(eulerAngles: Vector3): Quaternion
```

Creates a quaternion using Euler angles (in degrees) in YXZ (yaw, pitch, roll) order.

| Parameters |
|---|---|
| `eulerAngles: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3` | the Euler angles in degrees |

### fromEulerAngles

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
fun fromEulerAngles(pitch: Float, yaw: Float, roll: Float): Quaternion
```

Creates a quaternion using Euler angles (in degrees) in YXZ (yaw, pitch, roll) order.

| Parameters |
|---|---|
| `pitch: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | the pitch in degrees |
| `yaw: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | the yaw in degrees |
| `roll: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | the roll in degrees |

### fromLookTowards

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
fun fromLookTowards(forward: Vector3, up: Vector3): Quaternion
```

Returns a new quaternion with the specified forward and upward directions. If `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#fromLookTowards(androidx.xr.runtime.math.Vector3,androidx.xr.runtime.math.Vector3)` is parallel (or antiparallel) to `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#fromLookTowards(androidx.xr.runtime.math.Vector3,androidx.xr.runtime.math.Vector3)`, an alternate up axis is chosen so the resulting orientation basis is still well-defined.

| Parameters |
|---|---|
| `forward: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3` | the forward direction |
| `up: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3` | the upward direction |

### fromRotation

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
fun fromRotation(start: Quaternion, end: Quaternion): Quaternion
```

Returns a new quaternion representing the rotation from one quaternion to another.

| Parameters |
|---|---|
| `start: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | the starting quaternion |
| `end: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | the ending quaternion |

### fromRotation

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
fun fromRotation(start: Vector3, end: Vector3): Quaternion
```

Returns a new quaternion representing the rotation from one vector to another.

| Parameters |
|---|---|
| `start: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3` | the starting vector |
| `end: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3` | the ending vector |

### lerp

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
fun lerp(start: Quaternion, end: Quaternion, ratio: Float): Quaternion
```

Linearly interpolates between `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#lerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)` and `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#lerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)` by `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#lerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)`.

If `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#lerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)` is outside of the range `[0, 1]`, the returned quaternion will be extrapolated.

| Parameters |
|---|---|
| `start: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | the starting quaternion |
| `end: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | the ending quaternion |
| `ratio: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | the interpolation ratio |

### slerp

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
fun slerp(start: Quaternion, end: Quaternion, ratio: Float): Quaternion
```

Spherically interpolates between `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#slerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)` and `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#slerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)` by `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#slerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)`. If `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#slerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)` is 0, this returns `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#slerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)`. As `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#slerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)` approaches 1, the result of this function may approach either `+end` or `-end` (whichever is closest to `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#slerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)`).

If `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion.Companion#slerp(androidx.xr.runtime.math.Quaternion,androidx.xr.runtime.math.Quaternion,kotlin.Float)` is outside of the range `[0, 1]`, the returned quaternion will be extrapolated.

| Parameters |
|---|---|
| `start: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | the starting quaternion |
| `end: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion` | the ending quaternion |
| `ratio: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | the interpolation ratio |

## Public companion properties

### Identity

```
val Identity: Quaternion
```

## Public constructors

### Quaternion

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
Quaternion(other: Quaternion)
```

Creates a new quaternion with the same values as the `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#(androidx.xr.runtime.math.Quaternion)` quaternion.

### Quaternion

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
Quaternion(x: Float = 0.0f, y: Float = 0.0f, z: Float = 0.0f, w: Float = 1.0f)
```

## Public functions

### copy

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
fun copy(x: Float = this.x, y: Float = this.y, z: Float = this.z, w: Float = this.w): Quaternion
```

Returns a copy of the quaternion.

| Parameters |
|---|---|
| `x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = this.x` | the new x value for the copied quaternion |
| `y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = this.y` | the new y value for the copied quaternion |
| `z: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = this.z` | the new z value for the copied quaternion |
| `w: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = this.w` | the new w value for the copied quaternion |

### dot

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
inline infix fun dot(other: Quaternion): Float
```

Returns the dot product of this quaternion and the `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#dot(androidx.xr.runtime.math.Quaternion)` quaternion.

### equals

```
open operator fun equals(other: Any?): Boolean
```

Returns true if this quaternion is equal to the `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#equals(kotlin.Any)`.

### hashCode

```
open fun hashCode(): Int
```

### minus

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
inline operator fun minus(other: Quaternion): Quaternion
```

Returns a new quaternion with the difference of this quaternion and the `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#minus(androidx.xr.runtime.math.Quaternion)` quaternion.

### plus

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
inline operator fun plus(other: Quaternion): Quaternion
```

Returns a new quaternion with the sum of this quaternion and `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#plus(androidx.xr.runtime.math.Quaternion)` quaternion.

### times

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
inline operator fun times(other: Quaternion): Quaternion
```

Returns a new quaternion with the product of this quaternion and the `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#times(androidx.xr.runtime.math.Quaternion)` quaternion. The order of the multiplication is this \* `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Quaternion#times(androidx.xr.runtime.math.Quaternion)`.

### times

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
inline operator fun times(src: Vector3): Vector3
```

Rotates a `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3` by this quaternion.

| Parameters |
|---|---|
| `src: https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/Vector3` | the vector to rotate |

### toString

```
open fun toString(): String
```

### unaryMinus

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
inline operator fun unaryMinus(): Quaternion
```

Flips the sign of the quaternion, but represents the same rotation.

## Public properties

### axisAngle

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
val axisAngle: Pair<Vector3, Float>
```

Returns this quaternion as an axis/angle (in degrees) pair.

### eulerAngles

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
val eulerAngles: Vector3
```

Returns this quaternion as Euler angles (in degrees) applied in YXZ (yaw, pitch, roll) order.

### inverse

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
val inverse: Quaternion
```

Returns a new quaternion with the inverse rotation. Assumes unit length.

### w

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
val w: Float
```

The normalized w component of the quaternion.

### x

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
val x: Float
```

The normalized x component of the quaternion.

### y

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
val y: Float
```

The normalized y component of the quaternion.

### z

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-runtime#1.0.0)

```
val z: Float
```

The normalized z component of the quaternion.