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 на предмет их равенства. |
Equals(Quaternion, Quaternion) |
Сравнивает два экземпляра Quaternion на предмет их равенства. |
GetHashCode() |
Возвращает хэш-код для Quaternion. |
Invert() |
Заменяет указанный кватернион обратным ему. |
Multiply(Quaternion, Quaternion) |
Умножает заданные значения Quaternion. |
Normalize() |
Возвращает нормализованный кватернион. |
Parse(String) |
Преобразовывает строковое представление объекта Quaternion в эквивалентную структуру Quaternion. |
Slerp(Quaternion, Quaternion, Double) |
Выполняет интерполяцию между двумя ориентациями и использованием сферической линейной интерполяции. |
Slerp(Quaternion, Quaternion, Double, Boolean) |
Выполняет интерполяцию между двумя ориентациями, представленными как структуры Quaternion, используя сферическую линейную интерполяцию. |
Subtract(Quaternion, 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). |