Partager via


Quaternion Structure

Définition

Structure qui représente une rotation en trois dimensions.

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
Héritage
Quaternion
Attributs
Implémente

Exemples

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

Remarques

Les quaternions vous permettent d’interpoler entre les transformations de rotation appliquées à un objet, ce qui facilite le calcul des animations fluides des rotations. Un quaternion représente un axe de rotation et une rotation autour de cet axe. Il est possible de définir individuellement l’axe et l’angle de rotation des positions de début et de fin d’un objet pivoté, mais les positions intermédiaires de cet objet au cours d’une animation sont incertaines du point de vue du calcul. En déterminant un quaternion qui représente l’orientation d’origine d’un objet 3D et un quaternion qui représente son orientation de destination, vous pouvez interpoler en douceur entre ces orientations.

En XAML, le délimiteur entre les valeurs d’un Quaternion peut être une virgule ou un espace.

Certaines cultures peuvent utiliser le caractère de virgule comme délimiteur décimal au lieu du caractère point. Le traitement XAML pour la culture invariante est par défaut en-US dans la plupart des implémentations de processeur XAML et s’attend à ce que la période soit le délimiteur décimal. Vous devez éviter d’utiliser le caractère de virgule comme délimiteur décimal si vous spécifiez un Quaternion en XAML, car cela va entrer en conflit avec la conversion de type de chaîne d’une valeur d’attribut Quaternion en ses composants.

Utilisation d'attributs XAML

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

Valeurs XAML

x
Composant X de cette structure Quaternion.

y
Composant Y de cette structure Quaternion.

z
Composant Z de cette structure Quaternion.

w
Composant W de cette structure Quaternion.

Constructeurs

Quaternion(Double, Double, Double, Double)

Initialise une nouvelle instance de la structure Quaternion.

Quaternion(Vector3D, Double)

Initialise une nouvelle instance de la structure Quaternion.

Propriétés

Angle

Obtient l'angle du quaternion, en degrés.

Axis

Obtient l'axe du quaternion.

Identity

Obtient le quaternion Identity.

IsIdentity

Obtient une valeur qui indique si le quaternion spécifié est un quaternion Identity.

IsNormalized

Obtient une valeur qui indique si le quaternion est normalisé ou pas.

W

Obtient le composant W du quaternion.

X

Obtient le composant X du quaternion.

Y

Obtient le composant Y du quaternion.

Z

Obtient le composant Z du quaternion.

Méthodes

Add(Quaternion, Quaternion)

Ajoute les quaternions spécifiés.

Conjugate()

Remplace un quaternion par son conjugué.

Equals(Object)

Compare si deux instances Quaternion sont égales.

Equals(Quaternion)

Compare si deux instances Quaternion sont égales.

Equals(Quaternion, Quaternion)

Compare si deux instances Quaternion sont égales.

GetHashCode()

Retourne le code de hachage pour la Quaternion.

Invert()

Remplace le quaternion spécifié par son inverse.

Multiply(Quaternion, Quaternion)

Multiplie les valeurs Quaternion spécifiées.

Normalize()

Renvoie un quaternion normalisé.

Parse(String)

Convertit une représentation sous forme de chaîne de Quaternion en la structure Quaternion équivalente.

Slerp(Quaternion, Quaternion, Double)

Interpole entre deux orientations, en utilisant une interpolation linéaire sphérique.

Slerp(Quaternion, Quaternion, Double, Boolean)

Interpole entre des orientations représentées en tant que structures Quaternion en utilisant une interpolation linéaire sphérique.

Subtract(Quaternion, Quaternion)

Soustrait un Quaternion d'un autre.

ToString()

Crée une représentation sous forme de chaîne de l'objet.

ToString(IFormatProvider)

Crée une représentation sous forme de chaîne de l'objet.

Opérateurs

Addition(Quaternion, Quaternion)

Additionne les valeurs Quaternion spécifiées.

Equality(Quaternion, Quaternion)

Compare l'égalité exacte de deux instances de Quaternion.

Inequality(Quaternion, Quaternion)

Compare l'inégalité exacte de deux instances de Quaternion.

Multiply(Quaternion, Quaternion)

Multiplie le quaternion spécifié par un autre.

Subtraction(Quaternion, Quaternion)

Soustrait un quaternion spécifié d'un autre.

Implémentations d’interfaces explicites

IFormattable.ToString(String, IFormatProvider)

Ce membre prend en charge l’infrastructure Windows Presentation Foundation (WPF) et n’est pas destiné à être utilisé directement à partir de votre code. Pour obtenir une description de ce membre, consultez ToString(String, IFormatProvider).

S’applique à