2013-05-05 4 views
0

В моем коде, у меня есть:Почему моя программа делает компьютер, похоже, плохой тригонометрией?

console.log(distance_along); 
console.log('Cosine: ' + Math.cos(2 * Math.PI * distance_along)); 
var added_degrees = 
    (ANCIENT_CLOCK.cos(2 * Math.PI * distance_along) * ANCIENT_CLOCK.earth_tilt); 

Это производит вывод:

-0.2567721374914637 
Cosine: -0.04253775592822526 

С большим количеством кода в http://JonathansCorner.com/ancient-clock

Что я сделал не так, и как я могу это исправить? Первое зарегистрированное значение находится в радианах (по модулю умножителя 2 π), второе зарегистрированное значение - это косинус совершенно другого числа. Зачем?

Раннее сообщение создавало впечатление, что я не знал о Math.cos(). Я знаю о Math.cos() и не знаю, почему он, по-видимому, создает значение, отклоняющееся от того, что другие люди сообщили для cos(-0.2567721374914637) в JavaScript и PHP.

У меня работает Mint Chrome.

+3

Ожидали 'сов (-0,2567721374914637)' и 'cos (2 * Math.PI * -0.2567721374914637)' для того же значения? –

+0

Возможный дубликат [Как работает триггер в JavaScript?] (Http://stackoverflow.com/questions/16387316/how-does-trig-work-in-javascript) – 2013-05-06 00:04:56

+0

Я тоже смущен, javascripts 'Math.cos (-1.6) '=' ~ -0.029', но мой калькулятор windows говорит 'cos (-1.6)' = '~ 1' –

ответ

2
console.log(distance_along); // -0.2567721374914637 
console.log(Math.cos(2 * Math.PI * distance_along)); // -0.04253775592822526 

Что я сделал не так, и как я могу это исправить? Первое зарегистрированное значение находится в радианах (по модулю умножителя 2π), второе зарегистрированное значение - это косинус совершенно другого числа. Зачем?

Поскольку вы умножили число в радианах с 2π, это совершенно другое число. Тем не менее, Math.cosделает ожидает, что его аргумент будет в радианах. Использовать

console.log(Math.cos(distance_along)); // 0.9672147629178562 
2

@jonathanhayward Я думаю, что у вас есть концептуальная проблема с функциями триггера и/или триггера.

Я прочитал Ваш вопрос 5 раз, и думаю, что вы хотите:

console.log(Math.cos(distance_along)); 
console.log('Cosine: ' + Math.cos(2 * Math.PI + distance_along)); 

ИЛИ

console.log(distance_along); 
console.log('Cosine: ' + (Math.cos(2 * Math.PI) * distance_along)); 

FYI:

Math.cos(2 * Math.PI + distance_along) == Math.cos(distance_along) // is true 
Смежные вопросы