Processingで図形を特定の個数&ランダムな位置に描く、その2
Macのビジュアルプログラミング環境「Quartz Composer」では、図形をグループ化してそれごと動かすというのが簡単にできます。
が、Processingだとfor使って計算しなくちゃアカンからめんどいのーと思ってこのハコの記事
prince9.hatenablog.com
を書いていたのですが、
translateで動かせばええやんと。
とはいえ図形によってはtranslate使うと線(stroke)がジャギる感があるので、あんまり使いたくなかったのでした・・・
図形はオライリー社が出してる「Processingをはじめよう」
www.oreilly.co.jp
のフクロウさんを参照しました。複雑だったので。
下記のように、ランダムな位置にフクロウさんを描きます。マウスクリックで位置を変更します。
int x,y; void setup() { size(600,600); background(204); noLoop(); } void draw() { background(204); //100から400の間で、10個ランダムに描く。実際はtranslateでランダムに移動させている for (int i = 0; i < 10; i++) { x = int(random(100, 400)); y = int(random(100, 400)); owl(); } /* //フクロウさんそのものコード translate(110,110); stroke(0); strokeWeight(70); line(0,-35,0,-65); noStroke(); fill(255); ellipse(-17.5,-65,35,35); ellipse(17.5,-65,35,35); arc(0,-65,70,70,0,PI); fill(0); ellipse(-14,-65,8,8); ellipse(14,-65,8,8); quad(0,-58,4,-51,0,-44,-4,-51); */ } void owl() { //フクロウさんのコード pushMatrix(); translate(x,y); stroke(0); strokeWeight(70); line(0,-35,0,-65); noStroke(); fill(255); ellipse(-17.5,-65,35,35); ellipse(17.5,-65,35,35); arc(0,-65,70,70,0,PI); fill(0); ellipse(-14,-65,8,8); ellipse(14,-65,8,8); quad(0,-58,4,-51,0,-44,-4,-51); popMatrix(); } void mousePressed() { redraw();// ボタンが押されたときだけ実行 }