Согласно документу ARKit, то есть ARCamera, я вижу, что есть 2 способа описания ориентации камеры: camera.transform и EulerAngles. Сначала я преобразую матрицу вращения frame.camera в углы Эйлера, а затем выходные данные не равны значениям eulerAngle.
Почему? В чем разница между значениями camera.transform и eulerAngle в ARKit?
Подробности преобразования описаны ниже.
Используйте функцию из библиотеки Eigen, чтобы получить углы Эйлера, Rx.eulerAngles(0, 1, 2), где Rx - матрица вращения frame.camera.transform.
Например:
frame.camera.transform:
Rx =
[ -0.0443775, -0.900017, 0.433589;
0.998663, -0.0284454, 0.043167;
-0.0265174, 0.434925, 0.900076; ]
Выходы Rx.eulerAngles(0, 1, 2) - [ 3.09367, 2.69312, -1.52153].
Значения eulerAngle равны [ -0.449955, -0.0294528, -1.60239].





Преобразование дает вам информацию о положении, углах и масштабе узла, углы Эйлера говорят вам только об углах, то есть крене по тангажу и рысканью.