【发布时间】:2013-06-18 20:04:18
【问题描述】:
我的屏幕左侧有一个图像(假设它是一个简单的矩形),我可以上下移动它。向上移动它时,我使用一些简单的三角函数来旋转它,使矩形“指向”屏幕的右上角。向下移动时,它指向屏幕的左下角。
鉴于我的应用程序使用以下坐标系:
我使用下面的代码来实现旋转:
// moving upwards
rotation = -atan2(position.y , res.x - position.x));
// moving downwards
rotation = atan2(res.y - position.y , res.x - position.x));
其中res 是参考点,position 是矩形图像的位置(左上角)。 (有关atan2()的信息:atan2() on cplusplus.com)。
这很好用:当远离参考点 (res) 时,它会旋转得更多。但是,假设图像一直位于屏幕底部。如果我们向上移动它,它会非常突然地旋转。 我想在这个旋转“中间”,让它变得平滑。
突然旋转的意思是: 假设矩形在第 n 帧中没有移动:因此它的旋转为 0 度。然后我按向上箭头,它会计算角度。在第 n+1 帧中,角度为 30 度(例如)。这当然不是很顺利。
我的问题清楚了吗?我该怎么办?
【问题讨论】:
标签: c++ trigonometry