Matrix4f 类型转 QMatrix4x4类型
时间: 2023-12-14 14:39:10 浏览: 133
可以使用以下代码将 Eigen 的 Matrix4f 类型转换为 Qt 的 QMatrix4x4 类型:
```cpp
#include <Eigen/Dense>
#include <QtGui/QMatrix4x4>
QMatrix4x4 eigenToQt(const Eigen::Matrix4f& eigenMat) {
QMatrix4x4 qtMat(eigenMat.data());
return qtMat.transposed();
}
```
这里我们首先通过 `eigenMat.data()` 获取 Eigen 矩阵的底层数据指针,并将其传递给 QMatrix4x4 的构造函数,从而创建一个 Qt 的矩阵。
需要注意的是,由于 Eigen 和 Qt 使用的矩阵存储顺序不同,所以我们需要在最后调用 `transposed()` 函数进行转置,以便得到正确的结果。
相关问题
Matrix4f转QMatrix4x4
可以使用QMatrix4x4的构造函数将Matrix4f转换为QMatrix4x4,如下所示:
```cpp
QMatrix4x4 qMatrix(matrix(0,0), matrix(0,1), matrix(0,2), matrix(0,3),
matrix(1,0), matrix(1,1), matrix(1,2), matrix(1,3),
matrix(2,0), matrix(2,1), matrix(2,2), matrix(2,3),
matrix(3,0), matrix(3,1), matrix(3,2), matrix(3,3));
```
其中,matrix表示Matrix4f对象,matrix(i,j)表示矩阵中第i行第j列的元素。
assimp中Matrix4f转QMatrix4x4
你可以使用以下代码将Assimp库中的Matrix4f转换为Qt库中的QMatrix4x4:
```
#include <QMatrix4x4>
#include <assimp/matrix4x4.h>
QMatrix4x4 AssimpMatrix4fToQMatrix4x4(const aiMatrix4x4& m)
{
return QMatrix4x4(
m.a1, m.b1, m.c1, m.d1,
m.a2, m.b2, m.c2, m.d2,
m.a3, m.b3, m.c3, m.d3,
m.a4, m.b4, m.c4, m.d4
);
}
```
你可以将Assimp中的Matrix4f类型转换为aiMatrix4x4类型,然后将其传递给上面的函数,它将返回与之相对应的QMatrix4x4。
阅读全文