<Osejs version="3.3">
<Osejs.Description>
<Osejs.Description.Page>
<Type>HTML_EDITOR</Type>
<Name>Intro Page</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<![CDATA[
<html>
  <head>
    
  </head>
  <body>
    Designed by Fu-Kwun Hwang http://www.phy.ntnu.edu.tw/ntnujava/
  </body>
</html>

]]>

</Content>
</Osejs.Description.Page>
</Osejs.Description>
<Osejs.Model>
<Osejs.Model.FramesPerSecond>20</Osejs.Model.FramesPerSecond>
<Osejs.Model.Autostart>false</Osejs.Model.Autostart>
<Osejs.Model.AdditionalLibraries>
</Osejs.Model.AdditionalLibraries>
<Osejs.Model.ImportStatements>
</Osejs.Model.ImportStatements>
<Osejs.Model.Variables>
<Osejs.Model.Variables.Page>
<Type>VARIABLE_EDITOR</Type>
<Name>coordinate</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Variable>
<Name>range</Name>
<Value><![CDATA[40]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[範圍]]></Comment>
</Variable>
<Variable>
<Name>xmin</Name>
<Value><![CDATA[-range]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[x 極小]]></Comment>
</Variable>
<Variable>
<Name>xmax</Name>
<Value><![CDATA[range]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[x極大]]></Comment>
</Variable>
<Variable>
<Name>ymin</Name>
<Value><![CDATA[-range/2]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[y極小]]></Comment>
</Variable>
<Variable>
<Name>ymax</Name>
<Value><![CDATA[range/2]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[y極大]]></Comment>
</Variable>
<Variable>
<Name>t</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[時間]]></Comment>
</Variable>
<Variable>
<Name>dt</Name>
<Value><![CDATA[0.05]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[時間間距]]></Comment>
</Variable>
<Variable>
<Name>size</Name>
<Value><![CDATA[range/40]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[粒子顯示的大小]]></Comment>
</Variable>
<Variable>
<Name>label</Name>
<Value><![CDATA["play"]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>zero</Name>
<Value><![CDATA[0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>w</Name>
<Value><![CDATA[1.6*range]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>h</Name>
<Value><![CDATA[range/40]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>stroke</Name>
<Value><![CDATA[2.]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>npt</Name>
<Value><![CDATA[1000]]></Value>
<Type>int</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name></Name>
<Value><![CDATA[]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>

</Content>
</Osejs.Model.Variables.Page>
<Osejs.Model.Variables.Page>
<Type>VARIABLE_EDITOR</Type>
<Name>language</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Variable>
<Name>l_play</Name>
<Value><![CDATA["play"]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>l_pause</Name>
<Value><![CDATA["pause"]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>l_reset</Name>
<Value><![CDATA["reset"]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>l_init</Name>
<Value><![CDATA["initialize"]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>l_title</Name>
<Value><![CDATA["y1:red / y2:blue"]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>l_xtitle</Name>
<Value><![CDATA["time (s)"]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>l_ytitle</Name>
<Value><![CDATA["displacement"]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name></Name>
<Value><![CDATA[]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>

</Content>
</Osejs.Model.Variables.Page>
<Osejs.Model.Variables.Page>
<Type>VARIABLE_EDITOR</Type>
<Name>basic</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Variable>
<Name>L</Name>
<Value><![CDATA[range/2]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>x1</Name>
<Value><![CDATA[xmin/2]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>y1</Name>
<Value><![CDATA[L]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>x2</Name>
<Value><![CDATA[xmax/2]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>y2</Name>
<Value><![CDATA[L]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>y</Name>
<Value><![CDATA[0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>y0</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>vy</Name>
<Value><![CDATA[0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>d</Name>
<Value><![CDATA[(x2-x1)/2]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>cta</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>omega</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>k</Name>
<Value><![CDATA[1.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>kr2</Name>
<Value><![CDATA[k*d*d]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>m</Name>
<Value><![CDATA[1.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>g</Name>
<Value><![CDATA[9.8]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>I</Name>
<Value><![CDATA[m*w*w/12.]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>L1</Name>
<Value><![CDATA[0.1]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>L2</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>k1</Name>
<Value><![CDATA[1.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>k2</Name>
<Value><![CDATA[1.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name></Name>
<Value><![CDATA[]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>

</Content>
</Osejs.Model.Variables.Page>
</Osejs.Model.Variables>
<Osejs.Model.Initialization>
<Osejs.Model.Initialization.Page>
<Type>CODE_EDITOR</Type>
<Name>Init Page</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
t=0.;
y=0;
cta=0.;
y0=-m*g/k;
dragAction(false);
_resetView();

]]></Code>

</Content>
</Osejs.Model.Initialization.Page>
</Osejs.Model.Initialization>
<Osejs.Model.Evolution>
<Osejs.Model.Evolution.Page>
<Type>ODE_EDITOR</Type>
<Name>微分方程式</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<IndependentVariable>t</IndependentVariable>
<Increment>dt</Increment>
<Rate state="y">vy</Rate>
<Rate state="vy">-k*y/m-g</Rate>
<Rate state="cta">omega</Rate>
<Rate state="omega">-kr2*cta/I</Rate>
<Rate state=""></Rate>
<Method>RungeKutta</Method>
<Tolerance></Tolerance>
<Comment><![CDATA[]]></Comment>

</Content>
</Osejs.Model.Evolution.Page>
</Osejs.Model.Evolution>
<Osejs.Model.Constraints>
<Osejs.Model.Constraints.Page>
<Type>CODE_EDITOR</Type>
<Name>Cons Page</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
y1=L+y-d*cta;
y2=L+y+d*cta;
if(t>120)playpause ();

]]></Code>

</Content>
</Osejs.Model.Constraints.Page>
</Osejs.Model.Constraints>
<Osejs.Model.Library>
<Osejs.Model.Library.Page>
<Type>LIBRARY_EDITOR</Type>
<Name>playpause</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
public void playpause () {
 if(label=="play"){
  label="pause";
  _play();
 }else{
  label="play";
  _pause();
 }
}
]]></Code>

</Content>
</Osejs.Model.Library.Page>
<Osejs.Model.Library.Page>
<Type>LIBRARY_EDITOR</Type>
<Name>dragAction</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
public void dragAction (boolean dragk) {
  k=k1+k2;
  y0=-m*g/k;
  kr2=k*d*d;
  zero=0.;
 if(dragk){
  y1=2*y0*k1/k+L;
  y2=2*y0*k2/k+L;
 }
  y=(y1+y2)/2-L;
  cta=(y2-y1)/(d*2);
  vy=0.;
}

]]></Code>

</Content>
</Osejs.Model.Library.Page>
<Osejs.Model.Library.Page>
<Type>LIBRARY_EDITOR</Type>
<Name>chinese</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
public void zh_tw () {
 l_play="播放";
 l_reset="重設";
 l_pause="暫停";
 l_init="初始化";
 l_title="y1:紅 / y2: 藍";
 l_xtitle="時間 (秒)";
 l_ytitle="位移";
 label=l_play;
 _initialize();
}
public void locale(String type){
 if(type.equals("zh_tw"))zh_tw();
}
]]></Code>

</Content>
</Osejs.Model.Library.Page>
</Osejs.Model.Library>
</Osejs.Model>
<Osejs.View>
<Osejs.View.Creation>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Frame</Type>
<Property name="name">Frame</Property>
<Property name="_ejs_mainWindow">true</Property>
<Property name="title"><![CDATA[Frame]]></Property>
<Property name="layout"><![CDATA[border]]></Property>
<Property name="visible"><![CDATA[true]]></Property>
<Property name="size"><![CDATA["600,600"]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">Panel</Property>
<Property name="parent">Frame</Property>
<Property name="position">south</Property>
<Property name="layout"><![CDATA[grid:0,1,0,0]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">Panel1</Property>
<Property name="parent">Panel</Property>
<Property name="position">south</Property>
<Property name="layout"><![CDATA[grid:1,0,0,0]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Button</Type>
<Property name="name">reset</Property>
<Property name="parent">Panel1</Property>
<Property name="text"><![CDATA[%l_reset%]]></Property>
<Property name="action"><![CDATA[_reset()]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Button</Type>
<Property name="name">initialize</Property>
<Property name="parent">Panel1</Property>
<Property name="text"><![CDATA[%l_init%]]></Property>
<Property name="action"><![CDATA[_initialize()]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Button</Type>
<Property name="name">playpause</Property>
<Property name="parent">Panel1</Property>
<Property name="text"><![CDATA[%label%]]></Property>
<Property name="enabled"><![CDATA[true]]></Property>
<Property name="action"><![CDATA[playpause()]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">Panel2</Property>
<Property name="parent">Frame</Property>
<Property name="position">north</Property>
<Property name="layout"><![CDATA[grid:1,0,0,0]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Slider</Type>
<Property name="name">k1</Property>
<Property name="parent">Panel2</Property>
<Property name="variable"><![CDATA[k1]]></Property>
<Property name="minimum"><![CDATA[0.0]]></Property>
<Property name="maximum"><![CDATA[10.]]></Property>
<Property name="format"><![CDATA[k1=0.0]]></Property>
<Property name="dragaction"><![CDATA[dragAction(true)]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Slider</Type>
<Property name="name">k2</Property>
<Property name="parent">Panel2</Property>
<Property name="variable"><![CDATA[k2]]></Property>
<Property name="minimum"><![CDATA[0.0]]></Property>
<Property name="maximum"><![CDATA[10.]]></Property>
<Property name="format"><![CDATA[k2=0.0]]></Property>
<Property name="dragaction"><![CDATA[dragAction(true)]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">Panel3</Property>
<Property name="parent">Frame</Property>
<Property name="position">center</Property>
<Property name="layout"><![CDATA[grid:0,1,0,0]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.DrawingPanel</Type>
<Property name="name">DrawingPanel</Property>
<Property name="parent">Panel3</Property>
<Property name="position">center</Property>
<Property name="autoscaleX"><![CDATA[false]]></Property>
<Property name="autoscaleY"><![CDATA[false]]></Property>
<Property name="minimumX"><![CDATA[xmin]]></Property>
<Property name="maximumX"><![CDATA[xmax]]></Property>
<Property name="minimumY"><![CDATA[ymin]]></Property>
<Property name="maximumY"><![CDATA[ymax]]></Property>
<Property name="square"><![CDATA[true]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Spring</Type>
<Property name="name">Spring1</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[x1]]></Property>
<Property name="y"><![CDATA[ymin]]></Property>
<Property name="sizex"><![CDATA[zero]]></Property>
<Property name="sizey"><![CDATA[y1]]></Property>
<Property name="enabled"><![CDATA[true]]></Property>
<Property name="dragaction"><![CDATA[dragAction(false)]]></Property>
<Property name="radius"><![CDATA[size]]></Property>
<Property name="stroke"><![CDATA[stroke]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Spring</Type>
<Property name="name">Spring2</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[x2]]></Property>
<Property name="y"><![CDATA[ymin]]></Property>
<Property name="sizex"><![CDATA[zero]]></Property>
<Property name="sizey"><![CDATA[y2]]></Property>
<Property name="sizez"><![CDATA[0.0]]></Property>
<Property name="enabled"><![CDATA[true]]></Property>
<Property name="dragaction"><![CDATA[dragAction(false)]]></Property>
<Property name="radius"><![CDATA[size]]></Property>
<Property name="stroke"><![CDATA[stroke]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Particle</Type>
<Property name="name">rod</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[zero]]></Property>
<Property name="y"><![CDATA[y]]></Property>
<Property name="sizex"><![CDATA[w]]></Property>
<Property name="sizey"><![CDATA[h]]></Property>
<Property name="enabled"><![CDATA[true]]></Property>
<Property name="dragaction"><![CDATA[zero=0;]]></Property>
<Property name="style"><![CDATA[RECTANGLE]]></Property>
<Property name="elementposition"><![CDATA[SOUTH]]></Property>
<Property name="angle"><![CDATA[cta]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Arrow</Type>
<Property name="name">balance</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[xmin]]></Property>
<Property name="y"><![CDATA[y0]]></Property>
<Property name="sizex"><![CDATA[range*2]]></Property>
<Property name="sizey"><![CDATA[zero]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="style"><![CDATA[SEGMENT]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Particle</Type>
<Property name="name">base</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[0]]></Property>
<Property name="y"><![CDATA[ymin]]></Property>
<Property name="sizex"><![CDATA[range*2]]></Property>
<Property name="sizey"><![CDATA[h]]></Property>
<Property name="enabled"><![CDATA[true]]></Property>
<Property name="style"><![CDATA[RECTANGLE]]></Property>
<Property name="elementposition"><![CDATA[CENTERED]]></Property>
<Property name="color"><![CDATA[black]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">Panel4</Property>
<Property name="parent">Panel3</Property>
<Property name="layout"><![CDATA[grid:1,0,0,0]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.PlottingPanel</Type>
<Property name="name">PlottingPanel</Property>
<Property name="parent">Panel4</Property>
<Property name="position">center</Property>
<Property name="title"><![CDATA[%l_title%]]></Property>
<Property name="titleX"><![CDATA[%l_xtitle%]]></Property>
<Property name="titleY"><![CDATA[%l_ytitle%]]></Property>
<Property name="autoscaleX"><![CDATA[true]]></Property>
<Property name="autoscaleY"><![CDATA[true]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Trace</Type>
<Property name="name">y1</Property>
<Property name="parent">PlottingPanel</Property>
<Property name="x"><![CDATA[t]]></Property>
<Property name="y"><![CDATA[y1-L]]></Property>
<Property name="maxpoints"><![CDATA[npt]]></Property>
<Property name="norepeat"><![CDATA[true]]></Property>
<Property name="connected"><![CDATA[true]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="color"><![CDATA[red]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Trace</Type>
<Property name="name">y2</Property>
<Property name="parent">PlottingPanel</Property>
<Property name="x"><![CDATA[t]]></Property>
<Property name="y"><![CDATA[y2-L]]></Property>
<Property name="maxpoints"><![CDATA[npt]]></Property>
<Property name="norepeat"><![CDATA[true]]></Property>
<Property name="connected"><![CDATA[true]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="color"><![CDATA[blue]]></Property>
</Osejs.View.Creation.Element>
</Osejs.View.Creation>
</Osejs.View>
</Osejs>
