glm transform矩阵小坑

稍稍记录一下踩过的小坑, 一般对一个物体进行变换, 应该是先缩放, 再旋转, 最后才平移. 而利用glm库计算transform矩阵的时候, 应该注意代码顺序要与变换顺序相反, 如:

transformMatrix = glm::translate(transformMatrix, glm::vec3((p1.x+p2.x)/2, (p1.y+p2.y)/2, (p1.z+p2.z)/2));
transformMatrix = glm::rotate(transformMatrix, rotateTheta, rotateAxis);
transformMatrix = glm::scale(transformMatrix, glm::vec3(1.0, radius / 2.0, 1.0));

猜想这是由于glm内部是将新的变换矩阵右乘原来的变换矩阵导致的额……

计算向量之间的旋转


前几天在咪咕工作时碰到了这样一个问题: 绘制圆柱体时圆柱体默认朝向z轴正向(屏幕外), 现在需要将其转至任意方向, 以此绘制任意方向上的圆柱体, 本来以为这个问题很简单, 但居然也困了我两个小时, 作为数学系的学生来说真是羞耻QAQ

继续阅读计算向量之间的旋转