Condividi tramite


Quaternion Struct

Definizione

Struttura che rappresenta una rotazione in tre dimensioni.

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
Ereditarietà
Quaternion
Attributi
Implementazioni

Esempio

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

Commenti

I quaternioni consentono di interpolare tra le trasformazioni di rotazione applicate a un oggetto, semplificando così il calcolo di animazioni uniformi delle rotazioni. Un quaternione rappresenta un asse di rotazione e una rotazione attorno a tale asse. È possibile definire singolarmente l'asse e l'angolo di rotazione delle posizioni iniziale e finale di un oggetto ruotato, ma le posizioni intermedie di tale oggetto durante un'animazione sono incerte dal punto di vista computazionale. Determinando un quaternione che rappresenta l'orientamento originale di un oggetto 3D e uno che rappresenta l'orientamento di destinazione, è possibile interpolare senza problemi tra tali orientamenti.

In XAML il delimitatore tra i valori di un Quaternion può essere una virgola o uno spazio.

Alcune impostazioni cultura potrebbero usare il carattere virgola come delimitatore decimale anziché il carattere punto. Per impostazione predefinita l'elaborazione XAML per impostazioni cultura invarianti è en-US nella maggior parte delle implementazioni del processore XAML e prevede che il periodo sia il delimitatore decimale. È consigliabile evitare di usare il carattere virgola come delimitatore decimale se si specifica un Quaternion oggetto in XAML, perché ciò si scontra con la conversione del tipo stringa di un Quaternion valore di attributo nei relativi componenti.

Uso della sintassi XAML per gli attributi

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

Valori XAML

x
Componente X di questa struttura Quaternion.

y
Componente Y di questa struttura Quaternion.

Z
Componente Z di questa struttura Quaternion.

w
Componente W di questa struttura Quaternion.

Costruttori

Quaternion(Double, Double, Double, Double)

Inizializza una nuova istanza della struttura Quaternion.

Quaternion(Vector3D, Double)

Inizializza una nuova istanza della struttura Quaternion.

Proprietà

Angle

Ottiene l'angolo del quaternione espresso in gradi.

Axis

Ottiene l'asse del quaternione.

Identity

Ottiene la struttura Quaternion di identità.

IsIdentity

Ottiene un valore che indica se il quaternione specificato è un quaternione Identity.

IsNormalized

Ottiene un valore che indica se il quaternione è normalizzata o meno.

W

Rappresenta il componente W del quaternione.

X

Ottiene il componente X del quaternione.

Y

Ottiene il componente Y del quaternione.

Z

Ottiene il componente Z del quaternione.

Metodi

Add(Quaternion, Quaternion)

Somma i quaternioni specificati.

Conjugate()

Sostituisce un quaternione con il relativo coniugato.

Equals(Object)

Verifica l'uguaglianza tra due istanze di Quaternion.

Equals(Quaternion)

Verifica l'uguaglianza tra due istanze di Quaternion.

Equals(Quaternion, Quaternion)

Verifica l'uguaglianza tra due istanze di Quaternion.

GetHashCode()

Restituisce il codice hash per la classe Quaternion.

Invert()

Sostituisce il quaternione specificato con l'inverso.

Multiply(Quaternion, Quaternion)

Moltiplica i valori Quaternion specificati.

Normalize()

Restituisce un quaternione normalizzato.

Parse(String)

Converte una rappresentazione di stringa di un oggetto Quaternion nella struttura Quaternion equivalente.

Slerp(Quaternion, Quaternion, Double)

Esegue l'interpolazione tra due orientamenti utilizzando l'interpolazione lineare sferica.

Slerp(Quaternion, Quaternion, Double, Boolean)

Esegue l'interpolazione tra gli orientamenti, rappresentati sotto forma di strutture Quaternion, utilizzando l'interpolazione lineare sferica.

Subtract(Quaternion, Quaternion)

Sottrae un quaternione da un altro quaternione.

ToString()

Crea una rappresentazione di stringa dell'oggetto.

ToString(IFormatProvider)

Crea una rappresentazione di stringa dell'oggetto.

Operatori

Addition(Quaternion, Quaternion)

Aggiunge i valori Quaternion specificati.

Equality(Quaternion, Quaternion)

Confronta due istanze di Quaternion per stabilire se sono esattamente uguali.

Inequality(Quaternion, Quaternion)

Confronta due istanze della struttura Quaternion per stabilire se sono esattamente diverse.

Multiply(Quaternion, Quaternion)

Moltiplica il quaternione specificato per un altro quaternione.

Subtraction(Quaternion, Quaternion)

Sottrae un quaternione specificato da un altro quaternione.

Implementazioni dell'interfaccia esplicita

IFormattable.ToString(String, IFormatProvider)

Questo membro supporta l'infrastruttura Windows Presentation Foundation (WPF) e non deve essere usato direttamente dal codice. Per una descrizione di questo membro, vedere ToString(String, IFormatProvider).

Si applica a