gpt4 book ai didi

c++ - 将 Eigen Affine3d 转换为 Affine2d

转载 作者:搜寻专家 更新时间:2023-10-31 01:49:42 25 4
gpt4 key购买 nike

我有一个 affine transform在 3D 中,我希望丢弃任何 z 轴信息。是否有方便的方法将 Affine3d 转换为 Affine2d

最佳答案

尝试以下操作:

Affine2d S2d = Translation2d(S3d.translation().topRows<2>()) *
S3d.linear().topLeftCorner<2,2>();

演示:

#include <Eigen/Dense>
#include <iostream>
#include <string>

int main()
{
using namespace Eigen;
using namespace std;

Vector3d p3d(1.,2.,3.);
cout << p3d << endl << endl;
Affine3d S3d = Translation3d(2.,2.,2.)*Scaling(3.,2.,5.);
Vector3d scalled = S3d*p3d;
cout << S3d.matrix() << endl << endl;
cout << scalled << endl << endl;

cout << string(16,'_') << endl;

Vector2d p2d = p3d.topRows<2>();
cout << p2d << endl << endl;
Affine2d S2d = Translation2d(S3d.translation().topRows<2>()) *
S3d.linear().topLeftCorner<2,2>();
Vector2d scalled2d = S2d*p2d;
cout << S2d.matrix() << endl << endl;
cout << scalled2d << endl << endl;
}

输出:

1
2
3

3 0 0 2
0 2 0 2
0 0 5 2
0 0 0 1

5
6
17

________________
1
2

3 0 2
0 2 2
0 0 1

5
6

关于c++ - 将 Eigen Affine3d 转换为 Affine2d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16169811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com