Hay bastantes proyectos que se han decidido por el Kit de herramientas de gráficos genéricos para esto. El GMTL allí es agradable: es bastante pequeño, muy funcional y se ha utilizado lo suficiente como para ser muy confiable. OpenSG, VRJuggler y otros proyectos han cambiado a usar esto en lugar de sus propias matemáticas de vértor / matriz enrolladas a mano.
Lo encontré bastante agradable: hace todo a través de plantillas, por lo que es muy flexible y muy rápido.
Editar:
Después de la discusión de comentarios y ediciones, pensé en arrojar más información sobre los beneficios y las desventajas de implementaciones específicas, y por qué podría elegir uno sobre el otro, dada su situación.
GMTL -
Beneficios: API simple, diseñada específicamente para motores gráficos. Incluye muchos tipos primitivos orientados a la representación (como planos, AABB, quatenrions con interpolación múltiple, etc.) que no están en ningún otro paquete. Muy poca carga de memoria, bastante rápido, fácil de usar.
Desventajas: API está muy centrada específicamente en renderizado y gráficos. No incluye matrices de propósito general (NxM), descomposición y resolución de matrices, etc., ya que están fuera del ámbito de las aplicaciones tradicionales de gráficos / geometría.
Eigen -
Beneficios: API limpia , bastante fácil de usar. Incluye un módulo de geometría con cuaterniones y transformaciones geométricas. Baja carga de memoria. Resolución completa y de alto rendimiento de grandes matrices NxN y otras rutinas matemáticas de propósito general.
Desventajas: puede ser un alcance un poco mayor de lo que deseas (?). Menos rutinas geométricas / de representación específicas en comparación con GMTL (es decir: definiciones de ángulo de Euler, etc.).
IMSL -
Beneficios: Biblioteca numérica muy completa. Muy, muy rápido (supuestamente el solucionador más rápido). Con mucho, la API matemática más grande y más completa. Comercialmente soportado, maduro y estable.
Desventajas: costo - no es barato. Muy pocos métodos geométricos / renderizados específicos, por lo que necesitará rodar los suyos sobre sus clases de álgebra lineal.
NT2 -
Beneficios: proporciona una sintaxis que es más familiar si está acostumbrado a MATLAB. Proporciona descomposición completa y resolución para matrices grandes, etc.
Desventajas: Matemáticas, no renderizadas. Probablemente no sea tan eficiente como Eigen.
LAPACK -
Beneficios: algoritmos muy estables y probados. He estado por mucho tiempo. Solución matricial completa, etc. Muchas opciones para matemáticas oscuras.
Desventajas: no es tan eficiente en algunos casos. Portado de Fortran, con API impar para su uso.
Personalmente, para mí, todo se reduce a una sola pregunta: ¿cómo planea usar esto? Si su enfoque es solo el renderizado y los gráficos, me gusta Generic Graphics Toolkit , ya que funciona bien y admite muchas operaciones útiles de renderizado sin tener que implementar el suyo. Si necesita una resolución de matriz de propósito general (es decir: SVD o LU descomposición de matrices grandes), iría con Eigen , ya que maneja eso, proporciona algunas operaciones geométricas y es muy eficiente con soluciones de matriz grande. Puede que necesite escribir más de sus propios gráficos / operaciones geométricas (encima de sus matrices / vectores), pero eso no es horrible.