Språk

Quaternion Struct-datatyp

Definition

Struktur som representerar en rotation i tre dimensioner.

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
Arv
Quaternion
Attribut
Implementeringar

Exempel

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

Kommentarer

Med quaternions kan du interpolera mellan rotationstransformationer som tillämpas på ett objekt, vilket gör det enklare att beräkna smidiga animeringar av rotationer. En quaternion representerar en rotationsaxel och en rotation runt den axeln. Det är möjligt att individuellt definiera rotationsaxeln och rotationsvinkeln för start- och slutpositionerna för ett roterat objekt , men objektets mellanliggande positioner under en animering är beräkningsmässigt osäkra. Genom att fastställa en quaternion som representerar den ursprungliga orienteringen för ett 3D-objekt och ett objekt som representerar dess målorientering, kan du smidigt interpolera mellan dessa orienteringar.

I XAML kan avgränsare mellan värdena för en Quaternion vara antingen ett kommatecken eller ett blanksteg.

Vissa kulturer kan använda kommatecknet som decimalavgränsare i stället för periodtecknet. XAML-bearbetning för invariant kultur är som standard en-US i de flesta XAML-processorimplementeringar och förväntar sig att perioden är decimal avgränsaren. Du bör undvika att använda kommatecknet som decimalavgränsare om du anger en Quaternion i XAML, eftersom det kommer att kollidera med strängtypkonverteringen av ett Quaternion attributvärde till dess komponenter.

XAML-attributanvändning

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

XAML-värden

x Komponenten X i den här Quaternion strukturen.

y Komponenten Y i den här Quaternion strukturen.

z Komponenten Z i den här Quaternion strukturen.

w Komponenten W i den här Quaternion strukturen.

Konstruktorer

Name Description
Quaternion(Double, Double, Double, Double)

Initierar en ny instans av Quaternion strukturen.

Quaternion(Vector3D, Double)

Initierar en ny instans av Quaternion strukturen.

Egenskaper

Name Description
Angle

Får quaternion vinkel, i grader.

Axis

Hämtar quaternion-axeln.

Identity

Hämtar identitetskvasering.

IsIdentity

Hämtar ett värde som anger om den angivna quaternion är en Identity quaternion.

IsNormalized

Hämtar ett värde som anger om quaternion är normaliserad.

W

Hämtar W-komponenten i quaternion.

X

Hämtar X-komponenten i quaternion.

Y

Hämtar Y-komponenten i quaternion.

Z

Hämtar Z-komponenten i quaternion.

Metoder

Name Description
Add(Quaternion, Quaternion)

Lägger till angivna quaternions.

Conjugate()

Ersätter en quaternion med dess konjugate.

Equals(Object)

Jämför två Quaternion instanser för likhet.

Equals(Quaternion, Quaternion)

Jämför två Quaternion instanser för likhet.

Equals(Quaternion)

Jämför två Quaternion instanser för likhet.

GetHashCode()

Returnerar hash-koden för Quaternion.

Invert()

Ersätter den angivna quaternionen med dess invertering.

Multiply(Quaternion, Quaternion)

Multiplicerar de angivna Quaternion värdena.

Normalize()

Returnerar en normaliserad quaternion.

Parse(String)

Konverterar en strängrepresentation av en Quaternion till motsvarande Quaternion struktur.

Slerp(Quaternion, Quaternion, Double, Boolean)

Interpolerar mellan orienteringar, som representeras som Quaternion strukturer, med hjälp av sfärisk linjär interpolation.

Slerp(Quaternion, Quaternion, Double)

Interpolerar mellan två orienteringar med hjälp av sfärisk linjär interpolation.

Subtract(Quaternion, Quaternion)

Subtraherar en Quaternion från en annan.

ToString()

Skapar en strängrepresentation av objektet.

ToString(IFormatProvider)

Skapar en strängrepresentation av objektet.

Operatorer

Name Description
Addition(Quaternion, Quaternion)

Lägger till de angivna Quaternion värdena.

Equality(Quaternion, Quaternion)

Jämför två Quaternion instanser för exakt likhet.

Inequality(Quaternion, Quaternion)

Jämför två Quaternion instanser för exakt ojämlikhet.

Multiply(Quaternion, Quaternion)

Multiplicerar den angivna quaternionen med en annan.

Subtraction(Quaternion, Quaternion)

Subtraherar en angiven quaternion från en annan.

Explicita gränssnittsimplementeringar

Name Description
IFormattable.ToString(String, IFormatProvider)

Den här medlemmen stöder infrastrukturen för Windows Presentation Foundation (WPF) och är inte avsedd att användas direkt från koden. En beskrivning av den här medlemmen finns i ToString(String, IFormatProvider).

Gäller för