Quaternion Структура

Определение

Структура, представляющая поворот в трех измерениях.Structure that represents a rotation in three dimensions.

public value class Quaternion : IFormattable
[System.ComponentModel.TypeConverter(typeof(System.Windows.Media.Media3D.QuaternionConverter))]
[System.Serializable]
public struct Quaternion : IFormattable
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

Комментарии

Кватернион позволяет выполнять интерполяцию между преобразованиями вращения, примененными к объекту, тем самым упрощая вычисление плавной анимации поворотов.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.

В XAML разделитель между значениями Quaternion может быть либо запятыми, либо пробелом.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 для инвариантных региональных параметров по умолчанию имеет значение en-US в большинстве реализаций процессора XAML и ожидает, что точка является десятичным разделителем.XAML processing for invariant culture defaults to en-US in most XAML processor implementations, and expects the period to be the decimal delimiter. Следует избегать использования символа запятой в качестве десятичного разделителя, если указать Quaternion в XAML, так как это приведет к конфликту с преобразованием строкового типа значения атрибута Quaternion в его компоненты.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.

Использование атрибута XAMLXAML Attribute Usage

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

Значения XAMLXAML Values

xx
Компонент X этой структуры Quaternion.The X component of this Quaternion structure.

yy
Компонент Y структуры Quaternion.The Y component of this Quaternion structure.

zz
Компонент Z структуры Quaternion.The Z component of this Quaternion structure.

ww
Компонент W структуры Quaternion.The W component of this Quaternion structure.

Конструкторы

Quaternion(Double, Double, Double, Double)

Инициализирует новый экземпляр структуры Quaternion.Initializes a new instance of the Quaternion structure.

Quaternion(Vector3D, Double)

Инициализирует новый экземпляр структуры Quaternion.Initializes a new instance of the Quaternion structure.

Свойства

Angle

Получает угол кватерниона в градусах.Gets the quaternion's angle, in degrees.

Axis

Получает ось кватерниона.Gets the quaternion's axis.

Identity

Возвращает единичное значение для кватерниона.Gets the Identity quaternion.

IsIdentity

Получает значение, указывающее, является ли заданный кватернион объектом кватернион Identity.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

Получает компонент W кватерниона.Gets the W component of the quaternion.

X

Получает компонент X кватерниона.Gets the X component of the quaternion.

Y

Получает компонент Y кватерниона.Gets the Y component of the quaternion.

Z

Получает компонент Z кватерниона.Gets the Z component of the quaternion.

Методы

Add(Quaternion, Quaternion)

Добавляет заданные кватернионы.Adds the specified quaternions.

Conjugate()

Заменяет кватернион вместе с его конъюгатом.Replaces a quaternion with its conjugate.

Equals(Object)

Сравнивает два экземпляра Quaternion на предмет их равенства.Compares two Quaternion instances for equality.

Equals(Quaternion)

Сравнивает два экземпляра Quaternion на предмет их равенства.Compares two Quaternion instances for equality.

Equals(Quaternion, Quaternion)

Сравнивает два экземпляра Quaternion на предмет их равенства.Compares two Quaternion instances for equality.

GetHashCode()

Возвращает хэш-код для Quaternion.Returns the hash code for the Quaternion.

Invert()

Заменяет указанный кватернион обратным ему.Replaces the specified quaternion with its inverse.

Multiply(Quaternion, Quaternion)

Умножает заданные значения Quaternion.Multiplies the specified Quaternion values.

Normalize()

Возвращает нормализованный кватернион.Returns a normalized quaternion.

Parse(String)

Преобразовывает строковое представление объекта Quaternion в эквивалентную структуру Quaternion.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)

Выполняет интерполяцию между двумя ориентациями, представленными как структуры Quaternion, используя сферическую линейную интерполяцию.Interpolates between orientations, represented as Quaternion structures, using spherical linear interpolation.

Subtract(Quaternion, Quaternion)

Вычитает объект Quaternion из другого кватерниона.Subtracts a Quaternion from another.

ToString()

Создает строковое представление объекта.Creates a string representation of the object.

ToString(IFormatProvider)

Создает строковое представление объекта.Creates a string representation of the object.

Операторы

Addition(Quaternion, Quaternion)

Добавляет заданные значения Quaternion.Adds the specified Quaternion values.

Equality(Quaternion, Quaternion)

Сравнивает два экземпляра Quaternion на строгое равенство.Compares two Quaternion instances for exact equality.

Inequality(Quaternion, 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.

Явные реализации интерфейса

IFormattable.ToString(String, IFormatProvider)

Этот член поддерживает инфраструктуру Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) и не предназначен для непосредственного использования из кода.This member supports the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code. Описание этого члена см. в разделе ToString(String, IFormatProvider).For a description of this member, see ToString(String, IFormatProvider).

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