i = di = dj = 0 fn1, fn2, fn3 = random(20), random(20), random(20) f = 10 def setup(): global zmx1, zmx2, zmy1, zmy2 size(500, 500) zmx1 = int(width / 4) zmx2 = 2 zmy1 = int(height / 4) zmy2 = 2 def draw(): global i if i <= width: i += 1 x = float(i + di) / zmx1 - zmx2 for j in range(height + 1): y = zmy2 - float(j + dj) / zmy1 zr = zi = zr2 = zi2 = 0 cr, ci = x, y n = 1 while n < 200 and (zr2 + zi2) < 4: zi2 = zi * zi zr2 = zr * zr zi = 2 * zi * zr + ci zr = zr2 - zi2 + cr n += 1 re = (n * fn1) % 255 gr = (n * fn2) % 255 bl = (n * fn3) % 255 stroke(re, gr, bl) point(i, j) def mousePressed(): global zmx1, zmx2, zmy1, zmy2, di, dj global i, j background(200) xt, yt = mouseX, mouseY di = di + xt - width / 2. dj = dj + yt - height / 2. zmx1 = zmx1 * f zmx2 = zmx2 * (1. / f) zmy1 = zmy1 * f zmy2 = zmy2 * (1. / f) di, dj = di * f, dj * f i = j = 0