var jwindow = new JitterObject("jit.window", "sfighter");var jrender = new JitterObject("jit.gl.render", "sfighter");    jrender.erase_color = [0,0,0,1];var jtext3d = new JitterObject("jit.gl.text3d", "sfighter");    jtext3d.blend_enable = 1;    jtext3d.align = 1;    jtext3d.scale = [0.5,0.5,0.5];    jtext3d.color = [0,0,0,1];    jtext3d.depth = 0.1;    jtext3d.lighting_enable = 1;var handx=0;var handy=0;var handz=0;var texts = ["Why", "does", "never", "work", "?", "how", "it", "because", "nothing", "is", "easy"];var Ntext = 144;var jtext3ds = new Array(Ntext);for (var i=0 ; i< Ntext; i++){    jtext3ds[i] = new JitterObject("jit.gl.text3d", "sfighter");    jtext3ds[i].text(texts[Math.round(Math.random()*11)]);    jtext3ds[i].scale = [0.3*Math.random(),0.3*Math.random(),0.3*Math.random()];    jtext3ds[i].blend_enable = 1;    jtext3ds[i].color = [1,1,1,0.7*Math.random()];    jtext3ds[i].depth = 0.1;    jtext3ds[i].poly_mode = [1,0];}var jhandle = new JitterObject("jit.gl.handle", "sfighter");    jhandle.inherit_transform = 1;    function settext(t){texts = t;}function drawtext(){   var xx, yy, zz;   /*for (var i=0; i<Ntext; i++){   jtext3ds[i].position = [ 0.3*Math.sin(i), 0.3*Math.cos(i),0];   }*/   var Nd = (Math.sqrt(Ntext));   for(var u=0; u<Nd; u++){    for(var v=0; v<Nd; v++){    var uu=u/Nd;    var vv=v*3.1416/Nd;   xx = (2 + uu*Math.cos(vv))*Math.sin(2*3.1416*uu)   yy = (2 + uu*Math.cos(vv))*Math.cos(2*3.1416*uu) + 2*uu   zz =  uu*Math.sin(vv)   jtext3ds[u*Nd+v].position = [xx/2, yy/2, zz/2];   }   }   }function sethand(x,y,z){   handx=x;   handy=y;   handz=z;}function bang(){   jhandle.rotatexyz = [handx,handy,handz];   jrender.erase();   jrender.rotate = jhandle.rotate;   jrender.position = jhandle.position;   jhandle.auto_rotate = 1;   drawtext();   jrender.drawswap();}