特征错误:INVALID_MATRIX_PRODUCT乘向量和矩阵

时间:2019-10-16 14:26:34

标签: c++ eigen

im与c ++和本征一起工作。我尝试实现矩阵旋转,但出现此错误Eigen\src/Core/GeneralProduct.h(410,3): error C2338: INVALID_MATRIX_PRODUCT

    Eigen::Vector3f box_pos = Eigen::Vector3f(-2.0f, 2.5f, -2.0f);
    box_pos *= RotY(5.0f);

RotY函数:

   Eigen::Matrix3f RotY(float angle) {
    float s = sin(angle);
    float c = cos(angle);
    Eigen::Matrix3f matrix;
    matrix << c, 0., s, 0., 1., 0., -s, 0., c;
    return matrix;
}

1 个答案:

答案 0 :(得分:1)

box_pos是列向量。如果您写box_pos *= RotY(5.0f),则会从右边乘以矩阵,并且内部尺寸(1和3)不匹配。

您要么必须转置box_pos并使用行向量,要么将乘法重写为

box_pos = RotY(5.0f) * box_pos;