2017-05-24 56 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

非常感謝! –