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