Поделиться через


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 на предмет их равенства.

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

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