このためにGeneric Graphics Toolkitに落ち着いたプロジェクトがかなりあります。そこにあるGMTLは素晴らしいです-それは非常に小さく、非常に機能的で、非常に信頼できるほど広く使用されています。OpenSG、VRJuggler、および他のプロジェクトはすべて、独自の手作業のvertor / matrix数学の代わりにこれを使用するように切り替えました。
私はそれが非常に良いことを発見しました-それはテンプレートを介してすべてを行うので、それは非常に柔軟で、非常に高速です。
編集:
コメントのディスカッションと編集の後、特定の実装のメリットとデメリット、および状況に応じてどちらかを選択する理由について、もう少し情報を捨てると思いました。
GMTL -
利点:グラフィックエンジン用に特別に設計されたシンプルなAPI。他のパッケージにはない、レンダリング向けの多くのプリミティブタイプ(プレーン、AABB、複数の補間を含むクォータニオンなど)が含まれています。非常に低いメモリオーバーヘッド、非常に高速で使いやすい。
欠点:APIは、レンダリングとグラフィックスに特に重点を置いています。汎用(NxM)行列、行列の分解と解法などは含まれていません。これらは従来のグラフィックス/ジオメトリアプリケーションの領域外にあるためです。
アイゲン -
利点:Clean API、かなり使いやすい。四元数と幾何学的変換を備えたGeometryモジュールが含まれています。メモリのオーバーヘッドが少ない。大規模なNxN行列およびその他の汎用数学ルーチンの完全で高性能な解法。
欠点:あなたが望んでいるよりも少し広い範囲かもしれません(?)。GMTLと比較すると、ジオメトリ/レンダリング固有のルーチンが少ない(つまり、オイラー角の定義など)。
IMSL -
利点:非常に完全な数値ライブラリ。非常に高速(おそらく最速のソルバー)。はるかに大きく、最も完全な数学的API。商業的にサポートされ、成熟し、安定しています。
欠点:コスト-安価ではありません。ジオメトリック/レンダリング固有のメソッドはほとんどないため、線形代数クラスの上に独自のメソッドを配置する必要があります。
NT2 -
利点:MATLABに慣れている場合に、より身近な構文を提供します。大きな行列などの完全な分解と解決を提供します。
欠点:数学的、焦点を絞ったレンダリングではない。おそらくアイゲンほどパフォーマンスが良くない。
ラパック -
利点:非常に安定した実績のあるアルゴリズム。ずっと周りにいる。完全な行列解法など。不明瞭な数学の多くのオプション。
欠点:一部のケースではそれほどパフォーマンスが良くない。Fortranから移植され、使用法が変わったAPIになっています。
個人的に、私にとって、それは単一の質問に帰着します-これをどのように使用する予定ですか?レンダリングとグラフィックスだけに重点を置いている場合は、Generic Graphics Toolkitが気に入っています。これは、パフォーマンスが高く、独自の実装をしなくても、すぐに使用できる多くの便利なレンダリング操作をサポートするためです。汎用の行列解法(つまり、大きな行列のSVDまたはLU分解)が必要な場合は、Eigenを使用します。これは、それを処理し、いくつかの幾何学的演算を提供し、大規模な行列ソリューションで非常にパフォーマンスが高いためです。独自のグラフィックス/幾何学的演算(行列/ベクトルの上に)をさらに記述する必要があるかもしれませんが、それは恐ろしいことではありません。