class Spider { final static float ANGLE_CONSTANT = 5 * PI / 12; final static float DECREMENT = 60; // 25 final static int R0 = 300; final static int DEPTH = 12; boolean TIME_DISABLED = false; Calendar zero; long timeElapsed; Web w; int c = #666666; int size, t; float x, y, r; public Spider(Web w, float x, float y, int size) { this.w = w; this.size = size; reset(); zero = Calendar.getInstance(); timeElapsed = 5000; } public void drawMe() { fill(c); stroke(c); ellipse((int) x, (int) y, size, size); go(); } public void go() { Calendar rightNow = Calendar.getInstance(); timeElapsed = rightNow.getTimeInMillis() - zero.getTimeInMillis(); if (TIME_DISABLED || timeElapsed > (1 * 1000)) { w.add(x, y); float theta = PI / 12 * (2 * t + 1); x += 2 * r * cos(ANGLE_CONSTANT) * cos(theta); y += 2 * r * cos(ANGLE_CONSTANT) * sin(theta); if (++t % DEPTH == 0) { r -= DECREMENT; y += DECREMENT; if (r <= 0) reset(); } zero = Calendar.getInstance(); } } void reset() { t = 0; x = (width / 2) - 0; y = (height / 2) - R0; r = R0; w.reset(); } }