double dist, dire; point p[] = new point[80]; double ppx[] = new double[p.length]; double ppy[] = new double[p.length]; double x1, y1, x2, y2; double hCol, sCol, bCol; Color col; //sample [setup, 600, 600]{ for(int i = 0; i < p.length; i ++){ p[i] = point(monitorWidth / 2., monitorHeight/2.); ppx[i] = p[i].x; ppy[i] = p[i].y; } setBackColor(255, 255, 255); hCol = 1.0; sCol = 1.0; bCol = 1.0; } [always]{ for(int i = 0; i < p.length; i ++){ dist = p[i].distanceTo(mouse); dire = p[i].directionTo(mouse); if(100 < dist) dist = 100; p[i].push(dist, dire); dist = distance(preMouseX, preMouseY, mouseX, mouseY); dire = direction(preMouseX, preMouseY,mouseX, mouseY); dire = dire - (Math.PI / 2.) + ((i + 1) * (Math.PI) / p.length); dist = dist *2; p[i].push(dist, dire); } } [paint]{ clearAll(); hCol = 1.0; for(int i = p.length - 1; 0 <= i; i --){ hCol = hCol += 0.002; if(1.0 < hCol) hCol = 0.0; col = Color.getHSBColor((float)hCol, (float)sCol, (float)bCol); setColor(col); x1 = (mouseX + p[i].x) / 2.; y1 = (mouseY+ p[i].y) / 2.; x2 = (p[i].x + ppx[i]) / 2.; y2 = (p[i].y + ppy[i]) / 2.; drawBezierCurve(mouseX, mouseY, x1, y1, x2, y2,ppx[i], ppy[i]); } for(int i = p.length - 1; 0 <= i; i --){ ppx[i] = p[i].x; ppy[i] = p[i].y; } }