很长一段时间以来,我一直在努力解决这个非常简单的问题,但是我似乎无法理解该如何解决。

我有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,但是矩阵向量乘法要求所有分量都具有相同的阶数(mat4vec4)。
如果您使用的是openGL和齐次坐标系,则向量的前三个元素为X,Y,Z,最后一个分量(W)应该为1。

http://www.tomdalling.com/blog/modern-opengl/explaining-homogenous-coordinates-and-projective-geometry/

10-06 03:04