Quaternion Struct
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 eseguire l'interpolazione tra le trasformazioni di rotazione applicate a un oggetto, semplificando così il calcolo delle 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 iniziali e finali 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 ne 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. L'elaborazione XAML per impostazioni cultura invarianti viene 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 in XAML, perché si verifica un conflitto con la conversione di tipo stringa di un valore di attributo Quaternion nei relativi componenti.
Utilizzo degli attributi XAML
<object property="x,y,z,w"/>
-or-
<object property="x y z w"/>
Valori XAML
x Componente X di questa Quaternion struttura.
y Componente Y di questa Quaternion struttura.
z Componente Z di questa Quaternion struttura.
w Componente W di questa Quaternion struttura.
Costruttori
| Nome | Descrizione |
|---|---|
| Quaternion(Double, Double, Double, Double) |
Inizializza una nuova istanza della Quaternion struttura. |
| Quaternion(Vector3D, Double) |
Inizializza una nuova istanza della Quaternion struttura. |
Proprietà
| Nome | Descrizione |
|---|---|
| Angle |
Ottiene l'angolo del quaternione, espresso in gradi. |
| Axis |
Ottiene l'asse del quaternione. |
| Identity |
Ottiene il quaternione Identity. |
| IsIdentity |
Ottiene un valore che indica se il quaternione specificato è un Identity quaternione. |
| IsNormalized |
Ottiene un valore che indica se il quaternione è normalizzato. |
| W |
Ottiene 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
| Nome | Descrizione |
|---|---|
| Add(Quaternion, Quaternion) |
Aggiunge i quaternioni specificati. |
| Conjugate() |
Sostituisce un quaternione con il relativo coniugato. |
| Equals(Object) |
Confronta due Quaternion istanze per verificare l'uguaglianza. |
| Equals(Quaternion, Quaternion) |
Confronta due Quaternion istanze per verificare l'uguaglianza. |
| Equals(Quaternion) |
Confronta due Quaternion istanze per verificare l'uguaglianza. |
| GetHashCode() |
Restituisce il codice hash per l'oggetto Quaternion. |
| Invert() |
Sostituisce il quaternione specificato con il relativo inverso. |
| Multiply(Quaternion, Quaternion) |
Moltiplica i valori specificati Quaternion . |
| Normalize() |
Restituisce un quaternione normalizzato. |
| Parse(String) |
Converte una rappresentazione di stringa di un oggetto Quaternion nella struttura equivalente Quaternion . |
| Slerp(Quaternion, Quaternion, Double, Boolean) |
Interpola tra gli orientamenti, rappresentati come Quaternion strutture, usando l'interpolazione lineare sferica. |
| Slerp(Quaternion, Quaternion, Double) |
Interpola tra due orientamenti usando l'interpolazione lineare sferica. |
| Subtract(Quaternion, Quaternion) |
Sottrae un quaternione da un altro. |
| ToString() |
Crea una rappresentazione di stringa dell'oggetto . |
| ToString(IFormatProvider) |
Crea una rappresentazione di stringa dell'oggetto . |
Operatori
| Nome | Descrizione |
|---|---|
| Addition(Quaternion, Quaternion) |
Aggiunge i valori specificati Quaternion . |
| Equality(Quaternion, Quaternion) |
Confronta due Quaternion istanze per verificare l'uguaglianza esatta. |
| Inequality(Quaternion, Quaternion) |
Confronta due Quaternion istanze per verificare la disuguaglianza esatta. |
| Multiply(Quaternion, Quaternion) |
Moltiplica il quaternione specificato per un altro. |
| Subtraction(Quaternion, Quaternion) |
Sottrae un quaternione specificato da un altro. |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IFormattable.ToString(String, IFormatProvider) |
Questo membro supporta l'infrastruttura di Windows Presentation Foundation (macchine virtuali Windows) e non deve essere usato direttamente dal codice. Per una descrizione di questo membro, vedere ToString(String, IFormatProvider). |