При попытке ответить на другой вопрос SO вопрос о том, как вычислить углы Эйлера для измерений > 3, придумал. Пакет RSpincalc
имеет прямую функцию DCM2EA
для преобразования матрицы вращения 3D в углы Эйлера или Тейта-Брайана, но это только обрабатывает конкретный случай трех измерений. Страница wikipedia на углах Эйлера вкратце обсуждает вопрос о расширении углов Эйлера до более высоких измерений и цитирует Итальянский документ, который, по-видимому, обобщает метод на большее количество измерений. К сожалению, ни мой итальянский, ни моя математика не могут принять эту статью и создать полезную функцию R.
Мой текущий метод, используемый в этом ответе, является немного громоздким, мягко говоря. Я использую пакет Ryacas
для создания символической матрицы, которая является составной частью серии поворотов для произвольного числа измерений. Затем это можно решить итеративно против известной матрицы вращения, чтобы найти требуемые углы. Он работает, но он становится все медленнее, когда количество измерений составляет 5 или более.
Есть ли лучший способ достичь этой цели, будь то путем реализации метода в итальянской бумаге или что-то еще?