jrh 2006
(
var xx, yy, x, y, c, width, z=1, pp, zz=0, mm=10, alph=1.0;
width = 1;
w = GUI.window.new(Char.bullet, Rect(100, 100, 600, 600)).front;
w.view.background_(Color.black);
v = GUI.userView.new(w, w.view.bounds).mouseTrackFunc_({|v,ax,ay|
x = ax; y = ay;
4.do {
[xx, yy].choose.value([5, -5, 2, -2, 8, -8].choose * 2);
};
});
x = 200; y = 100;
xx = { |d=1| c = c.add((x = x + d) @ y ).keep(-150) };
yy = { |d=1| c = c.add(x @ (y = y + d)).keep(-150) };
c = [];
20.do {
[xx, yy].choose.value([10, -10, 5, -5, 2, -2].choose * 2);
};
c.postln;
w.drawHook = {
try { Pen.setSmoothing(false) };
z.do { |i|
Color.rand.alpha_(i.linexp(0, z-1, 1.0, alph)).set;
Pen.moveTo(c[0]);
Pen.width = width;
c.size.do { |i| Pen.lineTo(c.wrapAt(i)) };
Pen.stroke;
Pen.translate([-2, -2, 2, 2] @@ zz, [-2, 2, -2, 2]*2 @@ zz);
};
z = z + 1 % mm;
if(z % mm == 0) { zz = zz + 1; mm = rrand(5, 20); alph = #[0.1, 1.0].choose };
};
w.refresh;
fork { loop { 0.1.wait; defer { w.refresh; } } };
)
(
var xx, yy, x, y, c, d, width, z=1, pp, zz=0, mm=10, alph=1.0;
var phunz, distance, steps, nKeep, mode;
q = q ?? ();
width = 1;
w = GUI.window.new(Char.bullet, Rect(100, 100, 400, 400)).front;
w.view.background_(Color.black);
distance = 1;
nKeep = 20;
x = 200;
y = 100;
steps = #[1, 2, 2, 1, 4, 4, 28];
mode = true;
v = GUI.userView.new(w, w.view.bounds);
v.mouseTrackFunc_({|v,ax,ay|
x = ax; y = ay;
phunz.(8);
});
v.mouseEndTrackFunc_({|v,ax,ay|
q.sendData(d);
});
phunz = { arg n=1;
c = [];
n.do {
[xx, yy].choose.value(steps.choose *#[1, -1].choose);
};
d = d.add(c).keep(nKeep.neg);
};
xx = { |d=1| c = c.add((x = x + d)@ y ) };
yy = { |d=1| c = c.add(x @ (y = y + d)) };
phunz.(20);
w.drawHook = {
try { Pen.setSmoothing(false) };
z.do { |i|
Color.rand.alpha_(i.linexp(0, z-1, alph, 1.0)).set;
Pen.width = width;
d.do { |x, i|
Pen.moveTo(x[0]);
x.do { |point|
Pen.lineTo(point)
};
Pen.stroke;
};
Pen.translate(
[-1, -1, 1, 1] @@ zz * distance,
[-1, 1, -1, 1] @@ zz *(1.7320508075689* distance)
);
};
z = 1;
};
w.refresh;
fork { loop { 0.01.wait; defer { w.refresh; } } };
)