2013-01-06 59 views
5

我有一堆isometry [R | t]變換矩陣,即它們是3D剛性變換。目前我將它們存儲爲Eigen Affine transformations,以緊湊形式表示,例如Eigen::AffineCompact3d,它不存儲[0 0 0 1]的冗餘最後一行。如何在Eigen中表示Compact等距變換矩陣?

我也知道有一個Eigen::Isometry3d,我猜是Transform<double, 3, AffineCompact, Isometry>的typedef。

我在Isometry之後,逆轉換比一般的仿射逆轉換便宜得多(轉置)。我也知道,我可以通過一個提示,當我使用inverse()作爲affine_mat.inverse(Eigen::Isometry);

但我想得到的等距逆行爲沒有每次手動傳遞提示。換句話說,我想知道,複製Eigen::IsometryCompact3d行爲的最佳方法是什麼,這在Eigen API中是令人驚訝的缺失的?

回答

1

代表我正在使用的等軸測圖twists。這個參數化可以用一個6元素向量來描述。要轉換到標準齊次矩陣表達式,您需要基於log()和exp()的函數(因此轉換將是一個緩慢的操作)。

如果您在兩個配方之間來回轉動時沒有性能限制(或者您很少這麼做),或者您想要利用轉彎的屬性(例如在數值優化中),這種方式是有利的

+0

是的,它通常有一個李羣代表。但在我的情況下,我正在做很多向量的轉換,並且矩陣表示對我最有效。我認爲Eigen作家不知何故錯過了這件事。 – iNFINITEi