5

私はたくさんの等尺性を持っています[R | t] 変換行列、すなわち、それらは 3D 剛体変換です。現在、私はそれらを固有アフィン変換として保存し、コンパクトな形式で表します。たとえばEigen::AffineCompact3d、[0 0 0 1] の冗長な最後の行を保存しません。

Eigen::Isometry3dまた、 typedef であると思われる があることも認識していますTransform<double, 3, AffineCompact, Isometry>

逆変換は一般的なアフィン逆変換よりもはるかに安価 (転置) であるため、Isometry を使用しています。inverse() を次のように使用すると、ヒントを渡すことができることも知っています。affine_mat.inverse(Eigen::Isometry);

しかし、毎回手動でヒントを渡すことなく、アイソメトリック逆動作を取得したいと思います。Eigen::IsometryCompact3dつまり、 Eigen API に驚くほど欠けている動作を再現する最善の方法は何ですか?

4

2 に答える 2

1

等尺性を表すために、現在ツイストを使用しています。このパラメーター化は、6 要素のベクトルで記述できます。

標準の同種行列の定式化に前後に変換するには、log() と exp() に基づくいくつかの関数が必要になります (したがって、変換には時間がかかります)。

このソリューションは、2 つの定式化の間を行ったり来たりする際にパフォーマンス上の制約がない場合 (またはめったに行わない場合)、またはねじれの特性を利用したい場合 (数値最適化など) に適しています。

于 2013-03-28T14:50:18.940 に答える