Собственная ошибка: INVALID_MATRIX_PRODUCT, умножающий вектор и матрицу - PullRequest
0 голосов
/ 16 октября 2019

Я работаю с C ++ и Eigen. Я пытаюсь реализовать поворот матрицы, но получаю эту ошибку 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 Ответ

1 голос
/ 16 октября 2019

box_pos - вектор столбца. Если вы пишете box_pos *= RotY(5.0f), вы умножаете матрицу с правой стороны, и внутренние размеры (1 и 3) не совпадают.

Вы должны либо транспонировать box_pos и работать с вектором строки, либо переписатьумножение на

box_pos = RotY(5.0f) * box_pos;
...