Quaternion Estrutura
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
- 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
Observações
Os quatérnios permitem interpolar entre transformações de rotação aplicadas a um objeto, facilitando assim o cálculo de animações suaves de rotações. Um quatérnio representa um eixo de rotação e uma rotação em torno desse eixo. É possível definir individualmente o eixo e o ângulo de rotação das posições inicial e final de um objeto rodado, mas as posições intermédias desse objeto durante uma animação são computacionalmente incertas. Ao determinar um quaternião que representa a orientação original de um objeto 3D e outro que representa a sua orientação de destino, pode-se interpolar suavemente entre essas orientações.
Em XAML, o delimitador entre os valores de a Quaternion pode ser uma vírgula ou um espaço.
Algumas culturas podem usar o carácter vírgula como delimitador decimal em vez do carácter do período. O processamento XAML para cultura invariante tem por defeito en-US na maioria das implementações de processadores XAML, e espera que o período seja o delimitador decimal. Deves evitar usar o carácter vírgula como delimitador decimal se especificares a Quaternion em XAML, porque isso vai entrar em conflito com a conversão do tipo de cadeia de um Quaternion valor de atributo para os seus componentes.
Uso de atributos XAML
<object property="x,y,z,w"/>
-or-
<object property="x y z w"/>
Valores XAML
x O X componente desta Quaternion estrutura.
y O Y componente desta Quaternion estrutura.
z O Z componente desta Quaternion estrutura.
w O W componente desta Quaternion estrutura.
Construtores
| Name | Description |
|---|---|
| Quaternion(Double, Double, Double, Double) |
Inicializa uma nova instância da Quaternion estrutura. |
| Quaternion(Vector3D, Double) |
Inicializa uma nova instância da Quaternion estrutura. |
Propriedades
| Name | Description |
|---|---|
| Angle |
Obtém o ângulo do quaternion, em graus. |
| Axis |
Obtém o eixo do quaternião. |
| Identity |
Obtém o quaternião da Identidade. |
| IsIdentity |
Obtém um valor que indica se o quaternião especificado é um Identity quaternião. |
| IsNormalized |
Obtém um valor que indica se o quaternião está normalizado. |
| W |
Obtém o componente W do quaternião. |
| X |
Obtém o componente X do quaternião. |
| Y |
Obtém a componente Y do quaternião. |
| Z |
Obtém a componente Z do quaternião. |
Métodos
| Name | Description |
|---|---|
| Add(Quaternion, Quaternion) |
Adiciona os quatérnios especificados. |
| Conjugate() |
Substitui um quaternião pelo seu conjugado. |
| Equals(Object) |
Compara duas Quaternion instâncias para a igualdade. |
| Equals(Quaternion, Quaternion) |
Compara duas Quaternion instâncias para a igualdade. |
| Equals(Quaternion) |
Compara duas Quaternion instâncias para a igualdade. |
| GetHashCode() |
Devolve o código de hash para o Quaternion. |
| Invert() |
Substitui o quatérnio especificado pelo seu inverso. |
| Multiply(Quaternion, Quaternion) |
Multiplica os valores especificados Quaternion . |
| Normalize() |
Devolve um quaternião normalizado. |
| Parse(String) |
Converte uma representação de cadeias de a Quaternion na estrutura equivalente Quaternion . |
| Slerp(Quaternion, Quaternion, Double, Boolean) |
Interpola entre orientações, representadas como Quaternion estruturas, usando interpolação linear esférica. |
| Slerp(Quaternion, Quaternion, Double) |
Interpola entre duas orientações usando interpolação linear esférica. |
| Subtract(Quaternion, Quaternion) |
Subtrai um Quaternion a outro. |
| ToString() |
Cria uma representação string do objeto. |
| ToString(IFormatProvider) |
Cria uma representação string do objeto. |
Operadores
| Name | Description |
|---|---|
| Addition(Quaternion, Quaternion) |
Adiciona os valores especificados Quaternion . |
| Equality(Quaternion, Quaternion) |
Compara duas Quaternion instâncias para igualdade exata. |
| Inequality(Quaternion, Quaternion) |
Compara dois Quaternion casos para a desigualdade exata. |
| Multiply(Quaternion, Quaternion) |
Multiplica o quaternião especificado por outro. |
| Subtraction(Quaternion, Quaternion) |
Subtrai um quaternião especificado a outro. |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| IFormattable.ToString(String, IFormatProvider) |
Este membro suporta a infraestrutura Windows Presentation Foundation (WPF) e não foi concebido para ser usado diretamente a partir do seu código. Para uma descrição deste elemento, veja ToString(String, IFormatProvider). |