var p, motoP:Array; var r, kazu:Number; var al, addAl:Number; [setup, 500, 500]{ p = new Array(); motoP = new Array(); al = 50; addAl = 2; r = 100; kazu=24; for(var i = 0; i < kazu; ++i){ p[i] = new point(250+r*cos(pi*2*i/kazu), 250+r*sin(pi*2*i/kazu)); motoP[i] = new point(250+r*cos(pi*2*i/kazu), 250+r*sin(pi*2*i/kazu)); } } //幅がwidth,高さがheightの描画エリアを準備する. [paint]{ clearAll(); setPenSize(3); setColor(127, 0, 0); setAlpha(al); drawSmoothCurvedRing(p); setAlpha(100-al); fillSmoothCurvedRing(p); } [always]{ al += addAl; if(al > 70 || al < 30) addAl *= -1; for(var i = 0; i < p.length; ++i){ var dist:Number = Math.max(60 - p[i].distanceTo(mouse), 0); if(mouseX != preMouseX && mouseY != preMouseY){ p[i].push(dist*1.3, mouse.directionTo(preMouse)+pi); } p[i].pushTo(motoP[i]); // p[i].push(dist*0.1, p[i].directionTo(mouse)) } } [interval, 0, 25]{//maru for(var i = 0; i < kazu; ++i){ motoP[i].x = 250+r*cos(pi*2*i/kazu); motoP[i].y = 250+r*sin(pi*2*i/kazu); } } [interval, 4]{ var kakusu = Math.min(Math.floor(2+random()*4), 6); var rr = r*(.5+random()); for(var i = 0; i < kazu; ++i){ if(kakusu != 2){ var doko = ((i+(kazu/kakusu)-(kazu/kakusu/4)) % (kazu/kakusu)); var doko2 = Math.abs(doko - kazu/kakusu/2); var r2 = rr*cos(pi*2/kakusu/2)/cos((pi*2/kakusu/2)*(doko2/(kazu/kakusu/2))); motoP[i].x = 250+r2*cos(pi*2*i/kazu); motoP[i].y = 250+r2*sin(pi*2*i/kazu); }else{ motoP[i].x = 250+rr*cos(pi*2*i/kazu); motoP[i].y = 250+rr*sin(pi*2*i/kazu); } } } [interval, 5, 25]{//sankaku var kakusu = 3; for(var i = 0; i < kazu; ++i){ var doko = ((i+(kazu/kakusu)-(kazu/kakusu/4)) % (kazu/kakusu)); var doko2 = Math.abs(doko - kazu/kakusu/2); var r2 = r*cos(pi*2/kakusu/2)/cos((pi*2/kakusu/2)*(doko2/(kazu/kakusu/2))); motoP[i].x = 250+r2*cos(pi*2*i/kazu); motoP[i].y = 250+r2*sin(pi*2*i/kazu); } } [interval, 10, 25]{//shikaku var kakusu = 4; for(var i = 0; i < kazu; ++i){ var doko = ((i) % (kazu/kakusu)); var doko2 = Math.abs(doko - kazu/kakusu/2); var r2 = r*cos(pi*2/kakusu/2)/cos((pi*2/kakusu/2)*(doko2/(kazu/kakusu/2))); motoP[i].x = 250+r2*cos(pi*2*i/kazu); motoP[i].y = 250+r2*sin(pi*2*i/kazu); } } [interval, 15, 25]{//shikaku var kakusu = 5; for(var i = 0; i < kazu; ++i){ var doko = ((i+(kazu/kakusu)+(kazu/kakusu/4)) % (kazu/kakusu)); var doko2 = Math.abs(doko - kazu/kakusu/2); var r2 = r*cos(pi*2/kakusu/2)/cos((pi*2/kakusu/2)*(doko2/(kazu/kakusu/2))); motoP[i].x = 250+r2*cos(pi*2*i/kazu); motoP[i].y = 250+r2*sin(pi*2*i/kazu); } } [interval, 20, 25]{//shikaku var kakusu = 6; for(var i = 0; i < kazu; ++i){ var doko = ((i) % (kazu/kakusu)); var doko2 = Math.abs(doko - kazu/kakusu/2); var r2 = r*cos(pi*2/kakusu/2)/cos((pi*2/kakusu/2)*(doko2/(kazu/kakusu/2))); motoP[i].x = 250+r2*cos(pi*2*i/kazu); motoP[i].y = 250+r2*sin(pi*2*i/kazu); } }