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

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

Страницы: 1 2 3 Следующая »
#15
14:05, 28 дек. 2009

vserver
> ведь надо не одну ось использовать, а 3
Если будут 3 оси, то и gimbal lock обязательно будет.


#16
14:08, 28 дек. 2009

так как же от него избавиться???????????????? можете плз сказать безо всяких загадок??

#17
14:12, 28 дек. 2009

vserver
> можете плз сказать безо всяких загадок??
Хранить сразу в кватернионах, без углов Эйлера.

#18
14:16, 28 дек. 2009

пнятн спс

#19
14:28, 28 дек. 2009

vserver
> исходные данные: RX,RY,RZ

Не надо хранить операцию вращения в виде Pitch Yaw Roll. Потому как, что бы избавится от gimbal lock-а в таком виде придется делать Euler Filter. А оно тебе надо? Лучшее решение, как тут уже сказали - это представить вращения в виде кватерниона.

#20
15:22, 28 дек. 2009

да! явсе понял
только как тогда изменять угол поворота объекта при помощи shortest arc??

#21
15:27, 28 дек. 2009

vserver
> только как тогда изменять угол поворота объекта при помощи shortest arc??
Статью внимательно читай.

#22
17:07, 28 дек. 2009

vserver
> что же надо делать с квантерионами???
для начала надо научиться правильно писать слово "кватернион".

#23
21:07, 28 дек. 2009

http://www.gamedev.ru/code/forum/?id=124685

#24
10:31, 29 дек. 2009

мда
я все посмотрел но все таки никак до сих пор не могу понять как сделать управление мышкой. про камеру, нацеленную на объект вполне понятно))

#25
11:16, 29 дек. 2009

НЕПОНЯТНО

#26
11:20, 29 дек. 2009

vserver
http://www.gamedev.net/reference/articles/article1997.asp

#27
15:54, 29 дек. 2009

хм камеры по данным ссылкам все равно с блокировкой оси))

#28
19:36, 29 дек. 2009

А кто-нибудь сталкивался с проблемой преобразования из кватерниона в углы Эйлера на полюсе (когда питч ~= +/-90)
такой код (правда это из матрицы) меня не устраивает (тоже косячит)

// first use the normal calculus
yaw = btScalar(btAtan2(m_el[1].x(), m_el[0].x()));
pitch = btScalar(btAsin(-m_el[2].x()));
roll = btScalar(btAtan2(m_el[2].y(), m_el[2].z()));

// on pitch = +/-HalfPI
if (btFabs(pitch)==SIMD_HALF_PI)
{
  if (yaw>0)
    yaw-=SIMD_PI;
  else
    yaw+=SIMD_PI;

  if (roll>0)
    roll-=SIMD_PI;
  else
    roll+=SIMD_PI;
}

#29
13:50, 31 дек. 2009

НАРОД короч если у кого нить есть какие нибудь исходники поделитесь пожалуйста))

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика

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