Я пытаюсь умножить матрицу 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-го ряда.
Задача ещё не решена.