Я пытаюсь умножить две матрицы следующим образом:
float values4x3[] = {
3, 3, 3,
1, 1, 1,
2, 2, 2,
1, 1, 1
};
QGenericMatrix< 4, 3, float > myMat4x3 (values4x3);
float values4x4[] = {
3, 3, 3, 3,
1, 1, 1, 1,
2, 2, 2, 2,
1, 1, 1, 1
};
QGenericMatrix< 4, 4, float > myMat4x4 (values4x4);
QGenericMatrix< 4, 3, float > product4x3 = myMat4x4 * myMat4x3;
qDebug() << __func__ << "product4x3 = " << product4x3;
Однако я получаю сообщение об ошибке:
Ошибка: нет совпадения для оператора *(типы операндов: «QGenericMatrix <4, 4, float>» и «QGenericMatrix <4, 3, float>»)
Для умножения существует этот оператор два экземпляра QGenericMatrix
, но я запутался и не уверен, как использовать его с NNxM2
и M1xNN
.
ОБНОВЛЕНИЕ
Как предложено @scopchanovЯ поменял две матрицы следующим образом:
QGenericMatrix< 4, 3, float > product4x3 = myMat4x3 * myMat4x4;
Теперь ошибка устранена, и результат записывается так:
qDebug() << __func__ << "product4x3 = " << product4x3;
Журналы:
product4x3 = QGenericMatrix<4, 3, float>(
19 19 19 19
10 10 10 10
10 10 10 10
)
Приведенная выше матрица на самом деле 3x4
!Ну, это немного сбивает с толку.