Skip to content

Instantly share code, notes, and snippets.

@lovasoa
Created January 10, 2018 20:13
Show Gist options
  • Save lovasoa/774101d88b52fd44acc8d2b4c8d33add to your computer and use it in GitHub Desktop.
Save lovasoa/774101d88b52fd44acc8d2b4c8d33add to your computer and use it in GitHub Desktop.
PVector centerOrb, centerPup, speed;
// Durée autour du comportement en veille
int initial_time = 0;
int inactivity = 1000;
float rotation_inactivity = 0.003;
float last_active_angle = 0;
// Caractérisitques de l'oeil
int rOrb = 50;
int deltaCenter_max = 20;
int rPup = 30;
void setup () {
size (800, 450);
background (255);
centerOrb = new PVector(width/2, height/2);
//vitesse du mouvement de l'oeil
speed = new PVector(2,2);
}
void draw () {
background (255);
// Mouvement de l'orbite (Redéfinition de sa position)
if (centerOrb.x >= width - rOrb || centerOrb.x <= rOrb ) speed.x = -speed.x;
if (centerOrb.y >= height - rOrb || centerOrb.y <= rOrb ) speed.y = -speed.y;
centerOrb.add(speed);
// Construction de l'orbite
ellipse(centerOrb.x, centerOrb.y, 2*rOrb, 2*rOrb);
// Placement de la pupille
if (millis() - initial_time > inactivity) {
float angle = last_active_angle + (millis()-initial_time-inactivity)*rotation_inactivity;
centerPup = PVector.fromAngle(angle).mult(deltaCenter_max);
} else {
// Vecteur entre la souris et le centre de la pupille
centerPup = new PVector(mouseX - centerOrb.x, mouseY - centerOrb.y).limit(deltaCenter_max);
last_active_angle = centerPup.heading();
}
// Translation de l'origine sur le centre le l'orbite
translate(centerOrb.x, centerOrb.y);
ellipse (centerPup.x, centerPup.y, rPup, rPup);
}
void mouseMoved() {
initial_time = millis();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment