JavaScript坐标Sin,Cos还是Tan? 我正在尝试在Web浏览器中学习一些用于游戏开发的基本三角函数。我知道soh cah toa rule等。我知道我们也在-1和1之间工作。
我很困惑,但我需要根据角度分别计算x和y坐标。
这是我必须在x和y中计算出我的角度方向,这确实有效(感谢Loktar)。
velY = -Math.cos(angle * Math.PI / 180) * thrust;
velX = Math.sin(angle * Math.PI / 180) * thrust;
我从中理解的是,我根据一个小公式找到x和y的cos,将我的角度变量转换为弧度。
但是,为什么cos需要用于x和sin用于y?晒黑在哪里?这是与圆的4个象限有关吗?
当我只给出一个角度时,我怎么知道何时使用sin cos或tan?我需要找出使用x,y的角度所在的圆圈的位置?
任何简单的图表或解释都会非常有用!
由于
答案 0 :(得分:13)
基本定义(来自你的三角学书):
cos ϴ = x/h, sin ϴ = y/h
描述x,y和H的免费ASCII艺术:
_
/\ assume we're going this way
/
/|
/ |
h / |
/ | Y
/ |
/ϴ |
+-------
X
矢量可以分成两个矢量的和。 (你可以在图中想到这一点,因为向东北方向移动H米与向东移动X米,向北移动为Y米)
在这种情况下,H对应于您当前的推力。你想找到那个推力的X和Y分量。因为cosΘ= X / H(余弦的基本定义),我们可以说(通过简单代数)
X = H * cos ϴ
然而,Θ被假定为弧度量。如果您正在使用度数,则必须乘以Math.PI / 180才能获得正确的值。因此,你有
ϴ = angle * Math.PI / 180
我们非常接近!现在,我们经典的余弦定义公式(当翻译成我们的术语时)看起来像
cos (angle * Math.PI / 180) = X / H
H是我们的推力矢量,X只是推力矢量的水平部分。
“现在,等一下,”你说。 “为什么我用余弦来计算垂直速度呢?你的轴似乎翻了个身。”没错。这是标准的几何方向 - 角度测量为从-------->
直接向右逆时针旋转。您的轴被翻转是因为您将角度存储为“时钟角度”,即0度为12:00。为了使用标准几何方程,我们必须镜像整个宇宙,以便翻转X和Y轴。幸运的是,这样做的数学方法就是在方程式中切换所有的X和Y.
standard 'math' coordinate system
_
/\
/
/|
/ | angles increase counterclockwise
h / |
/ | Y
/ |
/ϴ |
+----------- (zero degrees starts here)
(0,0) X
your coordinate system
(zero degrees starts here)
^
| angles increase clockwise
| /
| /
|ϴ/
|/
+
最后,为什么余弦中有负数?因为这是我们在
中进行数学运算的笛卡尔系统 ^ y-axis
|
|
+----> x-axis
这是你要绘制的笛卡尔系统(可能是画布)
+------> x-axis
|
|
v y-axis
由于y轴面向另一个方向,因此将所有y值乘以负数1以获得正确的方向