---
title: GLKQuaternion
framework: GLKit
role: collectionGroup
role_heading: API Collection
path: glkit/glkquaternion-pc6
---

# GLKQuaternion

## Overview

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(_:_:_:_:)](glkit/glkquaternionmake(_:_:_:_:).md)
- [GLKQuaternionMakeWithArray(_:)](glkit/glkquaternionmakewitharray(_:).md)
- [GLKQuaternionMakeWithVector3(_:_:)](glkit/glkquaternionmakewithvector3(_:_:).md)
- [GLKQuaternionMakeWithAngleAndAxis(_:_:_:_:)](glkit/glkquaternionmakewithangleandaxis(_:_:_:_:).md)
- [GLKQuaternionMakeWithAngleAndVector3Axis(_:_:)](glkit/glkquaternionmakewithangleandvector3axis(_:_:).md)
- [GLKQuaternionMakeWithMatrix3(_:)](glkit/glkquaternionmakewithmatrix3(_:).md)
- [GLKQuaternionMakeWithMatrix4(_:)](glkit/glkquaternionmakewithmatrix4(_:).md)

### Retrieving Information About a Quaternion

- [GLKQuaternionLength(_:)](glkit/glkquaternionlength(_:).md)
- [GLKQuaternionAxis(_:)](glkit/glkquaternionaxis(_:).md)
- [GLKQuaternionAngle(_:)](glkit/glkquaternionangle(_:).md)

### Performing Mathematical Operations on Quaternions

- [GLKQuaternionNormalize(_:)](glkit/glkquaternionnormalize(_:).md)
- [GLKQuaternionInvert(_:)](glkit/glkquaternioninvert(_:).md)
- [GLKQuaternionConjugate(_:)](glkit/glkquaternionconjugate(_:).md)
- [GLKQuaternionAdd(_:_:)](glkit/glkquaternionadd(_:_:).md)
- [GLKQuaternionSubtract(_:_:)](glkit/glkquaternionsubtract(_:_:).md)
- [GLKQuaternionMultiply(_:_:)](glkit/glkquaternionmultiply(_:_:).md)
- [GLKQuaternionSlerp(_:_:_:)](glkit/glkquaternionslerp(_:_:_:).md)

### Applying Quaternions to Vectors

- [GLKQuaternionRotateVector3(_:_:)](glkit/glkquaternionrotatevector3(_:_:).md)
- [GLKQuaternionRotateVector3Array(_:_:_:)](glkit/glkquaternionrotatevector3array(_:_:_:).md)
- [GLKQuaternionRotateVector4(_:_:)](glkit/glkquaternionrotatevector4(_:_:).md)
- [GLKQuaternionRotateVector4Array(_:_:_:)](glkit/glkquaternionrotatevector4array(_:_:_:).md)

### Data Types

- [GLKQuaternion](glkit/glkquaternion.md)

### Constants

- [GLKQuaternionIdentity](glkit/glkquaternionidentity.md)

## See Also

### Math Utilties

- [GLKMatrixStack](glkit/glkmatrixstack.md)
- [GLKMatrix3](glkit/glkmatrix3-pcl.md)
- [GLKMatrix4](glkit/glkmatrix4-pce.md)
- [GLKVector2](glkit/glkvector2-pbj.md)
- [GLKVector3](glkit/glkvector3-pbt.md)
- [GLKVector4](glkit/glkvector4-pbk.md)
- [GLKit Math Utilities](glkit/glkit-math-utilities.md)
