|
|
有一个茶壶,我们假设它只在2维方向上移动与旋转,即x,z上移动。
它会向前走与转动,它会向它所面向的方向前进。
即:已知其面对角度,求其在某时间上的坐标。
我查阅了一些类似的代码,都是这样写的(使用360角度制。):
If input1.IsKeyPressed(TV_KEY_UP) = True Then '当按上键时茶壶前进
tea_posx = tea_posx + Cos(tea_roty) * engine1.TimeElapsed * 0.2
tea_posz = tea_posz + Sin(tea_roty) * engine1.TimeElapsed * 0.2
teapot1.SetPosition tea_posx, 0, tea_posz
End if
其中:tea_posx,tea_posz为茶壶的坐标,tea_roty为茶壶当前的旋转方向,engine1.timeelapsed为时间流逝。
已经尝试过将tea_roty改为弧度制,也尝试过使用C代码:
tea_posx = tea_posx + Cosf(tea_roty) * engine1->TimeElapsed * 0.2
tea_posz = tea_posz + Sinf(tea_roty) * engine1->TimeElapsed * 0.2
teapot1.SetPosition tea_posx, 0, tea_posz
结果:
茶壶并没有向着面对的方向前进,甚至当旋转角度变化时不向固定的角度前进。
希望大家能帮忙解决这个问题,我的算法有问题吗?用任何语言甚至思路回答均可,谢谢。
|
|