根据度数计算方向

时间:2012-06-23 14:35:37

标签: javascript jquery math graph trigonometry

所以我正在研究一个带有javascript和canvas的粒子发射器 我希望能够根据角度设置粒子的发射方向。

这可以通过此功能完成:

y = Math.tan(45 * Math.PI/180);

如果角度为45,则返回1.等等。

但我并不知道如何实现这一点,因为像素计算有点不同。将-1视为每步移除一个像素,将1视为添加一个像素。

如果角度为45,则Y为1,X为1,这是正确的 但是要使像素在315度下行进,Y为-1,X应为1 在225度时,Y应为-1(但为1),X应为-1。

如果它应该像这样工作,该如何看待它?

这是一个如何思考的形象:
(发射器位于原点。)

The emitter is in origin

2 个答案:

答案 0 :(得分:1)

实际上很简单,

angle = (angle * Math.PI/180) % 360;
tangent = Math.tan(angle);

因为你不知道x在哪里;

section_x_positive = (angle<90||angle>270?1:-1);
section_y_positive = (angle>0&&angle<180?1:-1);
x = abs(tangent) * section_x_positive;
y = abs(tangent) * section_y_positive;

答案 1 :(得分:0)

在我看来,你的问题就是你在思考方向,这是一个向量,就好像它是一个标量。

您需要记住2D矢量表示为两个组成部分:

enter image description here

enter image description here

你可以按单位矢量工作,所以幅度r = 1。

因此,如果你有一个方向角,它应该以弧度为单位,以逆时针方向增加,并从x = 0水平轴开始,你最终得到的单位向量的两个分量指向你想要的方向。