Il y a pas mal de projets qui se sont installés sur le Generic Graphics Toolkit pour cela. Le GMTL est sympa - il est assez petit, très fonctionnel et utilisé assez largement pour être très fiable. OpenSG, VRJuggler et d'autres projets sont tous passés à l'utilisation de ceci au lieu de leurs propres calculs vertor / matrice roulés à la main.
Je l'ai trouvé assez sympa - il fait tout via des modèles, il est donc très flexible et très rapide.
Éditer:
Après la discussion sur les commentaires et les modifications, j'ai pensé jeter plus d'informations sur les avantages et les inconvénients de certaines implémentations, et pourquoi vous pourriez choisir l'une plutôt que l'autre, compte tenu de votre situation.
GMTL -
Avantages: API simple, spécialement conçue pour les moteurs graphiques. Comprend de nombreux types primitifs orientés vers le rendu (tels que les avions, AABB, quatenrions avec interpolation multiple, etc.) qui ne figurent dans aucun autre package. Très faible surcharge de mémoire, assez rapide, facile à utiliser.
Inconvénients: l'API est très axée spécifiquement sur le rendu et les graphiques. N'inclut pas les matrices à usage général (NxM), la décomposition et la résolution des matrices, etc., car elles sont en dehors du domaine des applications graphiques / géométriques traditionnelles.
Eigen -
Avantages: API propre , assez facile à utiliser. Comprend un module de géométrie avec quaternions et transformations géométriques. Faible surcharge de mémoire. Résolution complète et hautement performante de grandes matrices NxN et d'autres routines mathématiques à usage général.
Inconvénients: la portée peut être un peu plus grande que vous ne le souhaitez (?). Moins de routines spécifiques de géométrie / rendu par rapport à GMTL (ie: définitions d'angle d'Euler, etc.)
IMSL -
Avantages: Bibliothèque numérique très complète. Très, très rapide (soi-disant le solveur le plus rapide). De loin l'API mathématique la plus grande et la plus complète. Soutenu commercialement, mature et stable.
Inconvénients: coût - pas bon marché. Très peu de méthodes spécifiques géométriques / de rendu, vous devrez donc rouler les vôtres au-dessus de leurs classes d'algèbre linéaire.
NT2 -
Avantages: fournit une syntaxe plus familière si vous êtes habitué à MATLAB. Fournit une décomposition et une résolution complètes pour les grandes matrices, etc.
Inconvénients: mathématique, pas de rendu focalisé. Probablement pas aussi performant qu'Eigen.
LAPACK -
Avantages: algorithmes très stables et éprouvés. Je suis là depuis longtemps. Résolution complète de la matrice, etc. De nombreuses options pour les mathématiques obscures.
Inconvénients: Pas aussi performant dans certains cas. Porté depuis Fortran, avec une API étrange pour l'utilisation.
Personnellement, pour moi, cela se résume à une seule question - comment envisagez-vous d'utiliser cela. Si vous vous concentrez uniquement sur le rendu et les graphiques, j'aime Generic Graphics Toolkit , car il fonctionne bien et prend en charge de nombreuses opérations de rendu utiles sans avoir à implémenter les vôtres. Si vous avez besoin d'une résolution de matrice à usage général (par exemple: décomposition SVD ou LU de grandes matrices), j'irais avec Eigen , car il gère cela, fournit certaines opérations géométriques et est très performant avec des solutions de matrice de grande taille. Vous devrez peut-être écrire davantage de vos propres graphiques / opérations géométriques (au-dessus de leurs matrices / vecteurs), mais ce n'est pas horrible.