2014-09-24 80 views
2

好,我已經建立了一個小提琴弧度爲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之間返回弧度。解讀負弧度與您的第二張圖像中的負度如何解讀完全相同。這是因爲三角函數是週期性的。 – 2014-09-24 17:38:04

+0

好的,但+/-範圍是多少?在'c.lineTo'之前使用'c.moveTo(0,0);',(第二個'cos'到'sin')之前的 – 8DK 2014-09-24 17:39:39

+0

我認爲這是你試圖去達到的效果。 [FIDDLE](http://jsfiddle.net/Ladvzxs4/) – DanFromGermany 2014-09-24 17:43:56

回答

3

因爲對於Y座標,您應該使用Math.sin()而不是Math.cos()。請參閱更新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 2014-09-24 17:42:51

+1

是的,你是對的 – 8DK 2014-09-24 17:44:21

1

這是因爲你叫Math.cos兩次,在X和Y軸雙向雙向移動。所以你總是會繪製一條對角線。將您的第二個電話改爲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]) 
    );}