2014-01-16 63 views
0

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

请不要复杂的数学符号。我宁愿将公式以C风格格式发布,并且请解释数学背后的逻辑,以便我可以了解发生的情况并在需要时解决类似的未来问题。

+0

so you w蚂蚁指着一个精灵在鼠标?或者我误解了这个问题 – BWG

+0

是的,我想让精灵面向鼠标。 – Name

回答

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

+0

任何原因你有180四个零? – BWG

+0

为了获得更好的精度和180.0,编译器知道该数字是一个双精度数,而不是一个整数。 – jordsti