Матрица умножения GLM C++ с вектором
Я пытаюсь умножить матрицу 4 на 3 с вектором столбца измерения 3, используя C++ glm.
Вот как это выглядит:
glm::vec3 v3 = ...;
glm::mat4x3 mat = ...;
glm::vec4 result = mat * v3;
VS2012 показывает мне следующую ошибку в '*':
IntelliSense: ни один оператор "*" не соответствует этим операндам
Типы операндов: glm::mat4x3 * glm::vec3 ...
Во время компиляции обнаружилась еще одна ошибка:
ошибка C2679: двоичный файл '*': не найден оператор, который принимает правый операнд типа 'glm::vec3' (или нет приемлемого преобразования)
Итак, как правильно сделать это умножение?
Мой ответ: хорошо, так что я знаю, где не так уже после нескольких экспериментов. По сути, ключевым моментом является то, что способ, которым glm определяет матрицу, отличается от нашего обычного способа. glm::mat4x3 mat
фактически создаст матрицу 3 на 4 с 3 строками и 4 столбцами. И если вы получите доступ по mat[i]
он вернет вам i-й столбец вместо i-го ряда.