2017-05-24 58 views
1

我有一个函数,我写了绘制一个多边形与任何数量的边。但是,当我只用Java脚本运行它时,它不起作用。为什么?Processing.js形状不工作

function sketchProc(processing) { 

function polygon (sides, centerX, centerY, radius, fillColor, strokeColor) { 
    processing.fill(fillColor); 
    processing.stroke(strokeColor); 
    var innerAngle = 360/sides; 
    var rotationAngle = innerAngle; 
    processing.beginShape(); 
    for (var i = 0; i < sides + 2; i++) { 
     processing.vertex(centerX + radius*Math.sin(rotationAngle), centerY + radius*Math.cos(rotationAngle)); 
    console.log(centerX + radius*Math.sin(rotationAngle), centerY + radius*Math.cos(rotationAngle)); 
     rotationAngle = innerAngle * i; 

    } 
    processing.endShape(); 
}} 

它只是绘制一个奇怪的锯齿形状。 (我稍后在我的代码中实现了这个功能,它工作正常,只是形状被搞乱了。)

+0

您可以发布一个链接到JSFiddle或运行您的代码的CodePen吗? –

+0

@KevinWorkman当我输入时,canvas和外部脚本不起作用。 –

+1

我不确定你在说什么。我们需要能够运行代码。做到这一点的最佳方式是将JSFiddle或CodePen放在一起。 –

回答

0

未来,您可能想编辑自己的问题,而不是仅仅使用JSFiddle进行评论。你也可以@reply询问每个人。否则,我们不会看到它!无论如何,谢谢你把它放在一起。

在该行看看:

processing.vertex(centerX + radius*Math.sin(rotationAngle), centerY + radius*Math.cos(rotationAngle)); 

注意,你喂养rotationAnglesin()cos()功能。另请注意,rotationAngle以度为单位指定。 (0到360之间的值。)

这可以在可汗学院,因为默认情况下他们的功能需要度。

但是,正常的Processing和Processing.js需要参数弧度! (0到2 PI之间的值。)所以你必须将你的rotationAngle变量转换成弧度值!你可以使用方便的radians()函数来做到这一点。

更多信息可在the reference找到。

+0

非常感谢! –