Sdílet prostřednictvím


Quaternion Struktura

Definice

Struktura, která představuje otočení ve třech rozměrech.

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
Dědičnost
Quaternion
Atributy
Implementuje

Příklady

<!-- 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

Poznámky

Quaternions umožňují interpolovat mezi transformacemi otočení použitými u objektu, což usnadňuje výpočet hladkých animací otočení. Quaternion představuje osu otáčení a otočení kolem této osy. Je možné jednotlivě definovat osu a úhel otočení počáteční a koncové pozice otočného objektu, ale střední pozice tohoto objektu během animace jsou výpočetně nejisté. Určením kvazternionu, který představuje původní orientaci 3D objektu a jednoho, který představuje jeho cílovou orientaci, můžete mezi těmito orientacemi hladce interpolovat.

V JAZYCE XAML může oddělovač mezi hodnotami znaku Quaternion být čárkou nebo mezerou.

Některé jazykové verze můžou místo znaku tečky použít znak čárky jako oddělovač desetinných míst. Zpracování XAML pro invariantní jazykovou verzi je ve většině implementací procesoru XAML ve výchozím nastavení en-US a očekává, že tečka bude oddělovačem desetinných míst. Pokud zadáte Quaternion v XAML znak čárky, měli byste se vyhnout použití znaku čárky jako oddělovače desetinných míst, protože to bude kolidovat s převodem Quaternion typu řetězce hodnoty atributu na jeho součásti.

Použití atributu XAML

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

Hodnoty XAML

x
Komponenta X této Quaternion struktury.

Y
Komponenta Y této Quaternion struktury.

Z
Komponenta Z této Quaternion struktury.

w
Komponenta W této Quaternion struktury.

Konstruktory

Quaternion(Double, Double, Double, Double)

Inicializuje novou instanci Quaternion struktury.

Quaternion(Vector3D, Double)

Inicializuje novou instanci Quaternion struktury.

Vlastnosti

Angle

Získá kvazternionův úhel ve stupních.

Axis

Získá kvazternionovou osu.

Identity

Získá kvazternii identity.

IsIdentity

Získá hodnotu, která označuje, zda zadaný quaternion je Identity kvazternion.

IsNormalized

Získá hodnotu, která označuje, zda je quaternion normalizován.

W

Získá W součást kvarternionu.

X

Získá X komponentu quaternionu.

Y

Získá komponentu Y quaternionu.

Z

Získá Z komponentu kvazternionu.

Metody

Add(Quaternion, Quaternion)

Přidá zadanou kvaternionu.

Conjugate()

Nahradí kvaternion jeho konjugate.

Equals(Object)

Porovná dvě Quaternion instance rovnosti.

Equals(Quaternion)

Porovná dvě Quaternion instance rovnosti.

Equals(Quaternion, Quaternion)

Porovná dvě Quaternion instance rovnosti.

GetHashCode()

Vrátí kód hash pro Quaternionhodnotu .

Invert()

Nahradí zadanou kvazternion inverzní hodnotou.

Multiply(Quaternion, Quaternion)

Vynásobí zadané Quaternion hodnoty.

Normalize()

Vrátí normalizovanou kvaternii.

Parse(String)

Převede řetězcovou reprezentaci objektu Quaternion na ekvivalentní Quaternion strukturu.

Slerp(Quaternion, Quaternion, Double)

Interpoluje mezi dvěma orientacemi pomocí sférické lineární interpolace.

Slerp(Quaternion, Quaternion, Double, Boolean)

Interpoluje mezi orientacemi, reprezentovanými jako Quaternion strukturami, pomocí sférické lineární interpolace.

Subtract(Quaternion, Quaternion)

Odečte quaternion od jiného.

ToString()

Vytvoří řetězcovou reprezentaci objektu.

ToString(IFormatProvider)

Vytvoří řetězcovou reprezentaci objektu.

Operátory

Addition(Quaternion, Quaternion)

Přidá zadané Quaternion hodnoty.

Equality(Quaternion, Quaternion)

Porovná dvě Quaternion instance pro přesnou rovnost.

Inequality(Quaternion, Quaternion)

Porovná dvě Quaternion instance přesné nerovnosti.

Multiply(Quaternion, Quaternion)

Vynásobí zadaný kvazternion jiným.

Subtraction(Quaternion, Quaternion)

Odečte zadanou kvazternii od jiného.

Explicitní implementace rozhraní

IFormattable.ToString(String, IFormatProvider)

Tento člen podporuje infrastrukturu Windows Presentation Foundation (WPF) a není určena k použití přímo z vašeho kódu. Popis tohoto člena najdete v tématu ToString(String, IFormatProvider).

Platí pro