Войти
ПрограммированиеФорумГрафика

как же избавиться от gimbal lock?? (3 стр)

Страницы: 1 2 3
#30
13:55, 31 дек. 2009

Блин! Во всех статьях кроме той, которая на этом сайте, везде камеры для FPS вида от первого лица. Но зачем там вообще кватернионы если все прекрасно делается glRotatef??? Где же нормальная камера, не имеющая проблем с блокировкой осей??


#31
13:57, 31 дек. 2009

vserver
> везде камеры для FPS вида от первого лица
А тебе как надо?

#32
14:29, 31 дек. 2009

я делаю космосим. когда В КОСМОСЕ возникает gimbal lock это как-то не круто))

посмотрел симуляторы - результаты:
ШТОРМ - та же самая проблема
ms flight simulator - есть проблема

а вот например в леталке "Завтра Война" или во многих других космосимах все именно так как мне надо))

#33
14:32, 31 дек. 2009

То есть мне как-то надо представить кватернион вращения без axis-angle и поворачивать его, но ни в одной статье не описано хотя бы вскользь это сделать

#34
14:37, 31 дек. 2009

камера управляется мышкой, но она ни на что не нацелена))

#35
14:39, 31 дек. 2009

vserver
> но ни в одной статье не описано хотя бы вскользь это сделать
Да ну?

Умножение двух кватернионов можно записать в виде:

qq' = [ vv' + wv' + w'v, ww' – v•v' ]где vv' — векторное произведение, v•v' — скалярное произведение векторов.

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

#36
14:52, 31 дек. 2009

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

#37
14:57, 31 дек. 2009

причем относительно не какой-то оси, а кватерниона??

#38
14:59, 31 дек. 2009

и вообще его поворачивать??

#39
15:00, 31 дек. 2009

vserver
поворачивай относительно локальной системы координат, а не глобальной. обычными glRotate.

#40
15:39, 31 дек. 2009

то есть?? это как?

#41
19:10, 31 дек. 2009

с помощью atan2 это делается, получаются углы векторов

минимум нужно два вектора
получаешь с помощью их, atan2, и вращения точек назад, углы осей y,x,z

потом поворачиваешь напрмер - 0,0,1 и 0,1,0 векторы вокруг только одной из осей (это и есть относительно локальной)

а потом поворачиваешь их ещё на полученные(как было) углы

Страницы: 1 2 3
ПрограммированиеФорумГрафика

Тема в архиве.