从x和y速度计算方向角
问题描述:
我正在开发Game Maker类游戏(不是真正的游戏制作者),因为我在真实语言中编写游戏失败(可以编写普通应用程序,只是不能游戏)很多次。从x和y速度计算方向角
无论如何,在我使用的方向功能的程序被证明是有时错误。然而,物体的x和y速度总是正确的,所以我想计算方向角(以度为单位)。不幸的是我不是天才的数学,我总是在三角失败;(你能帮我
我的游戏制作IDE的角度坐标系如下:?
270 deg.
180 deg. 0 deg.
90 deg.
定位系统,就像是大多数环境(0,0在左上角)
答
数学库通常会与被叫atan2
只是用于该目的的功能:
double angle = atan2(y, x);
的角度以弧度为单位;乘以180/PI转换为度数。角度范围从-pi到pi。 0角是正x轴,角度顺时针增长。如果您需要其他配置,则需要进行较小的更改,如0角度为负y轴,范围从0至359.99度。
使用atan2
而不是atan
或任何其他反转三角函数的主要原因是,它会为您计算角度的正确角度,并且不需要一系列if语句。
答
使用反正切函数应该是这样的:
double direction(double x, double y) {
if (x > 0)
return atan(y/x);
if (x < 0)
return atan(y/x)+M_PI;
if (y > 0)
return M_PI/2;
if (y < 0)
return -M_PI/2;
return 0; // no direction
}
(其中x和y是水平和垂直速度,M_PI是pi和ATAN是反正切函数)
答
在游戏制造商具体情况,你可以使用下列内容:
direction = point_direction(x, y, x+x_speed, y+y_speed)
speed = point_distance(x, y, x+x_speed, y+y_speed)
(比较当前和未来的x/y坐标和返回值)
相反的过程来获得X/y_speed:
x_speed = lengthdir_x(speed, direction)
y_speed = lengthdir_y(speed, direction)
Note: Added this post because its still viewed in relation to Game Maker:
Studio and its specific functions. Maybe it has no value for the person who
asked originally but i hope it will help some Game Maker users who wander here.