使用庫將仿射變換轉換爲等軸變換(即僅包含旋轉和平移)的最簡單方法是什麼?將本徵仿射變換轉換爲本徵等角變換
這兩種轉換都是3D的。仿射矩陣對於左上象限具有普通的3×3矩陣(即旋轉,縮放和剪切),而等軸測圖對同一象限具有3×3旋轉矩陣,因此需要投影。
Eigen::AffineCompact3f a;
Eigen::Isometry3f b(a);
給人的編譯錯誤:
error C2338: YOU_PERFORMED_AN_INVALID_TRANSFORMATION_CONVERSION
同時
Eigen::AffineCompact3f a;
Eigen::Isometry3f b(a.rotation(), a.translation());
給
(line 2) error C2661: 'Eigen::Transform<_Scalar,_Dim,_Mode>::Transform' : no overloaded function takes 2 arguments
和
Eigen::AffineCompact3f a;
Eigen::Isometry3f b;
b.translation() = a.translation();
b.rotation() = a.rotation();
給
(line 4) error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const Eigen::Matrix<_Scalar,_Rows,_Cols>' (or there is no acceptable conversion)
由於旋轉()和翻譯()函數,這個問題可以被表述爲「我最好如何設置等距的旋轉和平移分量中?」
您應該指定使用的庫或工具包,因爲這些不是標準的C++類型或名稱。 – abelenky
我正在使用Eigen(一個衆所周知的C++數學庫),正如我在標題和文本中所述。我會添加一個鏈接,使其更清晰。 – user664303