39 const Eigen::Transform<Scalar, 3, Eigen::Affine>& transform)
41 const auto& matrix = transform.linear();
42 auto minor2x2 = [&](
int i,
int j) ->
Scalar {
43 const int i1 = (i == 0 ? 1 : 0);
44 const int i2 = (i == 2 ? 1 : 2);
45 const int j1 = (j == 0 ? 1 : 0);
46 const int j2 = (j == 2 ? 1 : 2);
47 return matrix(i1, j1) * matrix(i2, j2) - matrix(i1, j2) * matrix(i2, j1);
50 Eigen::Matrix3<Scalar> result;
51 for (
int i = 0; i < 3; ++i) {
52 for (
int j = 0; j < 3; ++j) {
53 result(i, j) = ((i + j) % 2 == 0 ?
Scalar(1) :
Scalar(-1)) * minor2x2(i, j);
71 const Eigen::Transform<Scalar, 2, Eigen::Affine>& transform)
73 const auto& matrix = transform.linear();
74 Eigen::Matrix2<Scalar> result;
75 result(0, 0) = matrix(1, 1);
76 result(0, 1) = -matrix(1, 0);
77 result(1, 0) = -matrix(0, 1);
78 result(1, 1) = matrix(0, 0);
Eigen::Matrix3< Scalar > compute_normal_cotransform(const Eigen::Transform< Scalar, 3, Eigen::Affine > &transform)
Computes the normal (cotransform) matrix for a 3D affine transform.
Definition compute_normal_cotransform.h:38