快捷搜索:  汽车  科技

javascript如何计算坐标(JavaScript用Math.atan计算反正切值)

javascript如何计算坐标(JavaScript用Math.atan计算反正切值)3. 如果x是-0,那么返回值是-0;2. 如果x是 0,那么返回值是 0;对此JavaScript作了明确的规定,Math.atan()方法返回的是属于[-π/2 π/2]之间的角,即图1中最中间的那个周期所包含的角。相比于其它编程语言,JavaScript的Number类型比较特殊,这主要是它包含NaN、 0、-0、正无穷( Infinity)和负无穷(-Infinity)这几个特殊数字。当Math.atan()方法的参数x是这些特殊数字时,需要额外引起注意。结果就是,JavaScript按照以下规则来决定Math.atan()方法的返回值。1. 如果x是NaN,那么返回值是NaN;

javascript如何计算坐标(JavaScript用Math.atan计算反正切值)(1)

1. 基本概念

Math.atan()方法用于计算一个数的反正切值,调用它的语法形式如下:

Math.atan(x);

根据反正切的定义,该方法的参数x是某个角的正切值,而Math.atan()方法返回的正是这个角,当然返回值是该角的弧度值而非角度值。同时也可知x是一个数字,即它属于Number类型;如果不是,那么它会先被自动转换为Number类型。

javascript如何计算坐标(JavaScript用Math.atan计算反正切值)(2)

图1 正切函数tan(x)的图像

图1展示了正切函数tan(x)的函数图像,从图中可知tan(x)的值域是(-∞ ∞),因此反正切函数atan(x)的定义域为(-∞ ∞)。还可知,tan(x)是一个周期函数,即一个正切值可以对应多个角,那么Math.atan()方法返回的到底是哪一个角呢?

对此JavaScript作了明确的规定,Math.atan()方法返回的是属于[-π/2 π/2]之间的角,即图1中最中间的那个周期所包含的角。

相比于其它编程语言,JavaScript的Number类型比较特殊,这主要是它包含NaN、 0、-0、正无穷( Infinity)和负无穷(-Infinity)这几个特殊数字。当Math.atan()方法的参数x是这些特殊数字时,需要额外引起注意。结果就是,JavaScript按照以下规则来决定Math.atan()方法的返回值。

1. 如果x是NaN,那么返回值是NaN;

2. 如果x是 0,那么返回值是 0;

3. 如果x是-0,那么返回值是-0;

4. 如果x是正无穷( Infinity),那么返回值是π/2;

5. 如果x是负无穷(-Infinity),那么返回值是-π/2;

6. 其余情况下,x是普通数字,返回值是正切等于x的角的弧度值。

如果你传递的参数x不是数字,那么以上这些规则中提到的x的值代表的是它被转换为数字后的值。对于规则4和5,从严格的数学意义上来说,反正切函数atan(x)的值不能包含π/2和-π/2。但JavaScript这样规定也有它的道理,那就是当x趋近于正无穷和负无穷时,atan(x)是趋近于π/2和-π/2的。

2. 示例

为了展示Math.atan()方法的作用,我们用多种参数来调用它,以下代码的执行结果如图2所示。

<script> /* 参数是普通数字,45度角(π/4)的正切等于1 */ var value1 = Math.atan(1); console.log("Math.atan(1):"); console.log(value1); /* 参数是普通数字,60度角(π/3)的正切值为根号3(约等于1.732) */ var value2 = Math.atan(1.732); console.log("\nMath.atan(1.732):"); console.log(value2); /* 下面5个方法调用中的参数都是特殊数字 */ var value3 = Math.atan(NaN); console.log("\nMath.atan(NaN):"); console.log(value3); var value4 = Math.atan( 0); console.log("\nMath.atan( 0):"); console.log(value4); var value5 = Math.atan(-0); console.log("\nMath.atan(-0):"); console.log(value5); var value6 = Math.atan( Infinity); console.log("\nMath.atan( Infinity):"); console.log(value6); var value7 = Math.atan(-Infinity); console.log("\nMath.atan(-Infinity):"); console.log(value7); /* * 布尔值false转换成数字为 0,因此 * Math.atan(false)等价于Math.atan(0) */ var value8 = Math.atan(false); console.log("\nMath.atan(false):"); console.log(value8); </script>

javascript如何计算坐标(JavaScript用Math.atan计算反正切值)(3)

图2 示例代码的执行结果

(完)

猜您喜欢: