2011-11-16 79 views

回答

16

参数被假定为弧度而不是度数。

尝试

Math.sin(Math.PI * (30/180)); 

下面注释注意到,预先计算的比值π/ 180是一个好主意。人们可以同伴加入Math.sin上度以这种方式工作:

Math.dsin = function() { 
    var piRatio = Math.PI/180; 
    return function dsin(degrees) { 
    return Math.sin(degrees * piRatio); 
    }; 
}(); 

(有些人不喜欢扩展内置对象,但由于一个不实例数学实例—至少,我不t —这似乎并不是非常令人反感)。

+4

+1,预先计算'Math.PI/180'已被证明是经常使用的很好的性能提升。 – pimvdb

+0

谢谢,这是很好的知道,但我不认为我曾经在JavaScript中使用过trig函数,除了好玩之外:-) – Pointy

+0

我从游戏的角度来看待它;我能够从预先计算中每秒获得一帧,所以我真的很推荐它。 – pimvdb

1

Math.sin接受以弧度表示的值,而计算器设置为度数。

3

Math.sinradians中工作,我猜你的计算器是度数。

2

如上所述,Math.sin()需要使用弧度作为输入。要将度数转换为弧度,请使用:

Radians = (Degrees * (Math.PI/180))