很长一段时间以来,我一直在努力解决这个非常简单的问题,但是我似乎无法理解该如何解决。
我有2个坐标系。彼此在原点,比例和旋转方面都不同。我必须在另一个坐标系中的任何一个随机点上找到x,y,z坐标。本质上是改变基础。坐标系的构建如下:
glm::mat4 matA = glm::mat4(); //Build matrix with identity
matA = matA*rotationA; //Rotate
matA = matA*translationA; //Translate
glm::mat4 matB = glm::mat4(); //Build matrix with identity
matB = matB*rotationB; //Rotate
matB = matB*translationB; //Translate
vec3 pointOnMatA = vec3( 5, 5, 5 );
//Find this point but on the matrixB coordinate system
vec3 pointOnMatB = ???
最佳答案
就数学而言,应该pointOnMatB = matB*(inverseMatA*pointOnMatA);
至于评论中提出的问题:我不熟悉glm,但是矩阵向量乘法要求所有分量都具有相同的阶数(mat4
和vec4
)。
如果您使用的是openGL和齐次坐标系,则向量的前三个元素为X,Y,Z,最后一个分量(W)应该为1。
http://www.tomdalling.com/blog/modern-opengl/explaining-homogenous-coordinates-and-projective-geometry/