微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获得所有旋转和反射矩阵组合的最便宜方法是什么?

如何解决获得所有旋转和反射矩阵组合的最便宜方法是什么?

我正在使用特征值,我想知道最便宜的方法是获得所有旋转矩阵和反射矩阵的组合。让我们有一个像这样的矩阵:

1 2
4 3

我想要所有旋转矩阵:

1 2
4 3
---------
4 1
3 2
---------
3 4
2 1
---------
2 3
1 4

反映:

1 4
2 3
---------
4 3
1 2
---------
3 2
4 1
---------
2 1
3 4
---------

解决方法

您可以使用A.rowwise().reverse()进行水平翻转,使用A.colwise().reverse()进行垂直翻转,并使用A.transpose()在主对角线上翻转。 A.reverse()旋转180度,通过以上各项的组合,其他所有操作都可以实现:

Eigen::Matrix2i A; A << 1,2,4,3;

std::cout << "Original:\n" << A << '\n';
std::cout << "Rot 90:\n" << A.transpose().colwise().reverse() << '\n';
std::cout << "Rot 180:\n" << A.reverse() << '\n';
std::cout << "Rot 270:\n" << A.transpose().rowwise().reverse() << '\n';


std::cout << "Flip horizontal:\n" << A.rowwise().reverse() << '\n';
std::cout << "Flip vertical:\n" << A.colwise().reverse() << '\n';
std::cout << "Flip main diag:\n" << A.transpose() << '\n';
std::cout << "Flip side diag:\n" << A.transpose().reverse() << '\n';

通过优化进行编译时,所有这些函数的成本均为零,即它们只是在基础矩阵上创建视图。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。