这个问题的另一种说法是:给定长方体的对角线长度和 2 个旋转角,我如何找到长方体的长度、宽度和高度。
这是一个 3d 游戏,用户可以更改上/下旋转(向上和向下箭头键)、左/右旋转(左和右箭头键)并且对象可以加速和反转(Q 和 w)。每一帧,对象 x、y、z 都会根据其当前速度以及上/下和左/右旋转进行更新。
如果alpha
是左/右角并且beta
是上/下角,那么
v.x = speed * sin (alpha) * cos(beta)
v.y = speed * sin (beta)
v.z = speed * cos (alpha) * cos(beta)
假设,没有旋转将返回方向 (0, 0, 1)
我假设这个长方体是使用静态参考系测量的,其中对角线从原点开始并延伸到其他点。如果不是,这个问题没有明确的答案,因为单独的对角线长度不能确定任意长方体的宽度、高度和长度,因为有无数个长方体可以具有相同的对角线。
听起来您使用的是球坐标系:http ://en.wikipedia.org/wiki/Spherical_coordinate_system#Cartesian_coordinates
来自文章:
x = r sin θ cos φ
y = r sin θ sin φ
z = r cos θ
r
是你的对角线长度。您必须确定θ
并φ
基于您的旋转角度;它们可能不是正确的倾角和方位角。有关如何在球坐标中定义这些角度的详细信息,请参阅文章。