diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/media9/files/malte.js')
-rw-r--r-- | Master/texmf-dist/doc/latex/media9/files/malte.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/media9/files/malte.js b/Master/texmf-dist/doc/latex/media9/files/malte.js new file mode 100644 index 00000000000..4d019e43a62 --- /dev/null +++ b/Master/texmf-dist/doc/latex/media9/files/malte.js @@ -0,0 +1,42 @@ +crank=this.scene.nodes.getByName("manivelle-1-1"); +cross=this.scene.nodes.getByName("croix-1-1"); + +function cntrClockWise(){dir=1; speed=lastspeed;} +function pause(){if(speed)lastspeed=speed; speed=0;} +function clockWise(){dir=-1; speed=lastspeed;} +function scaleSpeed(s){lastspeed*=s; if(speed) speed=lastspeed;} +function origSpeed(){lastspeed=1; if(speed) speed=lastspeed;} + +Ocrank=new Vector3(-0.025, 0, 0); +Ocross=new Vector3(0.025, 0, 0); + +axeZ=new Vector3(0,0,1); +mx4x4=new Matrix4x4(); + +var omega0=Math.PI; // init. angular frequency (half turn per second) +var dir=1; // init. direction +var speed=0; // speed multiplier +var lastspeed=1; +var alpha=0; + +timeEvHnd=new TimeEventHandler(); +timeEvHnd.onEvent=function(event) { + var dalpha=dir*speed*omega0*event.deltaTime; + if (dalpha!=0){ + mx4x4.setIdentity(); + mx4x4.rotateAboutLineInPlace(alpha,Ocrank,axeZ); + crank.transform.set(mx4x4); + with (Math){ + if (alpha<3*PI/2) beta=0; + else beta=-atan(sin(alpha+PI/4)/(sqrt(2)-cos(alpha+PI/4)))+PI/4; + } + mx4x4.setIdentity(); + mx4x4.rotateAboutLineInPlace(beta,Ocross,axeZ); + cross.transform.set(mx4x4); + alpha+=dalpha+2*Math.PI; + alpha%=2*Math.PI; + scene.update(); + } +} + +runtime.addEventHandler(timeEvHnd); |