2014-09-24 7 views
2

Ok я построил скрипкуРадиан 90 градусов на 45

http://jsfiddle.net/roLLqfs6/1/

Вопросы, почему я вижу все линии перекрытия и почему, даже когда я построить радианах от степени это еще перекрытием ?

var radians = 90 * (Math.PI/180); //90 degrees if I'm not mistaken 

также Этих диаграмма показывает радианы в диапазоне от 0 до 6,2, но в JavaScript я вижу номера для радианов иногда с минусом перед. (пример: -3.0924735724101273), что с этим?

enter image description here

И это показывает минус

enter image description here

что правильно (я полагаю, оба, но я нахожу мой сам смущен относительно того, что диапазон на самом деле)

+0

Методы математики Javascript возвращают радианы между -Math.PI и + Math.PI. Интерпретируйте отрицательные радианы точно так же, как отрицательные степени интерпретируются во втором изображении. Это работает, поскольку тригонометрические функции являются периодическими. –

+0

нормально, но что такое +/- диапазон? – 8DK

+0

перед 'c.lineTo' использовать' c.moveTo (0,0); ', (второй' cos' '' sin') Я думаю, что это тот эффект, который вы пытаетесь достичь. [FIDDLE] (http://jsfiddle.net/Ladvzxs4/) – DanFromGermany

ответ

3

Поскольку вы должны умножаться на Math.sin() вместо Math.cos() для Y-координаты. Смотрите обновленный jsFiddle

for (var i = 0; i < r.length; i++) { 
    c.lineTo(
     100 + 100 * Math.cos(r[i]), 
     100 + 100 * Math.sin(r[i]) 
    ); 
} 
+0

Если не указано, «начальная точка» для каждой строки где закончилась последняя строка, не так ли? – DanFromGermany

+1

да, вы правы – 8DK

1

Это потому, что вы называете Math.cos дважды, как для перемещения как на оси х и у. Таким образом, вы всегда будете рисовать диагональную линию. Измените свой второй вызов на Math.sin:

for(var i=0;i<=r.length-1;i++){ 
    c.lineTo(
     100+(100)*Math.cos(r[i]), 
     100+(100)*Math.sin(r[i]) 
    );}