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;
1. 基本概念Math.atan()方法用于计算一个数的反正切值,调用它的语法形式如下:
Math.atan(x);
根据反正切的定义,该方法的参数x是某个角的正切值,而Math.atan()方法返回的正是这个角,当然返回值是该角的弧度值而非角度值。同时也可知x是一个数字,即它属于Number类型;如果不是,那么它会先被自动转换为Number类型。
图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>
图2 示例代码的执行结果
(完)