point[] p = new point[6]; [setup]{ for(int i = 0; i < p.length; ++i){ p[i] = new point(); } } [paint]{ clearAll(); for(int i = 1; i < p.length-1; ++i){ double ax = (p[i-1].x+p[i].x)/2; double ay = (p[i-1].y+p[i].y)/2; double bx = (p[i].x+p[i+1].x)/2; double by = (p[i].y+p[i+1].y)/2; if(i == 1){ ax = p[0].x; ay = p[0].y; } if(i == p.length-2){ bx = p[p.length-1].x; by = p[p.length-1].y; } drawBezierCurve(ax, ay, p[i].x, p[i].y, p[i].x, p[i].y, bx, by); } fillOval(p[0], 4, 4); fillOval(p[p.length-1], 4, 4); } [always]{ p[0].pushTo(mouse, p[0].distanceTo(mouse)*.2); for(int i = 1; i < p.length; ++i){ p[i].pushTo(p[i-1], p[i].distanceTo(p[i-1])*.2); } }