import java.applet.*; import java.awt.*; import java.awt.image.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.*; import java.util.*; import java.util.zip.*; public class planes extends BApplet { Plane[] planes = new Plane[100]; void setup() { size(100,500); framerate(40); lights(); noStroke(); background(0); rectMode(CENTER_DIAMETER); initPlanes(); } void loop() { translate(width/2, height/2); //rotateX(PI/2.5); rotateX(PI/4); for (int i = 0; i < planes.length; i++) { planes[i].draw(); } } void mousePressed() { initPlanes(); } void initPlanes() { int colors[] = new int[7]; int c = 0; colors[c++] = color(72,140,44); colors[c++] = color(168,212,156); colors[c++] = color(159,214,238); colors[c++] = color(204,0,51); colors[c++] = color(255,255,255); colors[c++] = color(255,255,255); colors[c++] = color(255,255,255); for (int i = 0; i < planes.length; i++) { planes[i] = new Plane(random(100), random(30), random(300)-150, colors[(int)(random(colors.length))]); } } class Plane { public Plane(float x, float y, float z, int c) { myX = x; myY = y; myZ = z; myAngle = initAngle(); myAngularVel = initVel(); myColor = c; myHeight = initHeight(); myWidth = myHeight; } private float initAngle() { float val = random(100); val -= 50.0f; return val/50; } private float initVel() { float val = random(100); val -= 50.0f; return val/400; } private float initHeight() { return random(200); } public void draw() { push(); rotate(myAngle); translate(myX, myY, myZ); fill(myColor); triangle(0,0, 0,myHeight, myWidth,0); if (abs(myAngularVel) > .001f) { updateAngle(); } pop(); } private void updateAngle() { myAngle += myAngularVel; myAngularVel = myAngularVel / 1.01f; if (myAngle > (PI*2)) { myAngle = 0; } } private float myX; private float myY; private float myZ; private float myAngle; private float myAngularVel; private int myColor; private float myHeight; private float myWidth; } }