也许我只是遗漏了文档中的内容,但似乎GLM不可能采用向量的转置。我也看不到mat3x1或mat1x3类型。 glm :: transpose也不适用于矢量。我错过了什么或者这只是GLM缺乏的功能吗?
答案 0 :(得分:8)
GLM基于GLSL,根本不需要转置矢量。如果进行向量/矩阵乘法,它将以对矩阵大小有效的方式乘以向量(除非它必须改变乘法的顺序)。因此,如果您有mat4
并执行mat4*vec4
,则您的vec4
会被视为列向量。如果您执行vec4*mat4
,则会将其视为行向量。如果您执行mat2x4*vec4
,则会出现错误,而vec4*mat2x4
有效(作为行向量)。
所以一般来说,没有理由需要“转置”一个向量。系统只是做任何工作。
答案 1 :(得分:3)
作为人们在GLSL / GLM中寻找如何转置载体(主要用于计算外部产品 - u v T )的参考;其:
glm::core::function::matrix::outerProduct(u, v)
Nicol的GLM链接现在是404s,因为他们的API链接已经改变了格式: