Параметры предполагаются в радианах, а не в градусах.
Попробуйте
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);
};
}();
(Некоторые люди не любят расширять встроенные объекты, но так как никто не создает экземпляры Math-экземпляров & mdash; по крайней мере, я не & mdash; это не кажется ужасно оскорбительным.)