如何根据鼠标位置旋转精灵
How do you rotate a sprite based on mouse position?
基本上,我有一个使用 SDL 2.0 渲染的精灵,我可以使用 SDL_RenderCopyEx()
顺时针围绕纹理的中心原点旋转可变量。我想通过使用物理斜率线和基于基线的两条直线之间的角度 x 来根据鼠标位置旋转它。我所说的基线可以在数学上表示为 x = orgin_x,其中orgin_x是旋转原点。另一条线是沿基线的一段,它将水平线端点垂直连接到orgin_x点。鼠标光标的角度是我想找到的旋转角色的角度。
请不要使用复杂的数学符号。我宁愿以 C 样式格式发布公式,并请解释数学背后的逻辑,以便我能够理解正在发生的事情并在需要时修复类似的未来问题。
一些基本的三角函数。您可以使用 atan2(delta_y, delta_x)。有了这个,您将在RAD中获得您的角度。要以度为单位获取角度,因为 RenderCopyEx 使用角度表示角度,因此您需要转换角度。你得到了360度和2 * PI Rad一个完整的圆圈。所以
angle_deg = (atan2(delta_y, delta_x)*180.0000)/3.1416
现在你有了做RenderCopyEx的角度
顺便说一下:
delta_y = origin_y - mouse_y
和
delta_x = origin_x - mouse_x
相关文章:
- 与互斥锁相比,旋转锁可以保证上下文切换
- 绘制旋转的三角形
- 旋转模型矩阵时的形状失真
- 四边形的 2D 旋转
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- 发布旋转矩阵(openGL/glm)
- 顺时针迭代旋转 3 位数字
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 如何有效地计算将单位立方体映射到自身的反射和旋转?
- 子轴围绕父轴而不是他自己的轴旋转
- SFML:在旋转SFML的精灵时,如何解决精灵质量下降
- 如何根据鼠标位置旋转精灵
- C++ 2D 如何在宇宙飞船上"stick"排气精灵并允许其相应地旋转?
- 精灵旋转偏移不会停留在它所属的位置。(SDL)
- OpenGL点精灵在片段着色器中旋转
- 如何将精灵旋转到点
- 如何同时旋转和平移我的精灵?cocos2dx 3.2
- 让精灵在按下按钮时旋转
- 旋转精灵(像素数据数组)x度