/* Computación Gráfica Master en Digial Medial Design, Elisava. Barcelona, 2009 José Vittone Ejercicio: Pirata espía */ //Colores color fondo = color(244, 244, 244); color grisOscuro = color(175, 175, 177); color rojo = color(189, 33, 33); float posX; float posY; float friccion = 8; //SETUP void setup(){ size(500,500); frameRate(30); smooth(); noStroke(); } //DRAW void draw(){ background(fondo); dibujoCalavera(); dibujaOjo((width/2)-24,(height/2)-10); dibujaOjo((width/2)+24,(height/2)-10); } // Calavera void dibujoCalavera() { pushMatrix(); // dibujo cabeza translate(width/2,height/2-20); fill(grisOscuro); ellipse(0,0,112,112); translate(-30, 34); beginShape(); vertex(0, 0); vertex(0, 30); bezierVertex(0, 30, 0, 40, 10, 40); vertex(10,40); vertex(52, 40); bezierVertex(52, 40, 62, 40, 62, 30); vertex(62, 0); endShape(CLOSE); popMatrix(); // dibujo huesos pushMatrix(); translate((width/2)-70,(height/2)+45); rotate(radians(24)); huesos(); translate(30, 54); rotate(radians(-48)); huesos(); popMatrix(); } // Huesos void huesos() { int sizeX = 150; int sizeY = 15; int tam = 22; int dif = 2; fill(grisOscuro); rect(0, 0, sizeX, sizeY); // punta izq ellipse(0,-dif,tam,tam); ellipse(0,sizeY+dif,tam,tam); // punta der ellipse(sizeX,-dif,tam,tam); ellipse(sizeX,sizeY+dif,tam,tam); } // Ojo void dibujaOjo (int x, int y){ int diametro = 32; posX = posX+(mouseX-posX)/friccion; posY = posY+(mouseY-posY)/friccion; float ang = atan2 (posY-y, posX-x); float distancia = dist(posX, posY, x, y); pushMatrix(); translate(x, y); rotate(ang); // fill(fondo); ellipse (0,0,diametro,diametro); // fill (grisOscuro); int px; float tamP; if(distancia < 8) { px = floor(distancia); tamP = diametro/3.5; fill(rojo); } else { px = 8; tamP = diametro/4.5; fill(grisOscuro); } println(px); ellipse (px,0,tamP,tamP); popMatrix (); }