Browse Source

Declared fit_rigid to be deprecated. Replaced implementation by call to procrustes

Former-commit-id: 20e6b2e30aab73fa2110b4aeb40615acf39d7501
Stefan Brugger 10 years ago
parent
commit
c408f34f0d
2 changed files with 5 additions and 9 deletions
  1. 4 9
      include/igl/fit_rigid.cpp
  2. 1 0
      include/igl/fit_rigid.h

+ 4 - 9
include/igl/fit_rigid.cpp

@@ -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);
 }

+ 1 - 0
include/igl/fit_rigid.h

@@ -14,6 +14,7 @@
 
 namespace igl
 {
+  // Deprecated: please use procrustes(...) instead.
   // Fit a rigid 
   IGL_INLINE void fit_rigid(
     const Eigen::MatrixXd & A,