Quaternion

Espacio de nombres: Digi21.Math
Ensamblado: Digi21.DigiNG

Cuaternión de rotación: cuatro componentes W, X, Y y Z que representan una rotación en el espacio. Es el tipo de ReadOnlyText.Orientation y de Text.Orientation.

public struct Quaternion

Un cuaternión (quaternion) unitario representa la rotación de un ángulo θ alrededor de un eje con vector director unitario (ux, uy, uz) con las componentes W = cos(θ/2), X = ux·sin(θ/2), Y = uy·sin(θ/2) y Z = uz·sin(θ/2). Por ejemplo, la rotación de 90° alrededor del eje X es new Quaternion(Math.Cos(Math.PI / 4), Math.Sin(Math.PI / 4), 0.0, 0.0).

Quaternion es un tipo de valor: una asignación copia las cuatro componentes. Una propiedad que devuelve un Quaternion, como Text.Orientation, devuelve una copia: para cambiar la orientación del texto, asigna el cuaternión modificado a la propiedad.

La estructura no normaliza las componentes. Text.Orientation normaliza el cuaternión cuando se le asigna.

El valor por defecto de la estructura, default(Quaternion) o new Quaternion(), tiene las cuatro componentes a 0 y no representa ninguna rotación. Si se asigna ese valor a Text.Orientation, el texto almacena Identity.

La estructura no define los operadores == y !=. Equals, heredado de ValueType, compara las cuatro componentes sin tolerancia. Los cuaterniones q y -q representan la misma rotación, pero Equals los considera distintos.

Constructores

Constructor Descripción
Quaternion(double w, double x, double y, double z) Crea el cuaternión (w, x, y, z). No normaliza las componentes.

Propiedades

Propiedad Descripción
double W { get; set; } Componente real.
double X { get; set; } Componente imaginaria i.
double Y { get; set; } Componente imaginaria j.
double Z { get; set; } Componente imaginaria k.

Propiedades estáticas

Propiedad Descripción
Quaternion Identity { get; } Cuaternión identidad (1, 0, 0, 0): la rotación nula. Un texto con esta orientación está en el plano XY.

Métodos

Método Descripción
string ToString() Devuelve (W, X, Y, Z). Los números se formatean con la referencia cultural invariable (CultureInfo.InvariantCulture), con el punto como separador decimal, sea cual sea la referencia cultural actual: Quaternion.Identity se escribe (1, 0, 0, 0).

Ejemplo

El ejemplo de Text.Orientation crea un texto vertical con un Quaternion y escribe la orientación con ToString.