// nick@coolbubble.com // thanks to stick figure ninja for source image & idea // for b3ta BImage imageA; float [] coords = {109.0f,164.0f,193.0f,159.0f}; int toggleSpong = 0; int toggleDelay = 0; // set to 1 for slow eyes float mx=100,my=100; void setup() { size(275,298); imageA = loadImage("noeyecat.jpg"); ellipseMode(CENTER_DIAMETER); } void keyPressed() { if (key=='s') { if (toggleDelay==0) toggleDelay=1; else toggleDelay=0; } } void loop() { background(imageA); float dx,dy,distance,nx,ny; if (toggleDelay==0) { mx=mouseX; my=mouseY; } else { mx=(mx*0.95f)+((float)mouseX*0.05f); my=(my*0.95f)+((float)mouseY*0.05f); } for (int i=0;i<2;i++) { // get vector from eye to mouse. dx = mx-coords[0+i*2]; dy = my-coords[1+i*2]; distance=constrain(sqrt(sq(dx)+sq(dy)),0.01f,width); nx=dx/distance; // normalise vector. ny=dy/distance; nx*=8.0f; ny*=8.0f; drawEye(toggleSpong, coords[0+i*2], coords[1+i*2],nx,ny); } // handle nose click. if (mouseX>137 && mouseY>204 && mouseX<174 && mouseY<222 ) { if (mousePressed) { if (toggleSpong==0) toggleSpong=1; else toggleSpong=0; delay(100); } } } void drawEye(int mode, float x, float y, float ox, float oy) { if (mode==0) { noStroke(); smooth(); fill(0,0,0,200); ellipse(x+ox,y+oy,8,15); fill(255,255,255,200); //smooth(); ellipse(x-6,y-6,4,5); //noSmooth(); } if (mode==1) { noStroke(); smooth(); fill(0,0,0); ellipse(x,y,42,42); fill(255,255,255); ellipse(x,y,40,40); noStroke(); fill(0,0,0,200); ellipse(x+ox,y+oy,10,15); fill(255,255,255,200); ellipse(x-7,y-7,6,6); } }