initialize


  
      url "javascript:
          function initialize() 
          {
                  startTime.length = nWaves;
                  epiZentrum.length = nWaves;
          //        for (var i=0; i<nWaves; i++)	
  	//		tropfenGroup.children[i]  = tropfen;
  
  		nurb.uDimension = patchSize.x;
  		nurb.vDimension = patchSize.y;
  		var cp = new MFVec3f();
  
  		var nv=nurb.vDimension;
  		var nu=nurb.uDimension;
  
  		cp.length = nurb.uDimension*nurb.vDimension;
  
  
  		var u;
  		var v;
  		for (v = 0; v//Browser.print(v*nurb.uDimension+u);
  				cp[v*nv+u] = new SFVec3f(u,v,0);
  		} 
  		}
  		nurb.set_controlPoint = cp;
  		
  		var weight = new MFFloat();
  		weight.length = nurb.uDimension*nurb.vDimension;
  		for (v = 0; v< nurb.uDimension*nurb.vDimension; v++) {
  			weight[v] = 1;
  		}
  		nurb.set_weight = weight;
  
  
  
  		var uknot = new MFFloat();
  		var vknot = new MFFloat();
  		var deltaU;
  		var deltaV;
  		deltaU = 1/(nurb.uDimension + nurb.uOrder);
  		deltaV = 1/(nurb.vDimension + nurb.vOrder);
  			//Browser.print('deltaV');
  			//Browser.print(deltaV);
  			//Browser.print('deltaU');
  			//Browser.print(deltaU);
  
  		var uLength;
  		var vLength;
  		uLength = nurb.uDimension + nurb.uOrder;
  		vLength = nurb.vDimension + nurb.vOrder;
  			//Browser.print('uLength');	Browser.print(uLength);
  			//Browser.print('vLength');	Browser.print(vLength);
  		uknot.length = uLength;
  		vknot.length = vLength;
  
  		for (v = 0; v//Browser.print(vknot[v]);
  		}
  		for (u = 0; u//Browser.print(uknot[u]);
  		}
  		nurb.set_vKnot = vknot;
  		nurb.set_uKnot = uknot;
  
  		if (1) {
  			startTime[i] = Browser.getTime();;
  		
  			epiZentrum[i].x = nurb.uDimension * 0.5;
  			epiZentrum[i].y = nurb.vDimension * 0.5;
  
  			epiZentrum[i].z = 0.5;
  	
  		}
  	}
  
  
  
  
      function setStartTime(value) {
  		startTime[i] = value + sphereAnimationTime;
  		epiZentrum[i].x = tmpEpiZentrum.x;
  		epiZentrum[i].y = tmpEpiZentrum.y;
  		epiZentrum[i].z = 2;
  		i++;
  		i %= nWaves;
  		//Browser.print(value);
  	}
  
  
  	function setRandomWave(value) {
  		var nv=nurb.vDimension;
  		var nu=nurb.uDimension;
  		var nw=nWaves;
  
  		startTime[i] = value;
  		epiZentrum[i].x = 2+Math.random()*(nu-4);
  		epiZentrum[i].y = 2+Math.random()*(nv-4);
  		epiZentrum[i].z = 0.15+1.5*Math.random();
  
  		i++;
  		i %= nWaves;
  	}
  
  
  
      function setTime(value) 
  	{
  		var ii;
  		var u;
  		var v;
  		var l;
  		var a;
  		var t = value;
  		var omega = -1*Math.PI;
   
  				
  		for (ii=0; ii//Browser.print(epiZentrum[ii].z );
  			else {
  				//move the tropfen to nirvana
  				tropfenGroup.children[ii].translation.z = -10;
  
  				if (deltaT > 11) {
                                          //print('NewWave'+value);
                                          setRandomWave(value);
                                  }
                          }
                  } 
  
                  var nv=nurb.vDimension;
                  var nu=nurb.uDimension;
                  var nw=nWaves;
  
                  //z = exp(-(t+l)) * sin(omega * t + l)
                  for (v = 1; v<nv; v++) {
  			var voffset=v*nu;
  			for (u = 1; u// fun, normally 0
  
  				for (ii=0; ii//one wave per 4 control points, more does not make sense because of the interpolation
  					//between the cvs
  
  					// l = distance from epizentrum 
  					//l = Math.PI/2 * Math.sqrt( (v-nurb.vDimension/2)*(v-nurb.vDimension/2) + (u-nurb.uDimension/2)*(u-nurb.uDimension/2) );
  				
  					//l = Math.PI*2 * Math.sqrt( Math.sqr(v-epiZentrum.y) +  Math.sqr(u-epiZentrum.x) );
  					deltaT =  (value - startTime[ii]);
  					if (deltaT > 0)
                                          {
                                                  l = Math.PI/2 * Math.sqrt((v-epiZentrum[ii].y)*(v-epiZentrum[ii].y) +  (u-epiZentrum[ii].x)*(u-epiZentrum[ii].x) );
                                          //        Browser.print(l);
                                                  a = -3 * Math.exp( -1 * ( (deltaT) + l/nv) );
                                                  //a = 1;
                                                  z += epiZentrum[ii].z * a * Math.cos(omega* deltaT + l);        
  
                                                  //  wave can't travel so fast
                                                  // limit on deltaT / l
                                          }        
                                  } 
                                  nurb.controlPoint[voffset+u].z = z;
                          } 
                  }
  
          }
          function setEpi(value)
          {
                  tmpEpiZentrum.x = value.x;
                  tmpEpiZentrum.y = value.y;
                  //Browser.print(value);
          }
  
      "        
  }