Кватернионы, возможно, являются подходящим выбором для представления внутренних вращений объектов. Они просты и эффективны для точной интерполяции и представления одной ориентации.
Однако представление кватернионов в пользовательском интерфейсе, как правило, неуместно - углы Эйлера, как правило, гораздо более знакомы пользователям, а их значения немного интуитивны и предсказуемы.
Углы Эйлера страдают от сложности на уровне кода - они требуют сохранения порядка вращения и составления практической ориентации (будь то матрица или кватернион) с использованием этого порядка и связанных углов, по меньшей мере, громоздко.
Надежные интерполяции наиболее удобно выполняются с использованием представления кватернионов - так значит ли это, что мы должны постоянно переходить между представлением Эйлера и представлением кватернионов? Возможно ли это с точки зрения производительности?
Можем ли мы сохранить ориентацию как кватернионы и преобразовать их только для отображения пользователю? Это может быть невозможно, поскольку для любой заданной ориентации имеется ровно одно кватернионное представление, но много эйлеровых представлений. Как мы выбираем "представление Эйлера, которое соответствует тому, которое первоначально определяло эту ориентацию? Это похоже на невозможную задачу - мы действительно потеряли информацию при преобразовании в кватернион.
Можно ли хранить как углы Эйлера, а затем преобразовывать в кватернионы по мере необходимости? Это, вероятно, не масштабируемо - преобразование из угла Эйлера в кватернион, интерполяция, а затем преобразование обратно может быть относительно дорогостоящим кодом.
Можно ли просто сохранить оба представления и использовать наиболее подходящие для любой ситуации? Большие затраты с точки зрения памяти (представить анимационные кривые для скелета около шестидесяти костей) и сохранение этих значений могут быть дорогими или, по крайней мере, громоздкими.
Кто-нибудь видел, использовал или хоть какое-нибудь умное решение этой проблемы? Конечно, три варианта выше не только одни? Существуют ли какие-либо другие проблемные области, подобные этому, которые были решены?