我正在制作一款3D游戏,玩家可以通过鼠标旋转视点来环顾环境。我首先通过鼠标的垂直和水平移动以及通过另一个控件的z进行x和y旋转。但在玩完游戏后,我意识到它没有正确旋转。注意:我有一个全局变量矩阵,代表玩家的角度(3x1),在0,0,0它似乎正常工作,因为向上或向下是直接x轴旋转,右或左是直接y轴旋转,但如果我对角移动我的相机,那么左边不再与y轴旋转直接相关。 在一个单位圆圈上,玩家视点不再在整个圆周上行进,并且会以小于圆周的圆圈行进。这是当前代码(x和yRateOfRot是光标在-1和1之间每个方向的中心距离的比率):
private static void changeRotation(){
angle.set(Matrix.add(angle.matrix,new double[][]{
{ROTATION_SPEED * camera.xRateOfRot()},
{ROTATION_SPEED * camera.yRateOfRot()},
{ROTATION_SPEED * camera.zRateOfRot()}}));
}
我查看了这个来源http://paulbourke.net/geometry/rotate/,并了解如何通过我可以做的任意轴旋转,但我不知道如何将其关联到获取比率以找出x,y和z改变将是在特定方向上查看,即在0,0,0,查找的比率将是x:1,y:0,z:0但是在另一个角度,比率将是不同的,因为查找不再意味着只有一个x旋转。任何信息都将不胜感激,谢谢!