gpt4 book ai didi

c++ - Eigen :围绕轴 W 执行 3D 旋转并锚定在点 P

转载 作者:行者123 更新时间:2023-11-30 03:40:07 25 4
gpt4 key购买 nike

我想创建一个函数来接收一个角度,两个 vector ,其中一个是定义旋转轴方向的单位 vector ,另一个是要旋转的 vector 和一个定义 anchor 的点 P旋转的位置。

要在 Eigen 中实现这个,我想我必须使用几何模块,不幸的是,我认为这个模块的文档不是很好,我无法理解它。

我的思路是结合旋转变换AngleAxis<float>有两个翻译,但我不明白我该怎么做。我只设法像这样定义旋转矩阵:

VectorXf m1(3);

Matrix3f m;
m1(0)=2;
m1(1)=1;
m1(2)=2;

m = AngleAxisf(M_PI, m1);

但是,我永远无法创建翻译矩阵或使用他们在模块文档中提到的表达式的串联。

如果您能提供任何帮助/建议,我将不胜感激。

提前致谢。

最佳答案

要表示旋转加平移,您需要一个 3x4 或 4x4 矩阵。使用 Eigen,您可以直接连接旋转和平移,如下所示:

Vector3f w = ...; // rotation axis
Vector3f c = ...; // center of rotation
Affine3f A = Translation3f(c) * AngleAxisf(theta, w) * Translation3f(-c);

Affine3f 是一个 Eigen::Transform .它封装了一个 Matrix4f,您可以使用 A.matrix() 获得它。您也可以直接使用 Affine3f 对象来变换点。查看manual了解详情。

关于c++ - Eigen :围绕轴 W 执行 3D 旋转并锚定在点 P,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38274455/

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