GLM: How to transpose a vector?

限于喜欢 提交于 2020-06-24 12:17:05

问题


Maybe I'm just missing something in the docs, but it seem it's not possible with GLM to take the transpose of a vector. I also see no mat3x1 or mat1x3 types. Also glm::transpose doesn't work for vectors. Am I missing something or is this just a feature lacking in GLM?


回答1:


GLM is based on GLSL, where there's simply no need to transpose a vector. If you do vector/matrix multiplication, it will multiply the vector in the way that works for the size of the matrix (unless it would have to change the order of the multiplication). So if you have a mat4 and do mat4*vec4, your vec4 is considered a column vector. If you do vec4*mat4, it is considered a row vector. If you do mat2x4*vec4, you get an error, while vec4*mat2x4 works (as a row vector).

So in general, there's no reason to need to "transpose" a vector. The system simply does whatever works.




回答2:


As a reference for people looking for how to transpose a vector (primarily for calculating outer products - u vT) in GLSL/GLM; its:

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

Nicol's GLM link now 404s as their API links have changed format from:

  • OLD Link: http://glm.g-truc.net/api-0.9.4/a00133.html#ga5d896e8651512fc098a677dbe403eeac

  • New Link: http://glm.g-truc.net/0.9.4/api/a00133.html#ga5d896e8651512fc098a677dbe403eeac



来源:https://stackoverflow.com/questions/9863875/glm-how-to-transpose-a-vector

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!