MatrixToRotations
Espacio de nombres: Digi21.Math
Ensamblado: Digi21.DigiNG
Calcula los giros omega, phi y kappa de una matriz de giro de 3 × 3. Es la operación inversa de RotationsToMatrix. Método de Angles.
public static void MatrixToRotations(this double[,] eulerMatrix, out double omega, out double phi, out double kappa)
Parámetros
| Parámetro | Descripción |
|---|---|
eulerMatrix |
Matriz de giro con la disposición de RotationsToMatrix. Solo se leen los elementos [0, 0], [1, 0], [2, 0] y [2, 1]. |
omega |
Giro alrededor del eje X, en radianes: −asin(eulerMatrix[2, 1] / cos phi). |
phi |
Giro alrededor del eje Y, en radianes: asin(eulerMatrix[2, 0]), entre −π/2 y π/2. |
kappa |
Giro alrededor del eje Z, en radianes: atan2(−eulerMatrix[1, 0], eulerMatrix[0, 0]), entre −π y π. |
omega también queda entre −π/2 y π/2, porque se calcula con asin y no se lee eulerMatrix[2, 2]. Si la matriz se creó con un omega o un phi fuera del intervalo [−π/2, π/2], los giros devueltos no reproducen la matriz. Con phi igual a ±π/2, cos phi vale 0 y omega es NaN.
Excepciones
| Excepción | Cuándo |
|---|---|
NullReferenceException |
eulerMatrix es null. |
IndexOutOfRangeException |
eulerMatrix tiene menos de 3 filas o de 2 columnas. |
Ejemplo
Angles.RotationsToMatrix(0.01, -0.02, 1.2, out var matriz);
Angles.MatrixToRotations(matriz, out var omega, out var phi, out var kappa);
// omega ≈ 0.01, phi ≈ -0.02, kappa ≈ 1.2
Console.WriteLine($"{omega} {phi} {kappa}");