create(s)


  
   //Create a few objects to represent each point on the corner of the cube (messy!)
   var points = new Array(8);
   for(i=1; i<=40;i++) {
    points[i] = { name: "divPoint" + i,
         x: 0,
        y: 0,
        z: 0,
        r: 0,
        age: 200,
        a: Math.round(Math.random()*360),
        av: 5*(Math.round(Math.random()*2)-1),
        xStart: 0
            }
     //document.write("<div id=" + "divPoint" + i + " style=\"visibility: hidden; position: absolute;\" />");
   }
  
   v = 1;
   count = 1;
   var xOffset = 0;
   var xWind = 0;
   function doMove() {
    if(count <=30 && !paused) count+= 0.5;
    for(i=1;i<=count;i++) {
     a = degToRad(points[i].a);
     rotY = [[Math.cos(a),0,Math.sin(a),0],[0,1,0,0],[-Math.sin(a),0,Math.cos(a),0],[0,0,0,1]];
     rotX = [[1,0,0,0],[0,Math.cos(a),-Math.sin(a),0],[0,Math.sin(a),Math.cos(a),0],[0,0,0,1]];
     rotZ = [[Math.cos(a),-Math.sin(a),0,0],[Math.sin(a),Math.cos(a),0,0],[0,0,1,0],[0,0,0,1]];
      
     if(!paused) {
      points[i].a+=0.5*points[i].av;
      points[i].r+=0.015;
      if(points[i].a>360) points[i].a-=360; 
      points[i].age+=3;
      points[i].x += points[i].r;
      points[i].y -= v;
      points[i].xStart += xWind;
     }
     
     mat = [points[i].x,points[i].y,points[i].z,1];
     mat = matrixMultiply(mat,rotY);
     plotPoint(points[i].name, new Point(mat[0] + points[i].xStart,mat[1],mat[2]),points[i].age);
     if(points[i].age > 200) {
      points[i] = new Point(0,0,0);
      points[i].name = "divPoint" + i;
      points[i].a = Math.round(Math.random()*360);
      points[i].r = 0;
      points[i].age = 0
      points[i].av = 2*(Math.round(Math.random()*2)-1);
      points[i].xStart = xOffset;
     }
    }
    window.status = "Wind = " + Math.round(xWind*100)/100;
    setTimeout("doMove()",10);
   }