topical media & game development

talk show tell print

#js-fire.cfg / cfg



  

global(s)


  <script language="javascript">
    var shadow = false;
    var func = 'window.frames["bufferFrame"].doMove();';
    function callLoader(){
      if(parent.loadSourceFinish)
        setTimeout("parent.loadSourceFinish(" + shadow + ",'" + func + "')",500);
    }
  </script>
  
  
  

init(s)


  
  
  

3D(s)


  
  <script>
  
   //Makes a 3D coordinate
   //===================================================================
   function Point(x,y,z) {
    this.x = x;
    this.y = y;
    this.z = z;   //if omit z value, just make point 2D
    return this;
   }
   
   //Makes a 3D vector A(x,y,z) -> B(x,y,z)
   //===================================================================
   function Vector(a,b,c) {
    this.a = a;    //Point
    this.b = b;
    this.c = c;
    return this;
   }
   
  
   //The points are projected onto the plane defined by the viewport vector
   var viewport = new Vector(new Point(-100,-100,-100),new Point(100,10,-100), new Point(50,50));
   //var viewport = new Vector(new Point(-200,-200,-200),new Point(200,20,-200), new Point(100,100));
  
   //The camera's position is used for calculating focal length and where
   //the points should be plotted on the viewport
   var camera = new Point(0,-90,-200);
   //var camera = new Point(0,-190,-200);
  
   
   //Set new camera position and redraw scene
   //===================================================================
   function setCamera(x,y,z) {
    camera.x = x;
    camera.y = y;
    camera.z = z;
    init(); 
   }
  
   function setViewport(x,y) {
    viewport.a.x = x;
    viewport.a.y = x;
    viewport.b.x = y;
    viewport.b.y = y;
    //document.getElementById("back").style.width = y-x;
    //document.getElementById("back").style.height = y-x;
   }
  
  

plot(s)


   //Plots a DIV at the correct position and resizes it
   //===================================================================
   function plotPoint(name, pos,age) {
    //Create objects for DIV
    obj = document.getElementById(name);
    css = document.getElementById(name).style;
    
    f = viewport.a.z - camera.z;  //Focal length
  
    //From ratios of a triangle get position of point relative to camera
    cy = (pos.y-camera.y) * f / (pos.z-viewport.a.z);  
    cx = (pos.x-camera.x) * f / (pos.z-viewport.a.z);
  
    //Position of point relative to viewport
    py = parseInt(camera.y + cy - viewport.a.y); 
    px = parseInt(camera.x + cx - viewport.a.x);
  
    if(pos.z > viewport.a.z && px > 0 && py > 0 && py < viewport.b.y - viewport.a.y && px < viewport.b.x - viewport.a.x) { 
     //Move object to correct position
     //alert("Moving " + name + " to (" + px + "," + py + ")");
     css.visibility = "";
     d = (150 - pos.z);
     css.backgroundColor = "rgb(" + (250-age) + "," + (200-age*2) + "," + (100-age) + ")";
     d /= 10000 / (viewport.b.x - viewport.a.x); //scale pixel to \%age of viepwort
     if(d<1) d=1;
     css.width = 3*d;
     css.height = 4*d;
     css.left = 200 + 2 * ( px - d/2 + viewport.c.x);
     css.top = -100 + 2 * ( 2 * py - d/2 + viewport.c.y);
     css.zIndex = (100 - pos.z) + 1000;
    } else {
     css.visibility = "hidden";  //on this side of the viewport so hide it
    }
   }
  
  

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

turn(s)


  
   var doTurn = false;
   function turn(amount) {
    xOffset += amount;
    if(xOffset>75) xOffset = 75;
    if(xOffset<-75) xOffset = -75;
    if(doTurn) setTimeout("turn(" + amount + ")",10);
   }
  
  

