在给定两个旋转角度和速度的情况下,如何计算x,y,z速度?

时间:2013-01-23 20:55:25

标签: math vector 3d

另一种说出这个问题的方法是:如果长方体的长度,宽度和高度给定它的对角线长度和2个旋转​​角度,我该如何找到它。

这是一个3D游戏,用户可以改变向上/向下旋转(向上和向下箭头键),向左/向右旋转(向左和向右箭头键),对象可以加速和反向(Q和w)。每个帧,对象x,y,z根据它的当前速度和上/下和左/右旋转进行更新。

2 个答案:

答案 0 :(得分:3)

如果alpha是左/右角,beta是上/下角,那么

v.x = speed * sin (alpha) * cos(beta)
v.y = speed * sin (beta)
v.z = speed * cos (alpha) * cos(beta)

假设没有旋转将返回方向(0,0,1)

答案 1 :(得分:1)

我假设使用静态参照系测量这个长方体,其中对角线从原点开始并延伸到其他点。如果没有,这个问题没有确定的答案,因为单独的对角线长度无法确定某个任意长方体的宽度,高度和长度,因为有无数个长方体可以具有相同的对角线。

听起来你正在使用的是球面坐标系:http://en.wikipedia.org/wiki/Spherical_coordinate_system#Cartesian_coordinates

来自文章:

x = r sin θ cos φ
y = r sin θ sin φ
z = r cos θ

r是你的对角线长度。您必须根据旋转角度确定θφ;它们可能不是正确的倾角和方位角。有关如何在球坐标中定义这些角度的详细信息,请参阅文章。