2017-06-30 7 views
0

イムp5.jsライブラリを使用して、これらの円を表示するために、適切にループするためのフォーマットはできません。サークルを配列にするこのコードをどのように短縮すればよいですか?

function draw() { 
    ellipse(width/12,height/2,width/6,width/6);  
    ellipse(width/12,height/4,width/12,width/12); 
    ellipse(width/12,height/8,width/24,width/24); 
    ellipse(width/12,height/16,width/48,width/48); 
} 

私は次のことを試してみましたが、何の楕円が行われません。どこが間違っていますか?

以下、私は完全なコードを添付しています。

for(var i = 0; i < 4; i++){ 
    ellipse(width/12, height/(2 * (2^i)), width/(6 * (2^i)), width/(6 * (2^i)); 
} 

function setup() { 
 
    canvas = createCanvas(windowWidth,windowHeight); 
 
} 
 

 
function draw() { 
 
    background(255); 
 
    fill(\t 149, 185, 241,160); 
 
    rect(width*(1/6),0,width*(2/3),height); 
 
    
 
    
 
    fill(181,99,87,160); 
 
    noStroke(); 
 
    
 
    for(var i = 0; i < 4; i++){ 
 
    ellipse(width/12, height/(2* pow(2,i)), width/(6 * pow(2,i)), width/(6 * pow(2,i)); 
 
} 
 

 
    
 
} 
 

 

 
window.onresize = function() { 
 
    canvas.size(windowWidth, windowHeight); 
 
}

+1

のように、係数2を使用しているので、あなたは、left shift <<演算子を使用することができますが、あなたはforloop –

+0

使用 'Math.pow'せずに楕円を作ることができています'^'以上。 – Peter

+0

forloopなしで表示されますが、追加すると何も表示されません。 –

答えて

2

これは、あなたがそれだと思う何をしていません。

2^i 

ビット単位のXOR演算子だこと。詳細はthis questionをご覧ください.Googleはあなたの友人です。

あなたはおそらくP5.js pow()機能を探しています。詳細はthe referenceにあります。

あなたのコードはdebuggingです。このような質問がある場合は、各パラメータの値を印刷してみてください。問題を特定することができれば、グーグルが簡単になります。

たとえば、次の操作を行います。

for(var i = 0; i < 4; i++){ 
    console.log('i: ' + i); 
    console.log('width: ' + width); 
    console.log('width/12: ' + width/12); 
    console.log('pow(2,i): ' + pow(2,i)); 
    console.log('height/(2* pow(2,i)): ' + height/(2* pow(2,i))); 
    console.log('width/(6 * pow(2,i)): ' + width/(6 * pow(2,i))); 
    ellipse(width/12, height/(2* pow(2,i)), width/(6 * pow(2,i)), width/(6 * pow(2,i))); 
} 

これは、あなたが期待したものと異なっているパラメータを正確に教えてくれますし、あなたはさらにそこから、あなたの問題を特定することができます。

もちろん、これにはdeveloper consoleもチェックする必要があります。実際に行うことも習慣に入れてください。ここでは、発生したエラーが表示されます。あなたの質問に現在あるコードは、ellipse()行の末尾に)のかっこがありません。

フォローアップの質問がある場合は、コピーして貼り付けることができるMCVEを投稿して、切断されたコードスニペットの代わりに実行してください。

+0

申し訳ありませんが、最小、完全、および検証可能な例を使用しようとします –

+0

@MatthewMcLeod私が言ったように、あなたのコードをデバッグし、フォローアップの質問があれば[mcve]を投稿する必要があります。コメントはコードではありません。質問を編集するか、新しい質問を自分の投稿に投稿してください。 –

+0

@MatthewMcLeod問題をデバッグする方法の詳細については、私の編集した回答をご覧ください。 –

0

あなたは

for (var i = 0; i < 4; i++) { 
    ellipse(width/12, height/(2 << i), width/(6 * (2 << i)), width/(6 * (2 << i)); 
} 

console.log(2 << 0, 2 << 1, 2 << 2, 2 << 3);

関連する問題