quaternion Structure
Article 06/20/2022
4 contributors
Feedback
In this article
A four dimensional vector, used to represent a rotation.
A quaternion can efficiently rotate an object about the (x, y, z) vector by the angle theta, where w = cos(theta/2). Quaternions are typically used for smooth interpolation between two angles, and for avoiding the gimbal lock problem that can occur with Euler angles.
This type is available only in C++. Its .NET equivalent is System.Numerics.Quaternion .
Constructors
Name
Description
quaternion()
Creates an uninitialized quaternion.
quaternion(float x, float y, float z, float w)
Creates a quaternion with the specified values.
quaternion(float3 vectorPart, float scalarPart)
Creates a quaternion from a float3 and scalar.
quaternion(Microsoft::?Graphics::?Canvas::?Numerics::?Quaternion const& value)
Converts a Microsoft.Graphics.Canvas.Numerics.Quaternion to a quaternion.
Functions
Name
Description
quaternion make_quaternion_from_axis_angle(float3 const& axis, float angle)
Creates a quaternion from a vector and an angle to rotate about the vector.
quaternion make_quaternion_from_yaw_pitch_roll(float yaw, float pitch, float roll)
Creates a quaternion from specified yaw, pitch, and roll angles.
quaternion make_quaternion_from_rotation_matrix(float4x4 const& matrix)
Creates a quaternion from a rotation matrix.
bool is_identity(quaternion const& value)
Checks whether this is an identity (no rotation) quaternion.
float length(quaternion const& value)
Calculates the length of a quaternion.
float length_squared(quaternion const& value)
Calculates the length squared of a quaternion.
float dot(quaternion const& quaternion1, quaternion const& quaternion2)
Calculates the dot product of two quaternions.
quaternion normalize(quaternion const& value)
Divides each component of a quaternion by the length of the quaternion.
quaternion conjugate(quaternion const& value)
Calculates the conjugate of a quaternion.
quaternion inverse(quaternion const& value)
Calculates the inverse of a quaternion.
quaternion slerp(quaternion const& quaternion1, quaternion const& quaternion2, float amount)
Interpolates between two quaternions, using spherical linear interpolation.
quaternion lerp(quaternion const& quaternion1, quaternion const& quaternion2, float amount)
Linearly interpolates between two quaternions.
quaternion concatenate(quaternion const& value1, quaternion const& value2)
Concatenates two quaternions; the result represents the first rotation followed by the second rotation.
Methods
Name
Description
static quaternion identity()
Returns an instance of the identity quaternion.
Operators
Name
Description
quaternion operator+ (quaternion const& value1, quaternion const& value2)
Adds two quaternions.
quaternion operator- (quaternion const& value1, quaternion const& value2)
Subtracts a quaternion from another quaternion.
quaternion operator* (quaternion const& value1, quaternion const& value2)
Multiplies a quaternion by another quaternion.
quaternion operator* (quaternion const& value1, float value2)
Multiplies a quaternion by a scalar value.
quaternion operator/ (quaternion const& value1, quaternion const& value2)
Divides a quaternion by another quaternion.
quaternion operator- (quaternion const& value)
Flips the sign of each component of the quaternion.
quaternion& operator+= (quaternion& value1, quaternion const& value2)
In-place adds two quaternions.
quaternion& operator-= (quaternion& value1, quaternion const& value2)
In-place subtracts a quaternion from another quaternion.
quaternion& operator*= (quaternion& value1, quaternion const& value2)
In-place multiplies a quaternion by another quaternion.
quaternion& operator*= (quaternion& value1, float value2)
In-place nultiplies a quaternion by a scalar value.
quaternion& operator/= (quaternion& value1, quaternion const& value2)
In-place divides a quaternion by another quaternion.
bool operator== (quaternion const& value1, quaternion const& value2)
Determines whether two instances of quaternion are equal.
bool operator!= (quaternion const& value1, quaternion const& value2)
Determines whether two instances of quaternion are not equal.
operator Microsoft::?Graphics::?Canvas::?Numerics::?Quaternion() const
Converts a quaternion to a Microsoft.Graphics.Canvas.Numerics.Quaternion .
Fields
Name
Description
float x
X value of the vector component of the quaternion.
float y
Y value of the vector component of the quaternion.
float z
Z value of the vector component of the quaternion.
float w
Rotation component of the quaternion.
Requirements
Requirement
Value
Namespace
Windows::Foundation::Numerics
Header
Windowsnumerics.h
See also
windowsnumerics.h APIs