Es gibt einige Projekte, die sich dafür für das Generic Graphics Toolkit entschieden haben. Das GMTL dort ist nett - es ist ziemlich klein, sehr funktional und wurde weit genug verwendet, um sehr zuverlässig zu sein. OpenSG, VRJuggler und andere Projekte haben alle darauf umgestellt, dies anstelle ihrer eigenen handgerollten Vertor / Matrix-Mathematik zu verwenden.
Ich fand es sehr schön - es erledigt alles über Vorlagen, ist also sehr flexibel und sehr schnell.
Bearbeiten:
Nach der Diskussion der Kommentare und den Änderungen dachte ich, ich würde mehr Informationen über die Vor- und Nachteile bestimmter Implementierungen herausgeben und darüber, warum Sie in Anbetracht Ihrer Situation eine über die andere wählen könnten.
GMTL -
Vorteile: Einfache API, speziell für Grafik-Engines entwickelt. Enthält viele primitive Typen, die auf das Rendern ausgerichtet sind (z. B. Ebenen, AABB, Quatenrionen mit Mehrfachinterpolation usw.), die in keinem anderen Paket enthalten sind. Sehr geringer Speicheraufwand, recht schnell und einfach zu bedienen.
Nachteile: Die API konzentriert sich speziell auf Rendering und Grafiken. Enthält keine NxM-Matrizen (General Purpose), Matrixzerlegung und -lösung usw., da diese außerhalb des Bereichs traditioneller Grafik- / Geometrieanwendungen liegen.
Eigen -
Leistungen: Saubere API , ziemlich einfach zu bedienen. Enthält ein Geometriemodul mit Quaternionen und geometrischen Transformationen. Geringer Speicheraufwand. Vollständige, hochleistungsfähige Lösung großer NxN-Matrizen und anderer universeller mathematischer Routinen.
Nachteile: Möglicherweise etwas größer als Sie möchten (?). Weniger geometrische / renderspezifische Routinen im Vergleich zu GMTL (dh: Euler-Winkeldefinitionen usw.).
IMSL -
Vorteile: Sehr vollständige numerische Bibliothek. Sehr, sehr schnell (angeblich der schnellste Löser). Mit Abstand die größte und vollständigste mathematische API. Kommerziell unterstützt, ausgereift und stabil.
Nachteile: Kosten - nicht billig. Es gibt nur sehr wenige geometrische / renderspezifische Methoden, daher müssen Sie Ihre eigenen über die linearen Algebra-Klassen rollen.
NT2 -
Vorteile: Bietet eine Syntax, die vertrauter ist, wenn Sie an MATLAB gewöhnt sind. Bietet vollständige Zerlegung und Lösung für große Matrizen usw.
Nachteile: Mathematisch, nicht fokussiert. Wahrscheinlich nicht so performant wie Eigen.
LAPACK -
Vorteile: Sehr stabile, bewährte Algorithmen. Schon lange da. Vollständige Matrixlösung usw. Viele Optionen für obskure Mathematik.
Nachteile: In einigen Fällen nicht so leistungsfähig. Portiert von Fortran mit ungerader API zur Verwendung.
Für mich persönlich kommt es auf eine einzige Frage an: Wie wollen Sie diese nutzen? Wenn Sie sich nur auf Rendering und Grafiken konzentrieren, gefällt mir das Generic Graphics Toolkit , da es eine gute Leistung erbringt und viele nützliche Rendering-Vorgänge sofort unterstützt, ohne dass Sie Ihre eigenen implementieren müssen. Wenn Sie eine universelle Matrixlösung benötigen (dh SVD- oder LU-Zerlegung großer Matrizen), würde ich mich für Eigen entscheiden , da es dies handhabt, einige geometrische Operationen bereitstellt und bei großen Matrixlösungen sehr performant ist. Möglicherweise müssen Sie mehr eigene Grafiken / geometrische Operationen (über deren Matrizen / Vektoren) schreiben, aber das ist nicht schrecklich.