Eye Tracking with atan2()

Here's an example from processing.org that uses atan2() to point an object at the cursor. See if you can change the color of your eye and scale with the Eye constructor.

Eye e1, e2, e3, e4, e5;

void setup()
{
size(200, 200);
smooth();
noStroke();
e1 = new Eye( 50, 16, 80);
e2 = new Eye( 64, 85, 40);
e3 = new Eye( 90, 200, 120);
e4 = new Eye(150, 44, 40);
e5 = new Eye(175, 120, 80);
}

void draw()
{
background(102);

e1.update(mouseX, mouseY);
e2.update(mouseX, mouseY);
e3.update(mouseX, mouseY);
e4.update(mouseX, mouseY);
e5.update(mouseX, mouseY);

e1.display();
e2.display();
e3.display();
e4.display();
e5.display();
}

class Eye
{
int ex, ey;
int size;
float angle = 0.0;

Eye(int x, int y, int s) {
ex = x;
ey = y;
size = s;
}

void update(int mx, int my) {
angle = atan2(my-ey, mx-ex);
}

void display() {
pushMatrix();
translate(ex, ey);
fill(255);
ellipse(0, 0, size, size);
rotate(angle);
fill(153);
ellipse(size/4, 0, size/2, size/2);
popMatrix();
}
}


Notice that there are 5 'Eye' variables: e1, e2, e3, e4, e5, which are all instanced from the Eye object. We haven't yet learned how to build our own objects, so don't worry about the syntax for now, just see what you can create by experimenting.