Блин! Во всех статьях кроме той, которая на этом сайте, везде камеры для FPS вида от первого лица. Но зачем там вообще кватернионы если все прекрасно делается glRotatef??? Где же нормальная камера, не имеющая проблем с блокировкой осей??
vserver
> везде камеры для FPS вида от первого лица
А тебе как надо?
я делаю космосим. когда В КОСМОСЕ возникает gimbal lock это как-то не круто))
посмотрел симуляторы - результаты:
ШТОРМ - та же самая проблема
ms flight simulator - есть проблема
а вот например в леталке "Завтра Война" или во многих других космосимах все именно так как мне надо))
То есть мне как-то надо представить кватернион вращения без axis-angle и поворачивать его, но ни в одной статье не описано хотя бы вскользь это сделать
камера управляется мышкой, но она ни на что не нацелена))
vserver
> но ни в одной статье не описано хотя бы вскользь это сделать
Да ну?
Умножение двух кватернионов можно записать в виде:
qq' = [ vv' + wv' + w'v, ww' – v•v' ]где vv' — векторное произведение, v•v' — скалярное произведение векторов.
Одна из самых полезных операций, она аналогична умножению двух матриц поворота. Итоговый кватернион представляет собой комбинацию вращений — объект повернули на q' а затем на q (если смотреть из глобальной системы координат).
я это прекрасно понимаю, не понимаю лишь одного - как поворачивать сделать кватернион поворота без углов эйлера??
причем относительно не какой-то оси, а кватерниона??
и вообще его поворачивать??
vserver
поворачивай относительно локальной системы координат, а не глобальной. обычными glRotate.
то есть?? это как?
с помощью atan2 это делается, получаются углы векторов
минимум нужно два вектора
получаешь с помощью их, atan2, и вращения точек назад, углы осей y,x,z
потом поворачиваешь напрмер - 0,0,1 и 0,1,0 векторы вокруг только одной из осей (это и есть относительно локальной)
а потом поворачиваешь их ещё на полученные(как было) углы
Тема в архиве.