This is the web version of EJS interface
EJS version 4.1
1. Author=Fu-Kwun Hwang - Dept. of Physics, National Taiwan Normal Univ.
2. Abstract=hwang@phy.ntnu.edu.tw
3. CaptureTools=true
4. DataTools=true
5. LanguageTools=true
NameValueTypeDimension
NameValueTypeDimension
NameValueTypeDimension

### Evol Page

 Indep. Var. Increment d cta /dt= omega d omega /dt= -g*Math.sin(cta)/L+cst*cst/(Math.sin(cta)*Math.sin(cta)*Math.tan(cta)) d phi /dt= phidot=cst/(Math.sin(cta)*Math.sin(cta)) Solver RungeKutta Tolerance=0.001

### FixRel Page

x=L*Math.sin(cta)*Math.cos(phi); y=L*Math.sin(cta)*Math.sin(phi); z=topz-L*Math.cos(cta); vx=-L*omega*Math.cos(cta)*Math.cos(phi)-L*Math.sin(cta)*phidot*Math.sin(phi); vy=-L*omega*Math.cos(cta)*Math.sin(phi)+L*Math.sin(cta)*phidot*Math.cos(phi); vz=-L*omega*Math.sin(cta); // setAxis(cta,phi,cta);

### setangle

public void setAxis (double c1,double c2,double c3) { // c2=(180.-c2d)*Math.PI/180.; double cs=Math.cos(c1),sc=Math.sin(c1); double cp=Math.cos(c2),sp=Math.sin(c2); double ct=Math.cos(c3),st=-Math.sin(c3); /* matrix operation cs -sc 0 1 0 0 ct -st 0 sc 0 0 0 cp -sp -st ct 0 0 0 1 0 sp cp 0 0 1 */ axis[0]=cs*ct-st*sc*cp; axis[1]=-cs*st-ct*sc*cp; axis[2]=sc*sp; axis[3]=sc*ct+st*cs*cp; axis[4]=-sc*st+ct*cs*cp; axis[5]=-cs*sp; axis[6]=sp*st; axis[7]=sp*ct; axis[8]=cp; /* sx=sp*st; sy=sp*ct; sz=cp; // unit vector r sx1=lc*sx; sy1=lc*sy; sz1=lc*sz; sx2=h*sx; sy2=h*sy; sz2=h*sz; w1x=wcst*w1*sx; w1y=wcst*w1*sy; w1z=wcst*w1*sz; w3z=wcst*w3; tx1=w1sgn*w1*lc*sy; ty1=w1sgn*w1*lc*sx; tz1=0; */ }
EJSVIEW: Click link to view it's content
 Control variables:(testing)double
 title = "Frame" layout = border visible = true location = "7,84" size = "590,582"
 position = center minimumX = xmin maximumX = xmax minimumY = ymin maximumY = ymax minimumZ = zmin maximumZ = zmax cameraAzimuth = 0.08000000000000003 cameraAltitude = 0.26 cameraFocusX = 0.0 cameraFocusY = 0.0 cameraFocusZ = 0.0 cameraRotation = 0.0 cameraDistanceToScreen = 125.0
 x = 0 y = 0 z = topz sizeX = x sizeY = y sizeZ = z-topz lineWidth = stroke
 inputX = x inputY = y inputZ = z maximumPoints = npt active = _isPlaying() connected = _isPlaying()
 firstDirection = dirx secondDirection = diry x = 0 y = 0 z = z sizeX = xmax*2 sizeY = ymax*2 fillColor = 200,220,208,128
 x = x y = y z = z sizeX = vx sizeY = vy sizeZ = vz lineColor = RED fillColor = RED lineWidth = stroke
 x = x y = y z = z sizeX = size*5 sizeY = size*5 sizeZ = size*5 transformation = "z:"+phi+" & y:-"+cta+" &z:"+phi
 x = 0 y = 0 z = topz sizeX = 0 sizeY = 0 sizeZ = z-topz
 x = 0 y = 0 z = z sizeX = x sizeY = y sizeZ = 0
 x = x y = y z = z sizeX = size sizeY = size sizeZ = size enabledPosition = !circular && _isPaused() dragAction = L=Math.sqrt(x*x+y*y+(z-topz)*(z-topz));
 x = x y = y z = z sizeX = vx sizeY = vy sizeZ = 0 visible = !circular lineColor = RED fillColor = RED
 x = x+vx y = y+vy z = z sizeX = 0 sizeY = 0 sizeZ = vz visible = !circular lineColor = RED fillColor = RED
 position = south layout = HBOX borderType = LOWERED_ETCHED
 variable = T minimum = 0.5 maximum = 20.0 format = "T=0.00s" enabled = !circular dragaction = phidot=2*pi/T; cst=Math.sin(cta)*Math.sin(cta)*phidot;
 variable = circular text = "circular loop" action = if(circular){ phidot=Math.sqrt(g/L/Math.cos(cta)); cst=Math.sin(cta)*Math.sin(cta)*phidot; omega=0; }
 variable = _isPaused imageOn = /org/opensourcephysics/resources/controls/images/play.gif actionOn = _play() imageOff = /org/opensourcephysics/resources/controls/images/pause.gif actionOff = _pause()
 image = /org/opensourcephysics/resources/controls/images/reset.gif action = _reset()