我在屏幕左侧有一个图像(假设它是一个简单的矩形),我可以上下移动它。向上移动它时,我使用一些简单的三角函数来旋转它,使矩形“指向”屏幕的右上角。向下移动时,它指向屏幕的左下角。
鉴于我的应用程序使用以下坐标系:
我使用以下代码来实现旋转:
// 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()
: cplusplus.com 上的atan2())。
这很好用:当远离参考点 (res) 时,它会旋转得更多。但是,假设图像一直位于屏幕底部。如果我们向上移动它,它会非常突然地旋转。我想在这个旋转“中间”,让它变得平滑。
我所说的突然旋转的意思是:假设矩形在第 n 帧中没有移动:因此它的旋转为 0 度。然后我按向上箭头,它会计算角度。在第 n+1 帧中,角度为 30 度(例如)。这当然不是很顺利。
我的问题清楚吗?我该怎么做?