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

備註

四元數可讓您在套用至物件的旋轉轉換之間插補,以便更輕鬆地計算旋轉的平滑動畫。 四元數代表旋轉軸,以及繞該軸旋轉的旋轉。 您可以個別定義旋轉物件之開始和結束位置的座標軸和角度,但動畫期間該物件的中繼位置在計算上不確定。 藉由判斷代表 3D 物件原始方向的四元數,以及代表其目的地方向的四元數,您可以在這些方向之間順暢地插補。

在 XAML 中,的值 Quaternion 之間的分隔符號可以是逗號或空格。

某些文化特性可能會使用逗號字元做為小數分隔符號,而不是句號字元。 在大部分 XAML 處理器實作中,非變異文化特性的 XAML 處理預設為 en-US,而且預期期間為小數分隔符號。 在 XAML 中指定 Quaternion 時,您應該避免使用逗號字元做為十進位分隔符號,因為這將會與屬性值的 Quaternion 字串類型轉換成其元件發生衝突。

XAML Attribute Usage

<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

取得單位四元數。

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)

適用於