var jwindow = new JitterObject("jit.window", "sfighter");    jwindow.rect=[recta,rectb,rectc,rectd]; // window positionvar jrender = new JitterObject("jit.gl.render", "sfighter");    jrender.erase_color = [0,0,0,1]; //background colorvar colorr=1; var colorg=1; var colorb=1; var colora=0.3;//var xpos=0.9;//var ypos=0.2;//var zpos=0.;var counter = 0;var texts = " "var Ntext = 50; // numbers of text objectvar width=jrender.screentoworld[0];var height=jrender.screentoworld[1];//window frame...need to be improved///////////////////////////////////////////var top=0.75;var right=1.0;var bottom=-0.8;var left=-1.0;//texts volicity////////////////////////////////////////////////////////////////var vx = new Array();var vy = new Array();for (var i=0 ; i< Ntext; i++){    vx[i] = 0.01*Math.random();    vy[i] = 0.01*Math.random();    }/////draw mult points function///////////////////////////////////////////////////var xpos = new Array();var ypos = new Array();var jmatrix = new JitterMatrix();function jit_matrix(name){    jmatrix.name = name;    jmatrix.dim = [jmatrix.dim[0],1]    for(var i=0 ; i<jmatrix.dim[0] ;i++){       for(var j=0 ; j<jmatrix.dim[1] ;j++){       //drawpoint        xpos[i] = (jmatrix.getcell(i,j)[0]/320)*5-1;        ypos[i] = (jmatrix.getcell(i,j)[1]/160)*5-1;        jpoint.point(xpos[i],ypos[i],0.);        //post(jmatrix.getcell(i,j)[0]);        //post(jmatrix.getcell(i,j)[1]);        //post(xpos[i],xpos[i])                       }    }}//init textsobjs////////////////////////////////////////////////////////////////var jtext2ds = new Array(Ntext);for (var i=0 ; i< Ntext; i++){    jtext2ds[i] = new JitterObject("jit.gl.text2d", "sfighter");    jtext2ds[i].text(texts);    jtext2ds[i].size(16);    jtext2ds[i].align=1;    jtext2ds[i].position = [Math.random(),Math.random()];}//init center obj/*var jtext2d = new JitterObject("jit.gl.text2d","sfighter");    jtext2d.text("Init");    jtext2d.size(60);    jtext2d.align = 1;    jtext2d.position = [xpos,ypos,zpos];*///init sketchobject/////////////////////////////////////////////////////////////var jpoint = new JitterObject("jit.gl.sketch", "sfighter");    jpoint.point(0,0,0);    jpoint.depth_enable = 1;    jpoint.smooth_shading = 1;    jpoint.lighting_enable = 1;var pointsize = 2;var jhandle = new JitterObject("jit.gl.handle", "sfighter");    jhandle.inherit_transform = 1;   function bang(){   //jhandle.rotatexyz = [handx,handy,handz];   jpoint.point_size = pointsize;   //drawtext();   //textmove()      //jtext2ds[0].position =[Math.random()*0.2,0,0];      for(var i=0 ; i<Ntext; i++){   jtext2ds[i].position = [jtext2ds[i].position[0]+vx[i],jtext2ds[i].position[1]+vy[i]];      //find boundry//////////////////////////////////////////////////////////////   if(jtext2ds[i].position[0]>right){      jtext2ds[i].position[0]=right;      vx[i]*=-1;   }else if(jtext2ds[i].position[0]<left){      jtext2ds[i].position[0]=left;      vx[i]*=-1;   }   if(jtext2ds[i].position[1]>top){      jtext2ds[i].position[1]=top;      vy[i]*=-1;   }else if(jtext2ds[i].position[1]<bottom){      jtext2ds[i].position[1]=bottom;      vy[i]*=-1;   }      //Collision motion///////////////////////////////////////////////////////////   for(var j=0; j<jmatrix.dim[0] ;j++){       var dx = jtext2ds[i].position[0] - xpos[j];       var dy = jtext2ds[i].position[1] - ypos[j];       var dist = Math.sqrt(dx*dx+dy*dy);      //Collision distance       var minDist = 0.5;      //Collision effect       if(dist < minDist){          var angle = Math.atan2(dy,dx);          var targetX = xpos[j] + Math.cos(angle)*minDist;          var targetY = ypos[j] + Math.sin(angle)*minDist;          vx[i] += (targetX-jtext2ds[i].position[0])*.01;          vy[i] += (targetY-jtext2ds[i].position[1])*.01;          //jtext2ds[i].text(" ");          jtext2ds[i].color=[Math.random(),0,Math.random(),1.];          jtext2ds[i].size(Math.ceil(60*Math.random()));          post(xpos[j],ypos[j]);          }     }            }     jrender.erase();     jrender.rotate = jhandle.rotate;   jrender.position = jhandle.position;   jhandle.auto_rotate = 1;   jrender.drawswap();   jpoint.reset();   }function collide(){  /*for(var i=0 ; i< Ntext; i++)  {     var disx=jtext2ds[i].position[0]  }*/ }//once add a new text create a new text objectfunction settext(t){   //texts = t;    if(counter<Ntext){    jtext2ds[counter].text(t);    jtext2ds[counter].color=[colorr,colorg,colorb,colora];    counter++;    }else{    counter=0;    jtext2ds[counter].text(t);    jtext2ds[counter].color=[colorr,colorg,colorb,colora];    }}function drawtext(){   for (var i=0; i<Ntext; i++){   jtext2ds[i].position = [xpos+(i/10), ypos+(i/10), zpos];   //jtext2ds[i].position = [-1, 0.75, zpos];   //jtext2ds[i].position = [ 0.5*Math.sin(i), 0.5*Math.cos(i)];      }   /*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)   jtext2ds[u*Nd+v].position = [xx/2, yy/2];      }   }*/  }function setcolor(r,g,b){   colorr=r;   colorg=g;   colorb=b;   colora=0.3}/*function setcolor2(r,g,b){   colorr=r;   colorg=g;   colorb=b;}*/function sethand(x,y,z){   handx=x;   handy=y;   handz=z;}function setpos(x,y){   xpos =x;   ypos =y;   //zpos=z;}function windowrect(a,b,c,d){	recta=a;	rectb=b;	rectc=c;	rectd=d;	}