move
function doMove() {
if(count <=50 && !paused) count+= 0.5;
a = degToRad(angle);
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]];
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]];
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]];
for(i=1;i<=count;i++) {
if(!paused) {
points[i].age++;
points[i].z += v * Math.cos(degToRad(points[i].alpha)) * Math.sin(degToRad(points[i].theta));
points[i].x += v * Math.cos(degToRad(points[i].alpha)) * Math.cos(degToRad(points[i].theta));
points[i].y += -0.25 * points[i].w * v * Math.sin(degToRad(points[i].alpha));
points[i].w += points[i].decay;
}
mat = [points[i].x,points[i].y,points[i].z,1];
mat = matrixMultiply(mat,rotY);
plotPoint(points[i].name, new Point(mat[0],mat[1],mat[2]),points[i].age);
if(points[i].y > 0) {
points[i] = new Point(0,0,0);
points[i].name = "divPoint" + i;
points[i].alpha = 250; //Math.round(Math.random()*30) + 255;
points[i].theta = Math.round(Math.random()*360);
points[i].w = -10;
points[i].age = 0;
points[i].decay = 0.5; //(Math.round(Math.random()*50) + 75) / 200;
}
}
window.status = angle;
setTimeout("doMove()",20);
}