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 处理器实现中,固定区域性的 XAML 处理默认为 en-US,并且预期句点为小数分隔符。 如果在 XAML 中指定 , Quaternion 应避免使用逗号字符作为小数分隔符,因为这将与属性值到其组件的字符串类型转换 Quaternion 冲突。

XAML 属性用法

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

XAML 值

x
Quaternion 结构的 X 组件。

y
Quaternion 结构的 Y 组件。

z
Quaternion 结构的 Z 组件。

w
Quaternion 结构的 W 组件。

构造函数

Quaternion(Double, Double, Double, Double)

初始化 Quaternion 结构的新实例。

Quaternion(Vector3D, Double)

初始化 Quaternion 结构的新实例。

属性

Angle

获取四元数的角度(以度为单位)。

Axis

获取四元数的轴。

Identity

获取 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)

从另一个四元数中减去一个四元数。

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)

适用于