GLM: Как транспонировать вектор? - PullRequest
7 голосов
/ 26 марта 2012

Может быть, я просто что-то упустил в документах, но кажется, что с GLM невозможно сделать транспонирование вектора.Я также не вижу типов mat3x1 или mat1x3.Также glm :: transpose не работает для векторов.Я что-то упустил или это просто не хватает в GLM?

Ответы [ 2 ]

8 голосов
/ 26 марта 2012

GLM основан на GLSL, где просто нет необходимости транспонировать вектор. Если вы сделаете умножение вектора на матрицу, он умножит вектор так, как это работает для размера матрицы (если только ему не придется менять порядок умножения). Так что если у вас есть mat4 и вы делаете mat4*vec4, ваш vec4 считается вектором столбца. Если вы делаете vec4*mat4, это считается вектор строки. Если вы сделаете mat2x4*vec4, вы получите ошибку, а vec4*mat2x4 работает (как вектор строки).

Так что, в общем, нет необходимости «переносить» вектор. Система просто делает все, что работает.

3 голосов
/ 17 октября 2013

В качестве справки для людей, ищущих, как транспонировать вектор (в первую очередь для вычисления внешних продуктов - u v T ) в GLSL / GLM; его:

glm::core::function::matrix::outerProduct(u, v)

Ссылка Никола на GLM теперь 404s, поскольку их ссылки API изменили формат с:

...