【发布时间】:2013-02-23 17:04:02
【问题描述】:
我可以使用 Eigen 库来获取将向量 A 旋转到向量 B 的旋转矩阵吗? 找了一阵子,没找到相关的api。
【问题讨论】:
-
“将向量 A 旋转到向量 B 的”旋转矩阵不明确:有多个旋转矩阵将 A 发送到 B。答案中提供的方法给出了一个这样的矩阵。
标签: eigen
我可以使用 Eigen 库来获取将向量 A 旋转到向量 B 的旋转矩阵吗? 找了一阵子,没找到相关的api。
【问题讨论】:
标签: eigen
你首先要构造一个quaternion,然后把它转换成一个矩阵,例如:
#include <Eigen/Geometry>
using namespace Eigen;
int main() {
Vector3f A, B;
Matrix3f R;
R = Quaternionf().setFromTwoVectors(A,B);
}
【讨论】:
(A,B) 之后额外添加一个.toRotationMatrix() 才能工作,因为R 是一个矩阵。
Matrix3f R = Quaternionf().setFromTwoVectors(A,B); 需要.toRotationMatrix() 或显式转换为Matrix3f(.),或使用Matrix3f R(Quaternionf().setFromTwoVectors(A,B)); 显式调用ctor