我有一个问题了很长时间... 在我的OpenGL游戏中,您可以在图片中看到是一辆具有高地形的汽车。
因此,为了计算汽车的角度,我创建了4个Box,它们在汽车周围跟随,因此它们相对于汽车的旋转始终具有相同的位置。因此,我的算法效果很好,但是当我将汽车转弯时,它就变得无用了,因为我只绕笛卡尔坐标系的静态X和Z轴旋转。 有人知道如何“移动”实轴,以便像自定义轴一样旋转吗?或者我的第二个主意是关于Xrotation和zrotation之间的插入...
请帮助:(
这是我的代码:
Vector3f x1 = new Vector3f(26, cubex1.getPosition().y, 0);
Vector3f x2 = new Vector3f(0, cubex2.getPosition().y, 0);
Vector3f xdif = new Vector3f(x1.x - x2.x, x1.y - x2.y, x1.z - x2.z);
float anglex = -(float) Math.toDegrees(cubex1.getPosition().angle(xdif, new Vector3f(1, 0, 0)));
if(cubex1.getPosition().y < cubex2.getPosition().y){
super.setRotX(-anglex);
}else{
super.setRotX(anglex);
}
Vector3f z1 = new Vector3f(0, cubez1.getPosition().y, 14);
Vector3f z2 = new Vector3f(0, cubez2.getPosition().y, 0);
Vector3f zdif = new Vector3f(z1.x - z2.x, z1.y - z2.y, z1.z - z2.z);
float anglez = -(float) Math.toDegrees(cubez1.getPosition().angle(zdif, new Vector3f(0, 0, 1)));
super.setRotZ(anglearoundplayer / anglez);
if(cubez1.getPosition().y < cubez2.getPosition().y){
super.setRotZ(-anglez);
}else{
super.setRotZ(anglez);
}
我正在使用不同盒子的矢量来获得与平坦表面有关的角度...