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);
}