2011-11-01 13 views
2

私は空間計算のセットを基本的にCコードをコンパイルし実行する組み込み環境に移植しています。CLAPACKのクォータニオンまたは代替Cスタイルクォータニオンライブラリ

以前は、VNL(新しいプラットフォームでは動作しないテンプレートのC++ライブラリ)をCBLASとCLAPACKで使用した多くの線形代数関数を置き換えました。彼らのAPI(すべてのパラメータはポインタであり、テンプレートはありません)は、私がやっていることに最適です。

しかし、キャッチは、CLAPACKユーザーガイドのどこにでも四元数ベースの関数が表示されません。私はセクションを欠いていて、どこかで四元数のサポートがありますか?もしそうなら、私にその機能を教えてください。具体的には、オイラー角と3x3行列との間の逆数、乗法、および変換を探しています。

CLAPACKにこの種のサポートがない場合、クォータニオン計算と同様の設計特性を持つ別のライブラリがありますか?

+0

4x4の行列として解釈されますか? –

+1

はい、既存のコードを回転行列に変換することは可能ですが、好ましくはありません。まず、外部入力の1つがAPIにクォータニオンを供給するため、ある程度のサポートと変換が必要です。第二に、私は、回転行列に四元数を使用すると、回転計算にストレージサイズとパフォーマンスの利点があると考えています。詳細はhttp://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#Performance_comparisons_with_other_rotation_methodsを参照してください。 – Evan

+0

本当に答えはありますが、あなた自身がこれを思いついてBLAS/LAPACKのようなAPIを通して公開することはできません。それらのいくつかの関数(四元数代数、ベクトルの変換、他の表現への変換)は、実装するのが難しくないか退屈であってはなりません。私はそれがLAPACKにはないと思うのは、より小さなグループの人々(物理学者や医師かもしれないメカニックやグラフィックスの人たち)にとって興味があり、それは本当に古典的な線形代数には属さない数値の線形代数を除いて、私は思う。 –

答えて

2

このPDFは、LAPACKでクォータニオンサポートが計画されていないことを示しているようです。私はCLAPACKが同じであると仮定することは安全だと思います。

http://www.netlib.org/lapack/lawnspdf/lawn106.pdf

私はまだサポート四元を行い、交換または補足的なライブラリを発見していません。

EDIT:

CQRLib、ANSI Cの四元ライブラリを見つけました。それはスタックに変数を割り当てます(私のアーキテクチャ上の問題です)。だから私はそれをリファクタリングする必要があります。しかしそれ以外の場合は動作するはずです。四元カント

http://cqrlib.sourceforge.net/

+0

CQRLibが必要なものをカバーしているようです。私は新しい情報が追加されれば他の人の答えを再選択しますが、今のところ、クォータニオン以外のすべての線形代数に対してCLAPACKを使用し、そのギャップをカバーするためにCQRを追加することが私のソリューションです。 – Evan

関連する問題