// funcadelics.
// (uses addField method from PenExtensions)
(
var a, w, i=0, run=true, cfunc, lfunc;
a = Array.fill2D(10, 20, { arg i, j; (i & j + i) % j / 10 });
w = SCWindow("si", Rect(128, 164, 460, 460));
w.view.background = Color.black;
cfunc = { |val| Color(
0.2*i.fold(0, 0.4),
val*i.fold(0, val.wrap(0, 0.4)),
val*i.fold(0, 1.1),
0.5
)
};
lfunc = {|val| 1/ val ** i.fold(0, 1.1) * i.fold(val,2) * 0.5 };
w.drawHook = {
i = i + 0.01;
Pen.rotate(i, 240, 240);
Pen.translate(100,100);
Pen.addField(a, Rect(0, 0, 200, 200), \fillOval, cfunc, lfunc)
};
w.front;
w.onClose = { run = false };
{ while { run } { w.refresh; 0.05.wait; } }.fork(AppClock)
)