float a=0.0; float b=0.0; float bx =0; final int nx=4; final int ny=4; final int d=150; final int r=80; int type=0; Audio audio = new Audio(); String ext; void setup() { size(600, 600); //noSmooth(); noStroke(); ellipseMode(CENTER); // audio if (audio.canPlayType && audio.canPlayType("audio/ogg")) { ext = ".ogg"; } else { ext = ".mp3"; } audio.setAttribute("src","bgm"+ext); audio.addEventListener("ended",repeat); audio.play(); } void repeat(){ audio.play(); } void draw() { background(64); // switch(type) { case 0: fill(192); for (int h=-1; h<=nx; h++) { for (int i=-1; i<=ny; i++) { bx=constrain(-0.4*cos(a)+0.25, 0, 0.5); if (bx==0 || bx==0.5) { ellipse(h*d+bx*d, i*d+bx*d, r, r); } else { arc(h*d+bx*d, i*d+bx*d, r, r, a+HALF_PI*0, a+HALF_PI*1); arc(h*d+bx*d, i*d+(1-bx)*d, r, r, a+HALF_PI*3, a+HALF_PI*4); arc(h*d+(1-bx)*d, i*d+(1-bx)*d, r, r, a+HALF_PI*2, a+HALF_PI*3); arc(h*d+(1-bx)*d, i*d+bx*d, r, r, a+HALF_PI*1, a+HALF_PI*2); } } } break; case 1: fill(192); for (int h=-1; h<=nx; h++) { for (int i=-1; i<=ny; i++) { bx=constrain(-0.4*cos(a)+0.25, 0, 0.5); if (bx==0 || bx==0.5) { ellipse(h*d+bx*d, i*d+bx*d, r, r); } else { arc(h*d+bx*d, i*d+bx*d, r, r, a+PI*1.75, a+PI*2.75); arc(h*d+(1-bx)*d, i*d+(1-bx)*d, r, r, a+PI*0.75, a+PI*1.75); } } } break; case 2: fill(192); for (int h=-1; h<=nx; h++) { for (int i=-1; i<=ny; i++) { bx=constrain(-0.4*cos(a)+0.25, 0, 0.5); if (bx==0 || bx==0.5) { ellipse(h*d+bx*d, i*d+bx*d, r, r); } else { arc(h*d+(1-bx)*d, i*d+bx*d, r, r, a+PI*0.25, a+PI*1.25); arc(h*d+bx*d, i*d+(1-bx)*d, r, r, a+PI*1.25, a+PI*2.25); } } } break; case 3: fill(192); if (aPI) { for (int h=-1; h<=nx; h++) { for (int i=-1; i<=ny; i++) { bx=constrain(tan(a/2-PI*0.75), 0, 10); ellipse(h*d, i*d, bx*r, bx*r); } } } break; } a+=0.015; if (a>TWO_PI) { a=0; type=floor(random(4)); } fill(128); text("Circlation (www.atsuhiro-me.net)", 40, height-40); }