特征:将矩阵3d旋转转换为四元数
Eigen: convert Matrix3d rotation to Quaternion
我正在尝试将Matrix3d
旋转转换为Quaternion<double>
,但到目前为止我只收到奇怪的编译器错误。我使用的代码是:
Quaternion<double> getQuaternionFromRotationMatrix(const Matrix3d& mat)
{
AngleAxisd aa;
aa = mat;
Quaternion<double> q = aa;// conversion error
return q;
}
编译器错误:
path/src/Utils.cpp: In function ‘Eigen::Quaternion<double> Utils::getQuaternionFromRotationMatrix(const Matrix3d&)’:
path/src/Utils.cpp:55:26: error: conversion from ‘Eigen::AngleAxisd {aka Eigen::AngleAxis<double>}’ to non-scalar type ‘Eigen::Quaternion<double>’ requested
In file included from /usr/local/include/eigen3/Eigen/Core:283:0,
from /usr/local/include/eigen3/Eigen/Dense:1,
from path/include/Utils.h:4,
from path/src/Utils.cpp:1:
/usr/local/include/eigen3/Eigen/src/Core/Assign.h: In member function ‘Derived& Eigen::DenseBase<Derived>::lazyAssign(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::Matrix<double, 3, 1>, Derived = Eigen::Block<Eigen::Matrix<double, 4, 4>, 4, -0x00000000000000001, true, true>]’:
/usr/local/include/eigen3/Eigen/src/Core/Assign.h:534:123: instantiated from ‘static Derived& Eigen::internal::assign_selector<Derived, OtherDerived, false, false>::run(Derived&, const OtherDerived&) [with Derived = Eigen::Block<Eigen::Matrix<double, 4, 4>, 4, -0x00000000000000001, true, true>, OtherDerived = Eigen::Matrix<double, 3, 1>]’
/usr/local/include/eigen3/Eigen/src/Core/Assign.h:574:89: instantiated from ‘Derived& Eigen::MatrixBase<Derived>::operator=(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::Matrix<double, 3, 1>, Derived = Eigen::Block<Eigen::Matrix<double, 4, 4>, 4, -0x00000000000000001, true, true>]’
path/src/Utils.cpp:34:20: instantiated from here
/usr/local/include/eigen3/Eigen/src/Core/Assign.h:504:3: error: static assertion failed: "YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES"
有人知道如何在两种表示之间进行转换吗?
来自AngleAxis
或Matrix
的构造函数是显式的,这意味着您必须按如下方式编写转换:
Matrix3f mat;
Quaternionf q(mat);
或
Quaternionf q;
q = mat;
AngleAxis
也一样。
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 使用 GDI+ 旋转位图,然后转换为 HDC
- 如何在 c++ 中旋转/转换 QMovie
- 转换/旋转字节数组中的位
- 将OpenCV旋转和平移矢量转换为XYZ旋转和XYZ位置
- 特征:将矩阵3d旋转转换为四元数
- 程序以转换图像和旋转
- 将特征 3 变换的旋转转换为角度轴
- 如何将连接接头的位置转换为相对增量旋转
- 将2D转换的1D阵列顺时针旋转90度
- 旋转和转换显示列表
- 将 glm 四元数转换为旋转矩阵并将其与 opengl 一起使用
- 对依赖的附加对象链执行旋转转换的最快方法
- 将整数的数字拆分为向量,旋转它们,然后转换回整数
- 如何截获转换的结束:QT QML 中的旋转操作