2

所以我正在使用 javascript 和画布开发粒子发射器。
我希望能够根据角度设置粒子发射的方向。

这可以通过这个函数来完成:

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。

如果函数应该像这样工作,它应该是什么样子?

这是我如何思考的图像:(
发射器在原点。)

发射器在原点

4

2 回答 2

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;
于 2012-06-23T14:48:02.210 回答
0

在我看来,您的问题是您正在考虑方向,这是一个向量,就好像它是一个标量一样。

您需要记住,二维向量表示为两个分量:

在此处输入图像描述

在此处输入图像描述

您可以根据单位向量工作,因此幅度 r = 1。

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

于 2012-06-23T18:08:21.643 回答