Подтвердить что ты не робот

Библиотеки кватернионов в C/С++

Любые хорошие библиотеки для вычислений кватернионов в C/С++?

Боковое примечание: любые хорошие учебники/примеры? У меня есть Google, и я был на первых нескольких страницах, но, возможно, у вас есть демо/лаборатории из курсов compsci или math, которые вы могли бы/могли бы поделиться?

Спасибо

4b9b3361

Ответ 2

There Eigen, шаблонная библиотека математического и геометрия, используемая в Blender и программами KDE, которая имеет гладкий класс Quaternion, определенный в одном файле .h.

Информация на http://eigen.tuxfamily.org/index.php?title=Main_Page и http://www.ohloh.net/p/5393

Ответ 3

Вы можете попробовать с Boost - обычно хорошее место для начала. У них есть выделенная sublibrary для этого.

Что касается примеров, посмотрите на документацию и модульные тесты, которые идут вместе с Boost.

Ответ 4

Если вы решите опрокинуть свой собственный или на самом деле хотите понять математику за кодом (полезно для отладки), я настоятельно рекомендую сайт Мартина Бейкера. Он выглядит примитивным, но объяснения обстоятельны и легко следуют, и он также предоставляет код в местах.

Ответ 5

DirectX имеет свои собственные функции quaternion, как и другие другие 3D-библиотеки.

На мой взгляд, лучший способ узнать, как работают кватернионы, - это провалить математику самостоятельно. Страница Wikipedia на quaternions и conversion содержат все необходимые формулы. Я написал свою собственную библиотеку кватернионов из этого: (Это в Haskell, поэтому я не буду утруждать ее публикацией.)

Ответ 6

Для документации по кватернионам ознакомьтесь с учебниками по 3D-графике. Это просто матрицы, которые производят эффект 3D-вращения, используя умножение вместо дорогостоящей тригонометрии.

Ответ 7

Этот веб-сайт, euclideanspace, очень важен, если вы работаете с кватернионами. Он имеет все арифметические шаг за шагом, эквивалентности, упрощения, примеры кода на разных языках. Я выполнил большинство своих функций самостоятельно, следуя этой странице. Я предпочитаю это, чем загрузку библиотеки. Функции просты в программировании, и вы учитесь на этом пути.

В качестве примера я предлагаю вам проверить эту функцию С++ о умножении кватернионов: Эффективное умножение кватерниона С++ с использованием cv:: Mat

Ответ 8

Существует graphene, которая является простой библиотекой C/GObject с оптимизацией SIMD для различных вычислений векторов, матриц, кватернионов и т.д., которые общий в 3D-графике.