This is the web version of EJS interface
EJS version 4.2.7
  1. CaptureTools=true
  2. DataTools=true
  3. LanguageTools=true
  4. EmersionSupport=true
  5. UseInterpreter=true
  6. AuxiliaryFiles=_data/reset.gif;_data/pause.gif;_data/play.gif;
  7. DetectedFiles=_data/pause.gif;_data/play.gif;_data/reset.gif;
    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))
    SolverRungeKutta AbsoluteTolerance=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="576,512"
    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
    background=DARKGRAY
    x=0
    y=0
    z=topz
    sizeX=x
    sizeY=y
    sizeZ=z-topz
    lineColor=128,255,0
    lineWidth=stroke
    inputX=x
    inputY=y
    inputZ=z
    maximumPoints=npt
    active=_isPlaying()
    connected=_isPlaying()
    lineColor=255,192,0
    lineWidth=1.25
    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=CYAN
    fillColor=CYAN
    lineWidth=stroke
    x=x
    y=y
    z=z
    sizeX=size*5
    sizeY=size*5
    sizeZ=size*5
    transformation="z:"+phi+" & y:-"+cta+" &z:"+phi
    lineColor=MAGENTA
    fillColor=255,128,0,192
    x=0
    y=0
    z=topz
    sizeX=0
    sizeY=0
    sizeZ=z-topz
    lineColor=128,255,0
    x=0
    y=0
    z=z
    sizeX=x
    sizeY=y
    sizeZ=0
    lineColor=128,255,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));
    lineColor=255,192,0
    fillColor=200,220,208
    x=x
    y=y
    z=z
    sizeX=vx
    sizeY=vy
    sizeZ=0
    visible=!circular
    lineColor=128,0,255
    fillColor=128,0,255
    x=x+vx
    y=y+vy
    z=z
    sizeX=0
    sizeY=0
    sizeZ=vz
    visible=!circular
    lineColor=128,0,255
    fillColor=128,0,255
    position=south
    layout=HBOX
    borderType=LOWERED_ETCHED
    background=BLACK
    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;
    foreground=192,255,0
    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; }
    foreground=200,220,208
    variable=_isPaused
    size="90,35"
    imageOn="_data/play.gif"
    actionOn=_play()
    imageOff="_data/pause.gif"
    actionOff=_pause()
    image="_data/reset.gif"
    action=_reset()
    size="90,35"