Ответ 1
Я поклонник класса кватернионов Иррихта. Он лицензирован zlib и довольно легко извлекается из Irrlicht:
Любые хорошие библиотеки для вычислений кватернионов в C/С++?
Боковое примечание: любые хорошие учебники/примеры? У меня есть Google, и я был на первых нескольких страницах, но, возможно, у вас есть демо/лаборатории из курсов compsci или math, которые вы могли бы/могли бы поделиться?
Спасибо
Я поклонник класса кватернионов Иррихта. Он лицензирован zlib и довольно легко извлекается из Irrlicht:
There Eigen, шаблонная библиотека математического и геометрия, используемая в Blender и программами KDE, которая имеет гладкий класс Quaternion, определенный в одном файле .h.
Информация на http://eigen.tuxfamily.org/index.php?title=Main_Page и http://www.ohloh.net/p/5393
Вы можете попробовать с Boost - обычно хорошее место для начала. У них есть выделенная sublibrary для этого.
Что касается примеров, посмотрите на документацию и модульные тесты, которые идут вместе с Boost.
Если вы решите опрокинуть свой собственный или на самом деле хотите понять математику за кодом (полезно для отладки), я настоятельно рекомендую сайт Мартина Бейкера. Он выглядит примитивным, но объяснения обстоятельны и легко следуют, и он также предоставляет код в местах.
DirectX имеет свои собственные функции quaternion, как и другие другие 3D-библиотеки.
На мой взгляд, лучший способ узнать, как работают кватернионы, - это провалить математику самостоятельно. Страница Wikipedia на quaternions и conversion содержат все необходимые формулы. Я написал свою собственную библиотеку кватернионов из этого: (Это в Haskell, поэтому я не буду утруждать ее публикацией.)
Для документации по кватернионам ознакомьтесь с учебниками по 3D-графике. Это просто матрицы, которые производят эффект 3D-вращения, используя умножение вместо дорогостоящей тригонометрии.
Этот веб-сайт, euclideanspace, очень важен, если вы работаете с кватернионами. Он имеет все арифметические шаг за шагом, эквивалентности, упрощения, примеры кода на разных языках. Я выполнил большинство своих функций самостоятельно, следуя этой странице. Я предпочитаю это, чем загрузку библиотеки. Функции просты в программировании, и вы учитесь на этом пути.
В качестве примера я предлагаю вам проверить эту функцию С++ о умножении кватернионов: Эффективное умножение кватерниона С++ с использованием cv:: Mat
Существует graphene, которая является простой библиотекой C/GObject с оптимизацией SIMD для различных вычислений векторов, матриц, кватернионов и т.д., которые общий в 3D-графике.