# Quaternion Structure

**.NET Framework (current version)**

Note |
---|

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience. |

Structure that represents a rotation in three dimensions.

**Namespace:**System.Windows.Media.Media3D

**Assembly:**PresentationCore (in PresentationCore.dll)

Name | Description | |
---|---|---|

Quaternion(Double, Double, Double, Double) | Initializes a new instance of the Quaternion structure. | |

Quaternion(Vector3D, Double) | Initializes a new instance of the Quaternion structure. |

Name | Description | |
---|---|---|

Angle | Gets the quaternion's angle, in degrees. | |

Axis | Gets the quaternion's axis. | |

Identity | Gets the Identity quaternion | |

IsIdentity | Gets a value that indicates whether the specified quaternion is an Identity quaternion. | |

IsNormalized | Gets a value that indicates whether the quaternion is normalized. | |

W | Gets the W component of the quaternion. | |

X | Gets the X component of the quaternion. | |

Y | Gets the Y component of the quaternion. | |

Z | Gets the Z component of the quaternion. |

Name | Description | |
---|---|---|

Add(Quaternion, Quaternion) | Adds the specified quaternions. | |

Conjugate() | Replaces a quaternion with its conjugate. | |

Equals(Object) | Compares two Quaternion instances for equality. (Overrides ValueType.Equals(Object).) | |

Equals(Quaternion) | Compares two Quaternion instances for equality. | |

Equals(Quaternion, Quaternion) | Compares two Quaternion instances for equality. | |

GetHashCode() | Returns the hash code for the Quaternion. (Overrides ValueType.GetHashCode().) | |

GetType() | ||

Invert() | Replaces the specified quaternion with its inverse | |

Multiply(Quaternion, Quaternion) | Multiplies the specified Quaternion values. | |

Normalize() | Returns a normalized quaternion. | |

Parse(String) | Converts a string representation of a Quaternion into the equivalent Quaternion structure. | |

Slerp(Quaternion, Quaternion, Double) | Interpolates between two orientations using spherical linear interpolation. | |

Slerp(Quaternion, Quaternion, Double, Boolean) | Interpolates between orientations, represented as Quaternion structures, using spherical linear interpolation. | |

Subtract(Quaternion, Quaternion) | Subtracts a Quaternion from another. | |

ToString() | Creates a string representation of the object. (Overrides ValueType.ToString().) | |

ToString(IFormatProvider) | Creates a string representation of the object. |

Name | Description | |
---|---|---|

Addition(Quaternion, Quaternion) | Adds the specified Quaternion values. | |

Equality(Quaternion, Quaternion) | Compares two Quaternion instances for exact equality. | |

Inequality(Quaternion, Quaternion) | Compares two Quaternion instances for exact inequality. | |

Multiply(Quaternion, Quaternion) | Multiplies the specified quaternion by another. | |

Subtraction(Quaternion, Quaternion) | Subtracts a specified quaternion from another. |

Name | Description | |
---|---|---|

IFormattable.ToString(String, IFormatProvider) | This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code. For a description of this member, see ToString. |

Quaternions allow you to interpolate between rotation transformations applied to an object, thereby making it easier to compute smooth animations of rotations. A quaternion represents an axis of rotation and a rotation around that axis. It's possible to individually define the axis and angle of rotation of the starting and ending positions of a rotated object ,but the intermediate positions of that object during an animation are computationally uncertain. By determining a quaternion that represents the original orientation of a 3-D object and one that represents its destination orientation, you can smoothly interpolate between those orientations.

In XAML, the delimiter between the values of a Quaternion can be either a comma or a space.

Some cultures might use the comma character as the decimal delimiter instead of the period character. XAML processing for invariant culture defaults to en-US in most XAML processor implementations, and expects the period to be the decimal delimiter. You should avoid using the comma character as the decimal delimiter if specifying a Quaternion in XAML, because that will clash with the string type conversion of a Quaternion attribute value into its components.

<object property="x,y,z,w"/> -or- <object property="x y z w"/>

<!-- Trigger the rotation animation when the 3D object loads. --> <Viewport3D.Triggers> <EventTrigger RoutedEvent="Viewport3D.Loaded"> <BeginStoryboard> <Storyboard> <!-- This animation animates the Rotation property of the RotateTransform3D causing the 3D shape to rotate. --> <QuaternionAnimation Storyboard.TargetName="myQuaternionRotation3D" Storyboard.TargetProperty="Quaternion" From="0,0,1,0" To="0.3, 0.3, 1, 0" Duration="0:0:2" /> </Storyboard> </BeginStoryboard> </EventTrigger> </Viewport3D.Triggers>

**.NET Framework**

Available since 3.0

Any public static (
**Shared**
in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.