Вопрос

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

Примечание:какие-нибудь хорошие уроки/примеры?Я погуглил и просмотрел первые несколько страниц, но, может быть, у вас есть какие-нибудь демо/лабораторные работы из компьютерных или математических курсов, которыми вы могли бы поделиться?

Спасибо

Это было полезно?

Решение

Я поклонник класса кватернионов Irrlicht.Он имеет лицензию zlib, и его довольно легко извлечь из Irrlicht:

Другие советы

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

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

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

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

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

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

По моему мнению, лучший способ узнать, как работают кватернионы, — это разобраться в математике самостоятельно.Страница Википедии на кватернионы и преобразование содержат все необходимые формулы.На основе этого я написал свою собственную библиотеку кватернионов :) (Она на Haskell, поэтому я не буду ее публиковать.)

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top