vserver
> ведь надо не одну ось использовать, а 3
Если будут 3 оси, то и gimbal lock обязательно будет.
так как же от него избавиться???????????????? можете плз сказать безо всяких загадок??
vserver
> можете плз сказать безо всяких загадок??
Хранить сразу в кватернионах, без углов Эйлера.
пнятн спс
vserver
> исходные данные: RX,RY,RZ
Не надо хранить операцию вращения в виде Pitch Yaw Roll. Потому как, что бы избавится от gimbal lock-а в таком виде придется делать Euler Filter. А оно тебе надо? Лучшее решение, как тут уже сказали - это представить вращения в виде кватерниона.
да! явсе понял
только как тогда изменять угол поворота объекта при помощи shortest arc??
vserver
> только как тогда изменять угол поворота объекта при помощи shortest arc??
Статью внимательно читай.
vserver
> что же надо делать с квантерионами???
для начала надо научиться правильно писать слово "кватернион".
мда
я все посмотрел но все таки никак до сих пор не могу понять как сделать управление мышкой. про камеру, нацеленную на объект вполне понятно))
НЕПОНЯТНО
хм камеры по данным ссылкам все равно с блокировкой оси))
А кто-нибудь сталкивался с проблемой преобразования из кватерниона в углы Эйлера на полюсе (когда питч ~= +/-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; }
НАРОД короч если у кого нить есть какие нибудь исходники поделитесь пожалуйста))
Тема в архиве.