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
Наследование
Quaternion
Атрибуты
Реализации

Примеры

<!-- 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).

Применяется к