我正在尝试理解Math.tan方法背后的数学,但它没有任何意义。有人可以向我解释它是如何工作的吗?
首先,求解切角的数学公式是Tangent = Opposite / Adjacent。这意味着我需要知道三角形的两边来确定切线角度。然而,Math.tan方法只接受弧度的单个参数,而不是两边的长度,所以我不明白它是如何计算切线的角度的。
接下来在示例中,它们显示将不可能的巨大弧度值传递到方法中并获取值。例如,W3学校显示Math.tan(90)
的例子,但是90弧度等于5,156.6度,这是直角三角形的一个不可能的角度。
此方法如何工作,将90弧度转换为-1.995200412208242切线角度的幕后发生的事情
答案 0 :(得分:0)
首先让我们谈谈切线是什么:Tangent对于特定点的坐标是y/x
(例如,参见this YouTube video)。
因此,如果您希望pi的切线超过2,在图形上,它是90度角,那么坐标为(0, 1)
。然后你只需要划分1/0
。
但是,Math.tan
不是很精确。在Chrome 52中,Math.tan(Math.PI / 2)
(来自上面的视频)是16331239353195370
,即使它应该评估为JavaScript中的Infinity
值(数学值实际上是未定义的,因为它适用于{ {1}})。
根据this answer,V8实施是:
1/0
(作为旁注:Chrome实际输出的值大于function MathTan(x) {
return MathSin(x) / MathCos(x);
}
,您可以通过运行Number.MAX_SAFE_INTEGER
来证明这一点,因此Chrome会将其视为“接近无限”。)< / p>
缺乏精确值的原因是pi通常表示为固定值(因为我们在计算机内存中有限制),即使它在编程环境之外应该是“无限”或“未定义” 。例如,在我的浏览器中,Number.MAX_SAFE_INTEGER < Math.tan(Math.PI / 2) // => true
固定为Math.PI
。