Quaternion Структура
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Структура, представляющая поворот в трех измерениях.
public value class Quaternion : IFormattable
[System.ComponentModel.TypeConverter(typeof(System.Windows.Media.Media3D.QuaternionConverter))]
[System.Serializable]
public struct Quaternion : IFormattable
[System.ComponentModel.TypeConverter(typeof(System.Windows.Media.Media3D.QuaternionConverter))]
public struct Quaternion : IFormattable
[<System.ComponentModel.TypeConverter(typeof(System.Windows.Media.Media3D.QuaternionConverter))>]
[<System.Serializable>]
type Quaternion = struct
interface IFormattable
[<System.ComponentModel.TypeConverter(typeof(System.Windows.Media.Media3D.QuaternionConverter))>]
type Quaternion = struct
interface IFormattable
Public Structure Quaternion
Implements IFormattable
- Наследование
- Атрибуты
- Реализации
Примеры
<!-- 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>
//Read new settings
try
{
Double WValue = System.Convert.ToDouble(QuaternionWText.Text);
Double XValue = System.Convert.ToDouble(QuaternionXText.Text);
Double YValue = System.Convert.ToDouble(QuaternionYText.Text);
Double ZValue = System.Convert.ToDouble(QuaternionZText.Text);
endQuaternion = new Quaternion(XValue, YValue, ZValue, WValue);
}
catch
{
MessageBox.Show("Set non-null values for the quaternion.");
}
myQuaternionRotation3D = new QuaternionRotation3D(endQuaternion);
myRotateTransform3D.Rotation = myQuaternionRotation3D;
//update matrix display
qrotationMatrix3D = myRotateTransform3D.Value;
'Read new settings
Try
Dim WValue As Double = Convert.ToDouble(QuaternionWText.Text)
Dim XValue As Double = Convert.ToDouble(QuaternionXText.Text)
Dim YValue As Double = Convert.ToDouble(QuaternionYText.Text)
Dim ZValue As Double = Convert.ToDouble(QuaternionZText.Text)
endQuaternion = New Quaternion(XValue, YValue, ZValue, WValue)
Catch
MessageBox.Show("Set non-null values for the quaternion.")
End Try
myQuaternionRotation3D = New QuaternionRotation3D(endQuaternion)
myRotateTransform3D.Rotation = myQuaternionRotation3D
'update matrix display
qrotationMatrix3D = myRotateTransform3D.Value
Комментарии
Кватернионы позволяют интерполировать преобразования поворота, применяемые к объекту, тем самым упрощая вычисление плавной анимации поворотов. Кватернион представляет ось поворота и поворот вокруг этой оси. Можно отдельно определить ось и угол поворота начального и конечного позиций вращающегося объекта, но промежуточные позиции этого объекта во время анимации вычисляются непредсказуемо. Определив кватернион, представляющий исходную ориентацию трехмерного объекта и ту, которая представляет ее целевую ориентацию, можно плавно интерполяировать между этими ориентациями.
В XAML разделитель между значениями может Quaternion быть запятой или пробелом.
Некоторые региональные параметры могут использовать символ запятой в качестве десятичного разделителя вместо символа периода. Обработка XAML для инвариантного языка и региональных параметров по умолчанию en-US в большинстве реализаций процессора XAML и ожидает, что период будет десятичным разделителем. Следует избегать использования символа-запятой в качестве десятичного разделителя при указании Quaternion в XAML, так как это приведет к столкновению со строковым преобразованием Quaternion значения атрибута в его компоненты.
Использование атрибута XAML
<object property="x,y,z,w"/>
-or-
<object property="x y z w"/>
Значения XAML
x Компонент X этой Quaternion структуры.
y Компонент Y этой Quaternion структуры.
z Компонент Z этой Quaternion структуры.
w Компонент W этой Quaternion структуры.
Конструкторы
| Имя | Описание |
|---|---|
| Quaternion(Double, Double, Double, Double) |
Инициализирует новый экземпляр Quaternion структуры. |
| Quaternion(Vector3D, Double) |
Инициализирует новый экземпляр Quaternion структуры. |
Свойства
| Имя | Описание |
|---|---|
| Angle |
Получает угол кватерниона в градусах. |
| Axis |
Возвращает ось кватерниона. |
| Identity |
Возвращает кватернион удостоверения. |
| IsIdentity |
Возвращает значение, указывающее, является ли указанный кватернион кватернионом Identity . |
| IsNormalized |
Возвращает значение, указывающее, нормализуется ли кватернион. |
| W |
Возвращает компонент W кватерниона. |
| X |
Возвращает компонент X кватерниона. |
| Y |
Возвращает компонент Y кватерниона. |
| Z |
Возвращает компонент Z кватерниона. |
Методы
| Имя | Описание |
|---|---|
| Add(Quaternion, Quaternion) |
Добавляет указанные кватернионы. |
| Conjugate() |
Заменяет кватернион его конъюгированием. |
| Equals(Object) |
Сравнивает два Quaternion экземпляра для равенства. |
| Equals(Quaternion, Quaternion) |
Сравнивает два Quaternion экземпляра для равенства. |
| Equals(Quaternion) |
Сравнивает два Quaternion экземпляра для равенства. |
| GetHashCode() |
Возвращает хэш-код для .Quaternion |
| Invert() |
Заменяет указанный кватернион обратной. |
| Multiply(Quaternion, Quaternion) |
Умножает указанные Quaternion значения. |
| Normalize() |
Возвращает нормализованный кватернион. |
| Parse(String) |
Преобразует строковое представление объекта Quaternion в эквивалентную Quaternion структуру. |
| Slerp(Quaternion, Quaternion, Double, Boolean) |
Интерполирует между ориентациями, представленными в виде Quaternion структур, используя сферическую линейную интерполяцию. |
| Slerp(Quaternion, Quaternion, Double) |
Интерполирует между двумя ориентациями с помощью сферической линейной интерполяции. |
| Subtract(Quaternion, Quaternion) |
Вычитает кватернион из другого. |
| ToString() |
Создает строковое представление объекта. |
| ToString(IFormatProvider) |
Создает строковое представление объекта. |
Операторы
| Имя | Описание |
|---|---|
| Addition(Quaternion, Quaternion) |
Добавляет указанные Quaternion значения. |
| Equality(Quaternion, Quaternion) |
Сравнивает два Quaternion экземпляра для точного равенства. |
| Inequality(Quaternion, Quaternion) |
Сравнивает два Quaternion экземпляра для точного неравенства. |
| Multiply(Quaternion, Quaternion) |
Умножает указанный кватернион на другой. |
| Subtraction(Quaternion, Quaternion) |
Вычитает указанный кватернион из другого. |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| IFormattable.ToString(String, IFormatProvider) |
Этот член поддерживает инфраструктуру Windows Presentation Foundation (WPF) и не предназначен для использования непосредственно из кода. Описание этого элемента см. в разделе ToString(String, IFormatProvider). |