|
@@ -6,7 +6,7 @@
|
|
|
// v. 2.0. If a copy of the MPL was not distributed with this file, You can
|
|
|
// obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
#include "fit_rigid.h"
|
|
|
-#include "polar_svd.h"
|
|
|
+#include "procrustes.h"
|
|
|
|
|
|
IGL_INLINE void igl::fit_rigid(
|
|
|
const Eigen::MatrixXd & A,
|
|
@@ -14,12 +14,7 @@ IGL_INLINE void igl::fit_rigid(
|
|
|
Eigen::Rotation2Dd & R,
|
|
|
Eigen::RowVector2d & t)
|
|
|
{
|
|
|
- // build covariance matrix
|
|
|
- const auto & Amean = A.colwise().mean();
|
|
|
- const auto & Bmean = B.colwise().mean();
|
|
|
- const auto & S = (B.rowwise() - Bmean).transpose() * (A.rowwise() - Amean);
|
|
|
- Eigen::Matrix2d Rm,Tm;
|
|
|
- polar_svd(S.eval(),Rm,Tm);
|
|
|
- R.fromRotationMatrix(Rm);
|
|
|
- t = Amean - Bmean*Rm;
|
|
|
+ Matrix2d Rmat;
|
|
|
+ procrustes(A,B,Rmat,t);
|
|
|
+ R.fromRotationMatrix(Rmat);
|
|
|
}
|