如何根据鼠标位置旋转精灵?

时间:2014-01-16 23:06:38

标签: c++ c geometry sdl trigonometry

基本上,我有一个使用SDL 2.0渲染的精灵,我可以使用SDL_RenderCopyEx()顺时针旋转纹理的中心点的可变量。我想根据鼠标位置旋转它,使用我的物理斜线和基于我的基线的两条直线之间的角度x。我正在谈论的基线可以数学表示为x = orgin_x,其中orgin_x是旋转orgin。另一条线是沿着基线的一个线段,它将水平线端点垂直连接到orgin_x点。与鼠标光标的角度是我想要找到的旋转角色的角色。

请不要复杂的数学符号。我希望公式以C风格格式发布,请解释数学背后的逻辑,这样我就可以了解发生了什么,并在必要时解决类似的未来问题。

1 个答案:

答案 0 :(得分:2)

一些基本的三角学。您可以使用atan2(delta_y,delta_x)。有了这个,你将获得RAD的角度。要获得角度,因为RenderCopyEx使用Degree作为角度,您需要转换角度。你有360度和2 * PI Rad整整一圈。所以

angle_deg =(atan2(delta_y,delta_x)* 180.0000)/3.1416

现在你有了进行RenderCopyEx的角度

BTW:

delta_y = origin_y - mouse_y

AND

delta_x = origin_x - mouse_x