wind(s)


  
   var doWind = false;
   function wind(amount) {
    xWind += amount/2;
    if(xWind >5.5) xWind = 5.5;
    if(xWind <-5.5) xWind = -5.5;
    if(doWind) setTimeout("wind(" + amount + ")",10);
   }
  
   var paused = false;
   function pause() { paused = !paused }
  
   var pi = 3.14159265358979;  //pi to 15sf
   function degToRad(x) { return ( x/(360/(2*pi)) ); }
   function radToDeg(x) { return ( x*(360/(2*pi)) ); }
  
  

matrix


  
   function matrixMultiply(A,B) {
    var retVal = [0,0,0];
    for(var m=0;m<4;m++) {
     for(var n=0;n<4;n++)
      retVal[m] += A[n] * B[m][n]
    }
    return retVal;
   }
   
  </script>
  
  

point(s)


  
  <div id="divPoint1" style="visibility: hidden; position: absolute; top: 135.487px; left: 148.487px; width: 3.02671px; height: 3.02671px; background-color: rgb(208, 116, 58); font-size: 1px;"></div>
  <div id="divPoint2" style="visibility: hidden; position: absolute; top: 133.513px; left: 148.513px; width: 2.97304px; height: 2.97304px; background-color: rgb(211, 122, 61); font-size: 1px; z-index: 1100;"></div>
  <div id="divPoint3" style="visibility: hidden; position: absolute; top: 136.51px; left: 148.51px; width: 2.98023px; height: 2.98023px; background-color: rgb(217, 134, 67); font-size: 1px; z-index: 1100;"></div>
  <div id="divPoint4" style="visibility: hidden; position: absolute; top: 139.499px; left: 147.499px; width: 3.00281px; height: 3.00281px; background-color: rgb(223, 146, 73); font-size: 1px;"></div>
  <div id="divPoint5" style="visibility: hidden; position: absolute; top: 140.503px; left: 147.503px; width: 2.99396px; height: 2.99396px; background-color: rgb(229, 158, 79); font-size: 1px; z-index: 1100;"></div>
  <div id="divPoint6" style="visibility: hidden; position: absolute; top: 142.501px; left: 148.501px; width: 2.9981px; height: 2.9981px; background-color: rgb(235, 170, 85); font-size: 1px;"></div>
  <div id="divPoint7" style="visibility: hidden; position: absolute; top: 145.5px; left: 148.5px; width: 3.00098px; height: 3.00098px; background-color: rgb(241, 182, 91); font-size: 1px; z-index: 1100;"></div>
  <div id="divPoint8" style="visibility: hidden; position: absolute; top: 147.5px; left: 147.5px; width: 3.00017px; height: 3.00017px; background-color: rgb(247, 194, 97); font-size: 1px;"></div>
  <div id="divPoint9" style="visibility: hidden; position: absolute; top: 83.4596px; left: 113.46px; width: 3.08084px; height: 3.08084px; background-color: rgb(52, 0, 0); font-size: 1px; z-index: 1100;"></div>
  <div id="divPoint10" style="visibility: hidden; position: absolute; top: 77.809px; left: 144.809px; width: 2.38207px; height: 2.38207px; background-color: rgb(58, 0, 0); font-size: 1px; z-index: 1100;"></div>
  <div id="divPoint11" style="visibility: hidden; position: absolute; top: 93.2823px; left: 122.282px; width: 3.43541px; height: 3.43541px; background-color: rgb(64, 0, 0); font-size: 1px; z-index: 1100;"></div>
  <div id="divPoint12" style="visibility: hidden; position: absolute; top: 99.2282px; left: 142.228px; width: 3.54366px; height: 3.54366px; background-color: rgb(70, 0, 0); font-size: 1px;"></div>
  <div id="divPoint13" style="visibility: hidden; position: absolute; top: 100.247px; left: 153.247px; width: 3.5055px; height: 3.5055px; background-color: rgb(76, 0, 0); font-size: 1px;"></div>
  <div id="divPoint14" style="visibility: hidden; position: absolute; top: 102.269px; left: 139.269px; width: 3.46249px; height: 3.46249px; background-color: rgb(82, 0, 0); font-size: 1px; z-index: 1100;"></div>
  <div id="divPoint15" style="visibility: hidden; position: absolute; top: 103.293px; left: 137.293px; width: 3.41306px; height: 3.41306px; background-color: rgb(88, 0, 0); font-size: 1px;"></div>
  <div id="divPoint16" style="visibility: hidden; position: absolute; top: 96.4784px; left: 126.478px; width: 3.04321px; height: 3.04321px; background-color: rgb(94, 0, 0); font-size: 1px;"></div>
  <div id="divPoint17" style="visibility: hidden; position: absolute; top: 95.5559px; left: 130.556px; width: 2.88817px; height: 2.88817px; background-color: rgb(100, 0, 0); font-size: 1px; z-index: 1100;"></div>
  <div id="divPoint18" style="visibility: hidden; position: absolute; top: 94.6558px; left: 140.656px; width: 2.6885px; height: 2.6885px; background-color: rgb(106, 0, 0); font-size: 1px;"></div>
  <div id="divPoint19" style="visibility: hidden; position: absolute; top: 107.385px; left: 135.385px; width: 3.22931px; height: 3.22931px; background-color: rgb(112, 0, 0); font-size: 1px;"></div>
  <div id="divPoint20" style="visibility: hidden; position: absolute; top: 100.583px; left: 136.583px; width: 2.83392px; height: 2.83392px; background-color: rgb(118, 0, 0); font-size: 1px;"></div>
  <div id="divPoint21" style="visibility: hidden; position: absolute; top: 113.37px; left: 143.37px; width: 3.26041px; height: 3.26041px; background-color: rgb(124, 0, 0); font-size: 1px; z-index: 1100;"></div>
  <div id="divPoint22" style="visibility: hidden; position: absolute; top: 102.622px; left: 146.622px; width: 2.75583px; height: 2.75583px; background-color: rgb(130, 0, 0); font-size: 1px;"></div>
  <div id="divPoint23" style="visibility: hidden; position: absolute; top: 110.5px; left: 136.5px; width: 3px; height: 3px; background-color: rgb(136, 0, 0); font-size: 1px; z-index: 1100;"></div>
  <div id="divPoint24" style="visibility: hidden; position: absolute; top: 107.598px; left: 146.598px; width: 2.80324px; height: 2.80324px; background-color: rgb(142, 0, 0); font-size: 1px;"></div>
  <div id="divPoint25" style="visibility: hidden; position: absolute; top: 109.587px; left: 146.587px; width: 2.8254px; height: 2.8254px; background-color: rgb(148, 0, 0); font-size: 1px;"></div>
  <div id="divPoint26" style="visibility: hidden; position: absolute; top: 111.578px; left: 146.578px; width: 2.84401px; height: 2.84401px; background-color: rgb(154, 8, 4); font-size: 1px;"></div>
  <div id="divPoint27" style="visibility: hidden; position: absolute; top: 118.493px; left: 141.493px; width: 3.01458px; height: 3.01458px; background-color: rgb(160, 20, 10); font-size: 1px;"></div>
  <div id="divPoint28" style="visibility: hidden; position: absolute; top: 120.486px; left: 141.486px; width: 3.0274px; height: 3.0274px; background-color: rgb(166, 32, 16); font-size: 1px; z-index: 1100;"></div>
  <div id="divPoint29" style="visibility: hidden; position: absolute; top: 120.531px; left: 143.531px; width: 2.93811px; height: 2.93811px; background-color: rgb(172, 44, 22); font-size: 1px;"></div>
  <div id="divPoint30" style="visibility: hidden; position: absolute; top: 123.51px; left: 143.51px; width: 2.97975px; height: 2.97975px; background-color: rgb(178, 56, 28); font-size: 1px;"></div>
  
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-2780434-1"; urchinTracker(); </script>