Istnieje wiele projektów, które zdecydowały się na to w Generic Graphics Toolkit . Znajdujący się tam GMTL jest fajny - jest dość mały, bardzo funkcjonalny i był używany na tyle szeroko, aby był niezawodny. OpenSG, VRJuggler i inne projekty przeszły na używanie tego zamiast własnej, ręcznie toczonej matematyki vertor / matrix.
Uważam, że jest całkiem fajny - robi wszystko za pomocą szablonów, więc jest bardzo elastyczny i bardzo szybki.
Edytować:
Po dyskusji na temat komentarzy i zmianach pomyślałem, że przekażę więcej informacji o zaletach i wadach konkretnych wdrożeń oraz o tym, dlaczego możesz wybrać jedną z nich, biorąc pod uwagę twoją sytuację.
GMTL -
Korzyści: prosty interfejs API, specjalnie zaprojektowany dla silników graficznych. Obejmuje wiele prymitywnych typów ukierunkowanych na renderowanie (takich jak samoloty, AABB, quatenrions z wielokrotną interpolacją itp.), Których nie ma w innych pakietach. Bardzo niski narzut pamięci, dość szybki, łatwy w użyciu.
Wady: API jest bardzo skoncentrowane na renderowaniu i grafice. Nie obejmuje matryc ogólnego przeznaczenia (NxM), rozkładu i rozwiązywania macierzy itp., Ponieważ są one poza sferą tradycyjnych aplikacji graficznych / geometrycznych.
Eigen -
Korzyści: Czysty interfejs API , dość łatwy w użyciu. Zawiera moduł Geometrii z czwartorzędami i przekształceniami geometrycznymi. Niski narzut pamięci. Pełna, bardzo wydajna rozwiązywanie dużych macierzy NxN i innych procedur matematycznych ogólnego zastosowania.
Wady: może być nieco większy zakres niż chcesz (?). Mniej procedur geometrycznych / renderujących w porównaniu do GMTL (tj. Definicje kątów Eulera itp.).
IMSL -
Korzyści: Bardzo kompletna biblioteka numeryczna. Bardzo, bardzo szybki (podobno najszybszy solver). Zdecydowanie największy, najbardziej kompletny matematyczny interfejs API. Wspierany komercyjnie, dojrzały i stabilny.
Wady: koszt - nie tanie. Bardzo niewiele metod geometrycznych / renderujących, więc musisz rzucić własne na ich klasy algebry liniowej.
NT2 -
Korzyści: Zapewnia bardziej znaną składnię, jeśli jesteś przyzwyczajony do MATLAB. Zapewnia pełny rozkład i rozwiązywanie dużych matryc itp.
Wady: matematyczne, bez renderowania. Prawdopodobnie nie tak wydajny jak Eigen.
LAPACK -
Korzyści: Bardzo stabilne, sprawdzone algorytmy. Byłem tu od dłuższego czasu. Kompletne rozwiązywanie macierzy itp. Wiele opcji dla niejasnej matematyki.
Wady: w niektórych przypadkach nie tak wydajne. Przeniesiony z Fortran, z nieparzystym API do użytku.
Dla mnie osobiście sprowadza się do jednego pytania - jak zamierzasz to wykorzystać. Jeśli skupiasz się tylko na renderowaniu i grafice, podoba mi się Generic Graphics Toolkit , ponieważ działa on dobrze i obsługuje wiele przydatnych operacji renderowania po wyjęciu z pudełka, bez konieczności implementowania własnych. Jeśli potrzebujesz rozwiązywania macierzy ogólnego przeznaczenia (tj. Rozkładu dużych macierzy SVD lub LU), wybrałbym Eigen , ponieważ obsługuje to, zapewnia pewne operacje geometryczne i jest bardzo wydajny w przypadku rozwiązań o dużych matrycach. Być może będziesz musiał napisać więcej własnych operacji graficznych / geometrycznych (na ich matrycach / wektorach), ale to nie jest okropne.