From d04edff57092409364c5b4536f0d83f13bc40153 Mon Sep 17 00:00:00 2001 From: Pablo Speciale Date: Mon, 15 Nov 2021 23:19:56 +0000 Subject: [PATCH] Update Umeyama.h: `src_var` is only used when `with_scaling == true`. Therefore, the actual computation can be avoided when `with_scaling == false`. --- Eigen/src/Geometry/Umeyama.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Eigen/src/Geometry/Umeyama.h b/Eigen/src/Geometry/Umeyama.h index d12a83b43..0a9dd355c 100644 --- a/Eigen/src/Geometry/Umeyama.h +++ b/Eigen/src/Geometry/Umeyama.h @@ -124,9 +124,6 @@ umeyama(const MatrixBase& src, const MatrixBase& dst, boo const RowMajorMatrixType src_demean = src.colwise() - src_mean; const RowMajorMatrixType dst_demean = dst.colwise() - dst_mean; - // Eq. (36)-(37) - const Scalar src_var = src_demean.rowwise().squaredNorm().sum() * one_over_n; - // Eq. (38) const MatrixType sigma = one_over_n * dst_demean * src_demean.transpose(); @@ -146,6 +143,9 @@ umeyama(const MatrixBase& src, const MatrixBase& dst, boo if (with_scaling) { + // Eq. (36)-(37) + const Scalar src_var = src_demean.rowwise().squaredNorm().sum() * one_over_n; + // Eq. (42) const Scalar c = Scalar(1)/src_var * svd.singularValues().dot(S);