我尝试使用OpenGL和glm将对象旋转到3d点。要找到xRotation,我这样做:
xRotation=atan2(lookAtDiff.x,lookAtDiff.z)
其中xRotation围绕Y轴,lookAtDiff是vec3,它是对象位置与我试图让它面对的区别之间的差异。这完美无瑕。因此,我决定以相同的方式进行yRotation(绕X轴旋转):
yRotation=atan2(lookAtDiff.y,lookAtDiff.x)
这给了我错误的轮换。我的问题是为什么我从这里得到了错误的轮换,我该如何解决呢?
答案 0 :(得分:0)
你必须使用对角线:
yRotation = atan2(lookAtDiff.y, sqrt(lookAtDiff.x * lookAtDiff.x + lookAtDiff.z * lookAtDiff.z));