2014-09-24 114 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]) 
    );}