【问题标题】:Rotation matrix in Eigen特征中的旋转矩阵
【发布时间】:2013-02-23 17:04:02
【问题描述】:

我可以使用 Eigen 库来获取将向量 A 旋转到向量 B 的旋转矩阵吗? 找了一阵子,没找到相关的api。

【问题讨论】:

  • “将向量 A 旋转到向量 B 的”旋转矩阵不明确:有多个旋转矩阵将 A 发送到 B。答案中提供的方法给出了一个这样的矩阵。

标签: eigen


【解决方案1】:

你首先要构造一个quaternion,然后把它转换成一个矩阵,例如:

#include <Eigen/Geometry>
using namespace Eigen;

int main() {
  Vector3f A, B;
  Matrix3f R;
  R = Quaternionf().setFromTwoVectors(A,B);
}

【讨论】:

  • 值得注意的是,这需要在(A,B) 之后额外添加一个.toRotationMatrix() 才能工作,因为R 是一个矩阵。
  • 不,operator= 的重载使它可以工作。但是,各自是显式的,因此Matrix3f R = Quaternionf().setFromTwoVectors(A,B); 需要.toRotationMatrix() 或显式转换为Matrix3f(.),或使用Matrix3f R(Quaternionf().setFromTwoVectors(A,B)); 显式调用ctor
  • 对不起我的错误!错过了那一点点微妙之处。感谢您解释差异。
  • 有二维向量的选项吗?如果我对四元数的理解是正确的(我对此表示怀疑,因为我从未使用过它们),它们是专门用于 3D 的。
猜你喜欢
  • 2020-08-20
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多