Вычисление аналога углов Эйлера/углов Тейт-Брайана для размеров> 3

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

Мой текущий метод, используемый в этом ответе, является немного громоздким, мягко говоря. Я использую пакет Ryacas для создания символической матрицы, которая является составной частью серии поворотов для произвольного числа измерений. Затем это можно решить итеративно против известной матрицы вращения, чтобы найти требуемые углы. Он работает, но он становится все медленнее, когда количество измерений составляет 5 или более.

Есть ли лучший способ достичь этой цели, будь то путем реализации метода в итальянской бумаге или что-то еще?

Ответы

Ответ 1

В 1972 году появилась интересная статья здесь, в которой рассматривается проблема вычисления N-мерных углов Эйлера с учетом N-мерной ортогональной матрицы (которая Я предполагаю, что у вас есть). Я снял бумагу, и она дает формулы для того, что вам кажется нужным:

  • Матрица преобразования, заданная N-мерными углами Эйлера
  • N-мерные углы Эйлера, заданные матрицей преобразования
  • Альтернативные параметризации, так как уравнения, приведенные в статье, адресуют одну конкретную параметризацию, которая является общей для представлений Эйлера.

Я не пытался переименовывать и проверять свои уравнения, но они дают явные формулы, поэтому вы можете реализовать их для малых измерений, для которых у вас уже есть ответы, и посмотрите, согласны ли они.