<!--
{
  "documentType" : "article",
  "framework" : "GLKit",
  "identifier" : "/documentation/GLKit/glkquaternion-pc6",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "GLKQuaternion"
}
-->

# GLKQuaternion

## Overview

The `GLKQuaternion` type defines a structure that represents a quaternion. A quaternion is defined by a scalar component `s` and an XYZ vector `v`. Quaternions are often used in graphics programming as a compact representation of a rotation of an object in three dimensions.

The functions that manipulate `GLKQuaternion` structures treat the inputs as immutable, instead returning a new quaternion that represent the results of the operation.

## Topics

### Creating Quaternions

[`GLKQuaternionMake`](/documentation/GLKit/GLKQuaternionMake(_:_:_:_:))

Returns a quaternion created from its separate components.

[`GLKQuaternionMakeWithArray`](/documentation/GLKit/GLKQuaternionMakeWithArray(_:))

Returns a quaternion created from an array of components.

[`GLKQuaternionMakeWithVector3`](/documentation/GLKit/GLKQuaternionMakeWithVector3(_:_:))

Returns a quaternion created from a vector and a scalar.

[`GLKQuaternionMakeWithAngleAndAxis`](/documentation/GLKit/GLKQuaternionMakeWithAngleAndAxis(_:_:_:_:))

Creates a quaternion that represents a rotation around an axis.

[`GLKQuaternionMakeWithAngleAndVector3Axis`](/documentation/GLKit/GLKQuaternionMakeWithAngleAndVector3Axis(_:_:))

Creates a quaternion that represents a rotation around an axis.

[`GLKQuaternionMakeWithMatrix3`](/documentation/GLKit/GLKQuaternionMakeWithMatrix3(_:))

Creates a quaternion from a rotation matrix.

[`GLKQuaternionMakeWithMatrix4`](/documentation/GLKit/GLKQuaternionMakeWithMatrix4(_:))

Creates a quaternion from a rotation matrix.

### Retrieving Information About a Quaternion

[`GLKQuaternionLength`](/documentation/GLKit/GLKQuaternionLength(_:))

Returns the length of a quaternion.

[`GLKQuaternionAxis`](/documentation/GLKit/GLKQuaternionAxis(_:))

Returns the axis of rotation of a quaternion.

[`GLKQuaternionAngle`](/documentation/GLKit/GLKQuaternionAngle(_:))

Returns the rotation angle of a quaternion.

### Performing Mathematical Operations on Quaternions

[`GLKQuaternionNormalize`](/documentation/GLKit/GLKQuaternionNormalize(_:))

Returns a normalized version of a quaternion.

[`GLKQuaternionInvert`](/documentation/GLKit/GLKQuaternionInvert(_:))

Returns an inverse of a quaternion.

[`GLKQuaternionConjugate`](/documentation/GLKit/GLKQuaternionConjugate(_:))

Returns the conjugate of a quaternion.

[`GLKQuaternionAdd`](/documentation/GLKit/GLKQuaternionAdd(_:_:))

Returns the sum of two quaternions.

[`GLKQuaternionSubtract`](/documentation/GLKit/GLKQuaternionSubtract(_:_:))

Returns the difference between two quaternions.

[`GLKQuaternionMultiply`](/documentation/GLKit/GLKQuaternionMultiply(_:_:))

Returns the product of two quaternions.

[`GLKQuaternionSlerp`](/documentation/GLKit/GLKQuaternionSlerp(_:_:_:))

Returns the spherical linear interpolation of two quaternions.

### Applying Quaternions to Vectors

[`GLKQuaternionRotateVector3`](/documentation/GLKit/GLKQuaternionRotateVector3(_:_:))

Returns a new vector that is calculated by applying a quaternion rotation to a vector.

[`GLKQuaternionRotateVector3Array`](/documentation/GLKit/GLKQuaternionRotateVector3Array(_:_:_:))

Applies a quaternion rotation to an array of vectors.

[`GLKQuaternionRotateVector4`](/documentation/GLKit/GLKQuaternionRotateVector4(_:_:))

Returns a new vector calculated by applying a quaternion rotation to a vector.

[`GLKQuaternionRotateVector4Array`](/documentation/GLKit/GLKQuaternionRotateVector4Array(_:_:_:))

Applies a quaternion rotation to an array of vectors.

### Data Types

[`GLKQuaternion`](/documentation/GLKit/GLKQuaternion)

A representation of a quaternion.

### Constants

[`GLKQuaternionIdentity`](/documentation/GLKit/GLKQuaternionIdentity)

An identity quaternion.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)