Матрица умножения 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-го ряда.

0 ответов

Другие вопросы по тегам