2009-02-03 10 views
24

Wszelkie dobre biblioteki dla kwaternionów obliczeń w C/C++?czwartorzędowych bibliotek w C/C++

Nota boczna: jakieś dobre samouczki/przykłady? Mam google i byłem na pierwszych kilku stronach, ale może masz jakieś dema/laboratoria z compsci lub kursy matematyczne, które mógłbyś/chciałbyś udostępnić?

Dzięki

+5

+1 dla kwaternionów. Oni są świetni. – jtbandes

+0

http://cqrlib.sourceforge.net/ – sastanin

Odpowiedz

8

Można spróbować z Boost - zazwyczaj dobre miejsce na początek. Mają one do tego dedicated sublibrary.

Jeśli chodzi o przykłady, zapoznaj się z dokumentacją i testami jednostkowymi dostarczonymi wraz z Boost.

4

DirectX ma swój własny quaternion functions, podobnie jak kilka innych bibliotek 3D.

Moim zdaniem najlepszym sposobem, aby dowiedzieć się, w jaki sposób pracują kwaterunki, jest samodzielna orka. Strona Wikipedii pod numerami quaternions i conversion zawiera wszystkie formuły, których potrzebujesz. Napisałem własną bibliotekę kwaternionową :) (Jest w Haskell, więc nie zawracam sobie głowy jej publikacją.)

+0

Dobry pomysł z DirectX i grafiką. Uczenie się może przynieść interesujące efekty wizualne. – Anonymous

+0

To nie jest takie trudne, jeśli nie możesz znaleźć bibliotek. Nie miałem z tym problemu, a moje matematyczne szkolenie z informatyki było bardzo ograniczone (informatyka, a nie nauka). –

3

Aby uzyskać dokumentację kwaternionów, sprawdź podręczniki graficzne 3D. Są po prostu matrycami, które dają efekt obrotu w 3D za pomocą mnożenia zamiast kosztownej trygonometrii.

7

Jeśli zdecydujesz się toczyć własną rękę, czy rzeczywiście chce zrozumieć matematykę za kodu (przydatne do debugowania), bardzo polecam Martin Baker's website. Wygląda prymitywnie, ale wyjaśnienia są dokładne i łatwe do naśladowania, a także zapewnia kod w miejscach.

2

Ta strona internetowa, euclideanspace, jest bardzo ważna, jeśli pracujesz z kwaternionami. Zawiera wszystkie operacje arytmetyczne krok po kroku, ekwiwalenty, uproszczenia, próbki kodu w różnych językach. Większość moich funkcji wykonywałem samodzielnie na tej stronie. Wolę to od niszczenia biblioteki. Funkcje są łatwe do zaprogramowania i uczą się w drodze.

Jako przykład Proponuję sprawdzić to C++ funkcję o mnożenie kwaternionów: Efficient C++ quaternion multiplication using cv::Mat

2

Jest graphene który jest prosty C/library gobject z optymalizacji SIMD dla różnych wektor, macierz, kwaterniony itp obliczeń które są powszechne w grafice 3D.