Files
processing4/java/examples/OpenGL/Transform/Bird/Bird.pde
2012-07-20 20:24:58 +00:00

64 lines
1.1 KiB
Plaintext
Executable File

/**
* Simple 3D Bird
* by Ira Greenberg.
*
* Using a box and 2 rects to simulate a flying bird.
* Trig functions handle the flapping and sinuous movement.
*/
float ang = 0, ang2 = 0, ang3 = 0, ang4 = 0;
float px = 0, py = 0, pz = 0;
float flapSpeed = 0.2;
void setup(){
size(640, 360, P3D);
noStroke();
}
void draw(){
background(0);
lights();
// Flight
px = sin(radians(ang3)) * 170;
py = cos(radians(ang3)) * 300;
pz = sin(radians(ang4)) * 500;
translate(width/2 + px, height/2 + py, -700+pz);
rotateX(sin(radians(ang2)) * 120);
rotateY(sin(radians(ang2)) * 50);
rotateZ(sin(radians(ang2)) * 65);
// Body
fill(153);
box(20, 100, 20);
// Left wing
fill(204);
pushMatrix();
rotateY(sin(radians(ang)) * -20);
rect(-75, -50, 75, 100);
popMatrix();
// Right wing
pushMatrix();
rotateY(sin(radians(ang)) * 20);
rect(0, -50, 75, 100);
popMatrix();
// Wing flap
ang += flapSpeed;
if (ang > 3) {
flapSpeed *= -1;
}
if (ang < -3) {
flapSpeed *= -1;
}
// Increment angles
ang2 += 0.01;
ang3 += 2.0;
ang4 += 0.75;
}