次の方法で共有


Quaternion 構造体

定義

回転を 3 次元で表す構造体。

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

注釈

四元数を使用すると、オブジェクトに適用された回転変換間を補間できるため、回転の滑らかなアニメーションを簡単に計算できます。 四元数は、回転軸とその軸の周りの回転を表します。 回転オブジェクトの開始位置と終了位置の軸と回転角度を個別に定義できますが、アニメーション中のオブジェクトの中間位置は計算上不確かです。 3-D オブジェクトの元の向きを表す四元数と、その移動先の向きを表す四元数を決定することで、それらの方向間をスムーズに補間できます。

XAML では、 の値間の Quaternion 区切り記号はコンマまたはスペースのいずれかになります。

カルチャによっては、ピリオド文字の代わりにコンマ文字を小数点区切り記号として使用する場合があります。 インバリアント カルチャの XAML 処理は、ほとんどの XAML プロセッサ実装で既定で en-US に設定され、ピリオドは 10 進区切り記号であると想定されます。 XAML で を指定する場合は、コンマ文字を Quaternion 10 進区切り記号として使用しないでください。これは、属性値のコンポーネントへの文字列型変換 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

恒等四元数を取得します。

IsIdentity

指定された四元数が Identity 四元数であるかどうかを示す値を取得します。

IsNormalized

四元数が正規化されているかどうかを示す値を取得します。

W

四元数の W コンポーネントを取得します。

X

四元数の X コンポーネントを取得します。

Y

四元数の Y コンポーネントを取得します。

Z

四元数の Z コンポーネントを取得します。

メソッド

Add(Quaternion, Quaternion)

指定した四元数を加算します。

Conjugate()

四元数をその共役で置き換えます。

Equals(Object)

2 つの Quaternion インスタンスを比較し、相互に等価かどうかを判断します。

Equals(Quaternion)

2 つの Quaternion インスタンスを比較し、相互に等価かどうかを判断します。

Equals(Quaternion, Quaternion)

2 つの Quaternion インスタンスを比較し、相互に等価かどうかを判断します。

GetHashCode()

Quaternion のハッシュ コードを返します。

Invert()

指定した四元数をその逆四元数で置き換えます。

Multiply(Quaternion, Quaternion)

指定した Quaternion 値を乗算します。

Normalize()

正規化した結果の四元数を返します。

Parse(String)

Quaternion の文字列形式を、等価の Quaternion 構造体に変換します。

Slerp(Quaternion, Quaternion, Double)

球面線形補間を使用して 2 つの方向の間を補間します。

Slerp(Quaternion, Quaternion, Double, Boolean)

球面線形補間を使用して、Quaternion として表される方向の間を補間します。

Subtract(Quaternion, Quaternion)

Quaternion を別の四元数から減算します。

ToString()

オブジェクトの文字列表現を作成します。

ToString(IFormatProvider)

オブジェクトの文字列表現を作成します。

演算子

Addition(Quaternion, Quaternion)

指定した Quaternion 値を加算します。

Equality(Quaternion, Quaternion)

2 つの Quaternion インスタンスを比較し、完全に等しいかどうかを確認します。

Inequality(Quaternion, Quaternion)

2 つの Quaternion インスタンスを比較し、完全に等しくないかどうかを判断します。

Multiply(Quaternion, Quaternion)

指定した四元数を別の四元数と乗算します。

Subtraction(Quaternion, Quaternion)

指定した四元数を別の四元数から減算します。

明示的なインターフェイスの実装

IFormattable.ToString(String, IFormatProvider)

このメンバーは、Windows Presentation Foundation (WPF) インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。 このメンバーの詳細については、「ToString(String, IFormatProvider)」をご覧ください。

適用対象