
Perhaps it isn't worthy of a title, but I would like to informally dub it "A Cursory Moment."
The Process:
Some sketches:

I was going to follow up the idea of the mouse and pop signs by making the mouse "click" on a place and then bounce off it, like the force of the click sent it flying. I got as far as making it move in the right physics-like snapping motion with the elastic function, but I didn't get the mouse to rotate, so I decided to play with contrast and repetition to make it look more interesting instead.
This was actually where I was going to stop:

I thought it looked like the James Bond opening, so I wanted to rotate the finger to make it a finger gun. I ended up with the rotated lines of circles lining up on accident and with some tweaking, I got all circles to line up. I thought it looked more interesting that way.
I felt like this work definitely turned out a lot better than expected(although I expected very little at that point). I like the way the repetition and the appearance of the hand go with the elastic movement. It's kind of rhythmic.
It definitely lacks a lot of the mathematical complexity that I would have liked to explore. The black and white was partially an aesthetic choice and mostly a practical one. The elastic movement is rather sloppy. Overall it's very simple. Way back in the beginning I had hoped to made something more along the lines of, well, lines, and I was really disappointed I couldn't manage to incorporate that at all. I think that with more time however, I definitely could have expanded on the concept or at least made the final product smoother.
I later went back and tweaked it a bit more:

Code (easing function from p5.func):
// based on p5.func examples - easing3_animation
// the sound is from the example
// I<3DM rld
var ease = new p5.Ease();
var speed = 0.02;
var t = 0.;
var doclear;
var x, y, tx, ty, x1, y1;
var osc, rev;
var pause = 0;
var pauseTime = 60;
var fc=0;
var padding = 20;
var ex1,ey1,ex2,ey2,ex3,ey3,ex4,ey4;
var left,right;
var phase;
var startx,starty;
var radius, mr;
var debug = false;
function setup()
{
frameRate(70);
createCanvas(640, 640);
radius = 120;
mr = radius*0.1;
ex1 = left;
ey1 = height/5;
ex2 = right;
ey2 = height/3 + height/6;
ex3 = left;
ey3 = ey2 + height/;
ey4 = 700;
left = width/4;
right = 3*left;
phase = 0;
background(255);
startx = left;
starty = -radius;
x = startx;
y = starty;
tx = startx;
ty = starty;
}
function draw()
{
background(0);
drawTheThing();
if (debug){
push();
background(255);
stroke(255);
text(frameCount, 20,20);
pop();
}
if (frameCount > 30 && frameCount < 100 && (frameCount%4 ==0)){
var filename = "myZoetrope_" + nf(frameCount,2) + ".png";
saveCanvas(filename, 'png');
}
}
function doPhase(){
switch(phase){
case 0:
ty = starty;
tx = left;
phase++;
break;
case 1:
ty = ey1;
tx = left;
phase++;
break;
case 2:
ty = ey2;
tx = right;
phase++;
break;
case 3:
ty = ey3;
tx = left;
phase++;
break;
case 4:
ty = ey4;
tx = right;
phase=0;
phase++;
break;
default:
ty += height/6;
if (tx==left) tx=right;
else if(tx==right) tx=left;
else tx = left;
phase=0;
redraw();
break;
}
}
function drawTheThing(){
var func = "elasticOut";
var q = ease[func](t*2.5);
var diff = frameCount - fc;
if (diff > pauseTime){
doPhase();
t = 0.;
fc = frameCount;
}
else if (phase==0)
doPhase();
x1 = map(q, 0., 1., x, tx);
y1 = map(q, 0., 1., y, ty);
fill(255);
stroke(0);
ellipse(x1, y1, radius,radius);
ellipse(x1+left, y1, radius,radius);
ellipse(x1-left, y1, radius,radius);
drawMouse(width-x1, height-y1, mr);
drawMouse(width-x1+left, height-y1, mr);
drawMouse(width-x1-left, height-y1, mr);
t+=speed;
if(t>1.) {
t=1.;
x = tx;
y = ty;
}
}
function drawMouse(y,x,s) {
push();
stroke(255);
noFill();
strokeWeight(10);
ellipse(x,y, 9*s,9*s);
stroke(0);
strokeWeight(5);
translate(-1.5*s,0,5);
rect(x,y,4*s,3*s,5);
rect(x,y-3.5*s,s,3.5*s,5,5,0,0);
rect(x+s,y-s,s,s,5,5,0,0);
rect(x+2*s,y-s,s,s,5,5,0,0);
rect(x+3*s,y-s,s,s,5,5,0,0);
rect(x-s,y,s,2*s,5);
pop();
}
}