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.*; import netscape.javascript.*; import javax.comm.*; import javax.sound.midi.*; import javax.sound.midi.spi.*; import javax.sound.sampled.*; import javax.sound.sampled.spi.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.sax.*; import javax.xml.transform.stream.*; import org.xml.sax.*; import org.xml.sax.ext.*; import org.xml.sax.helpers.*; public class noisebox extends BApplet {
float noiseScale=0.02f; 
int res = 150, inc;
float[][] points = new float[res][res];

void setup(){
background(255,255,255);
colorMode(HSB, 255);
size(640,480);
  for(int i = 0; i < res; i++){ //populate the empty array with a base value
    for(int j = 0; j < res; j++){
      points[i][j] = 250;
    }
  }
}

void loop() { 
  inc++;
  background(50); 
  translate(width/2,height/4); //position the center of rotation
  rotateX(-.6f);
  rotateY((float)(inc/120.0f)); //rotate perspective
 
  scale(3);
  //rot+=1;
  for(int i = 0; i < res-1; i++){ //shift every row down 
    for(int j = 0; j < res; j++){
      float temp = points[res-i-2][j];
      points[res-i-1][j] = temp;
    }
  }
  for(int i=0; i<res; i++) { //define new row
    float noiseVal = noise(i*noiseScale, inc*noiseScale); 
      points[0][i] = noiseVal;
  }
  for(int i = 0; i < res; i++){ //draw points
    for(int j = 0; j < res; j++){
       stroke(points[i][j]*305-50,255,250); 
       point(i-(res/2),points[i][j]*80,j-(res/2));
    }
  }
  //saveFrame("noise"+inc+".tga");
}
}