Compartilhar via


Quaternion Estrutura

Definição

Estrutura que representa uma rotação em três dimensões.

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
Herança
Quaternion
Atributos
Implementações

Exemplos

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

Comentários

Os quaternions permitem que você interpole entre transformações de rotação aplicadas a um objeto, facilitando a computação de animações suaves de rotações. Um quaternion representa um eixo de rotação e uma rotação ao redor desse eixo. É possível definir individualmente o eixo e o ângulo de rotação das posições inicial e final de um objeto girado, mas as posições intermediárias desse objeto durante uma animação são computacionalmente incertas. Ao determinar um quatérnio que representa a orientação original de um objeto 3D e um que representa sua orientação de destino, você pode interpolar sem problemas entre essas orientações.

No XAML, o delimitador entre os valores de um Quaternion pode ser uma vírgula ou um espaço.

Algumas culturas podem usar o caractere de vírgula como o delimitador decimal em vez do caractere de período. O processamento XAML para padrões de cultura invariáveis para en-US na maioria das implementações de processador XAML e espera que o período seja o delimitador decimal. Você deve evitar usar o caractere de vírgula como o delimitador decimal se especificar um Quaternion em XAML, pois isso entrará em conflito com a conversão de tipo de cadeia de caracteres de um Quaternion valor de atributo em seus componentes.

Uso do Atributo XAML

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

Valores XAML

x
O X componente dessa Quaternion estrutura.

y
O Y componente dessa Quaternion estrutura.

z
O Z componente dessa Quaternion estrutura.

w
O W componente dessa Quaternion estrutura.

Construtores

Quaternion(Double, Double, Double, Double)

Inicializa uma nova instância da estrutura Quaternion.

Quaternion(Vector3D, Double)

Inicializa uma nova instância da estrutura Quaternion.

Propriedades

Angle

Obtém o ângulo do quatérnion, em graus.

Axis

Obtém o eixo do quatérnion.

Identity

Obtém o quatérnion de Identidade.

IsIdentity

Obtém um valor que indica se o quatérnion especificado é um quatérnion Identity.

IsNormalized

Obtém um valor que indica se o quatérnion é normalizado.

W

Obtém o componente W do quatérnion.

X

Obtém o componente X do quatérnion.

Y

Obtém o componente Y do quatérnion.

Z

Obtém o componente Z do quatérnion.

Métodos

Add(Quaternion, Quaternion)

Adiciona os quatérnions especificados.

Conjugate()

Substitui um quatérnion pelo seu conjugado.

Equals(Object)

Compara duas instâncias de Quaternion quanto à igualdade.

Equals(Quaternion)

Compara duas instâncias de Quaternion quanto à igualdade.

Equals(Quaternion, Quaternion)

Compara duas instâncias de Quaternion quanto à igualdade.

GetHashCode()

Retorna o código hash para o Quaternion.

Invert()

Substitui o quatérnion especificado pelo seu inverso.

Multiply(Quaternion, Quaternion)

Multiplica os valores de Quaternion especificados.

Normalize()

Retorna um quatérnion normalizado.

Parse(String)

Converte uma representação de cadeia de caracteres de um Quaternion na estrutura Quaternion equivalente.

Slerp(Quaternion, Quaternion, Double)

Interpola entre duas orientações usando interpolação linear esférica.

Slerp(Quaternion, Quaternion, Double, Boolean)

Faz a interpolação entre orientações, representadas como estruturas Quaternion, usando interpolação linear esférica.

Subtract(Quaternion, Quaternion)

Subtrai um Quatérnion de outro.

ToString()

Cria uma representação de cadeia de caracteres do objeto.

ToString(IFormatProvider)

Cria uma representação de cadeia de caracteres do objeto.

Operadores

Addition(Quaternion, Quaternion)

Adiciona os valores de Quaternion especificados.

Equality(Quaternion, Quaternion)

Compara duas instâncias Quaternion quanto à igualdade exata.

Inequality(Quaternion, Quaternion)

Compara duas instâncias Quaternion quanto à desigualdade exata.

Multiply(Quaternion, Quaternion)

Multiplica o quatérnion especificado por outro.

Subtraction(Quaternion, Quaternion)

Subtrai um quatérnion especificado de outro.

Implantações explícitas de interface

IFormattable.ToString(String, IFormatProvider)

Esse membro dá suporte à infraestrutura de Windows Presentation Foundation (WPF) e não se destina a ser usado diretamente do seu código. Para obter uma descrição desse membro, confira ToString(String, IFormatProvider).

Aplica-se a