Отрегулируйте координаты камеры, чтобы представить изменения в значениях азимута, высоты и крена - PullRequest
2 голосов
/ 20 июня 2011

В настоящее время я работаю с libQGLViewer, и я получаю поток данных от моего датчика, удерживая азимут , высота и крен значения, 3 углы Эйлера .

Проблему можно рассматривать как камеру, представляющую самолет, аизменения в азимуте, высоте и повороте плоскости.

Мне нужен общий набор матриц преобразования, чтобы преобразовать точку камеры и вектор вверх, чтобы представить это, но я не уверен, как рассчитать их, так как осьвращаться об изменениях после каждого поворота (я думаю?).

Или это, или просто каким-то образом передать значения азимута, угла возвышения, крена в камеру и сделать какую-нибудь функцию для меня?Я понимаю, что cameraPosition.setOrientation(Quaterion something) может работать, но я не мог этого понять.Есть идеи?

1 Ответ

0 голосов
/ 25 июня 2011

Например, вы можете просто взять три матрицы для вращения вокруг координатных осей, соответственно вставить свои углы и умножить эти три матрицы, чтобы получить окончательную матрицу вращения (но использовать правильный порядок умножения).

Вы также можете просто вычислить кватернион из эйлеровых углов.Ищите здесь для идей.Просто помните, что вы всегда должны использовать правильный порядок углов Эйлера (независимо от того, что означают ваши три значения), возможно, с некоторыми экспериментами (эти разные соглашения Эйлера всегда сводят меня с ума).: В ответ на ваш комментарий: Это учитывается порядком поворотов.Матрицы, применяемые как v '= XYZv, соответствуют повороту вокруг z, неизменному y, а затем неизменному x, который равен x, y', а затем z ''.Поэтому вы должны следить за осями (что означают ваши слова, такие как азимут) и порядком, в котором вы вращаетесь вокруг этих осей.

...