<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.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[20]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[range]]></Comment>
</Variable>
<Variable>
<Name>xmin</Name>
<Value><![CDATA[-range/2]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>xmax</Name>
<Value><![CDATA[range/2]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>ymin</Name>
<Value><![CDATA[-range/2]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>ymax</Name>
<Value><![CDATA[range/2]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></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[time step]]></Comment>
</Variable>
<Variable>
<Name>size</Name>
<Value><![CDATA[range/40]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[particle size]]></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.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>D</Name>
<Value><![CDATA[0.8*range]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>stroke</Name>
<Value><![CDATA[2.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>np</Name>
<Value><![CDATA[600]]></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_dl</Name>
<Value><![CDATA["spring displacement=0.0"]]></Value>
<Type>String</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>basic</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Variable>
<Name>x</Name>
<Value><![CDATA[D/2]]></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>L</Name>
<Value><![CDATA[D/4]]></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>m</Name>
<Value><![CDATA[1.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>v</Name>
<Value><![CDATA[Math.sqrt(x*k*(x-L))]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>vx</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>vy</Name>
<Value><![CDATA[v]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>scale</Name>
<Value><![CDATA[0.5]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>ax</Name>
<Value><![CDATA[0.1]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>ay</Name>
<Value><![CDATA[0.1]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>dl</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>dlmax</Name>
<Value><![CDATA[range/5]]></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>
<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="x">vx</Rate>
<Rate state="y">vy</Rate>
<Rate state="vx">getF(x,y)/m</Rate>
<Rate state="vy">getF(y,x)/m</Rate>
<Method>MidPoint</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[
ax=getF(x,y)/m;
ay=getF(y,x)/m;
]]></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==l_play){
  label=l_pause;
  _play();
 }else{
  label=l_play;
  _pause();
 }
}
]]></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_dl="彈簧位移=0.0";
 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.Page>
<Type>LIBRARY_EDITOR</Type>
<Name>getAx</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
double r;
public double getF (double x,double y) {
  r=Math.sqrt(x*x+y*y);
  dl=r-L;
  return -k*dl*x/r; 
}

]]></Code>

</Content>
</Osejs.Model.Library.Page>
<Osejs.Model.Library.Page>
<Type>LIBRARY_EDITOR</Type>
<Name>drag</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
double cta;
public void drag () {
// if(dl>dlmax)dl=dlmax;
// else if(dl<-dlmax/2)dl=-dlmax/2;
 r=L+dl;
 cta=Math.atan2(y,x);
 x=r*Math.cos(cta);
 y=r*Math.sin(cta);
}
]]></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="location"><![CDATA["8,-1"]]></Property>
<Property name="size"><![CDATA[300,342]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.DrawingPanel</Type>
<Property name="name">DrawingPanel</Property>
<Property name="parent">Frame</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.Particle</Type>
<Property name="name">Particle</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[x]]></Property>
<Property name="y"><![CDATA[y]]></Property>
<Property name="sizex"><![CDATA[size]]></Property>
<Property name="sizey"><![CDATA[size]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Particle</Type>
<Property name="name">Particlec</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[zero]]></Property>
<Property name="y"><![CDATA[zero]]></Property>
<Property name="sizex"><![CDATA[size]]></Property>
<Property name="sizey"><![CDATA[size]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Spring</Type>
<Property name="name">Spring</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[zero]]></Property>
<Property name="y"><![CDATA[zero]]></Property>
<Property name="sizex"><![CDATA[x]]></Property>
<Property name="sizey"><![CDATA[y]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="radius"><![CDATA[size]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Arrow</Type>
<Property name="name">ArrowV2</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[x]]></Property>
<Property name="y"><![CDATA[y]]></Property>
<Property name="sizex"><![CDATA[vx]]></Property>
<Property name="sizey"><![CDATA[vy]]></Property>
<Property name="sizez"><![CDATA[0.1]]></Property>
<Property name="scalex"><![CDATA[scale]]></Property>
<Property name="scaley"><![CDATA[scale]]></Property>
<Property name="enabled"><![CDATA[true]]></Property>
<Property name="color"><![CDATA[red]]></Property>
<Property name="secondaryColor"><![CDATA[red]]></Property>
<Property name="stroke"><![CDATA[stroke]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Arrow</Type>
<Property name="name">Arrowa</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[x]]></Property>
<Property name="y"><![CDATA[y]]></Property>
<Property name="sizex"><![CDATA[ax]]></Property>
<Property name="sizey"><![CDATA[ay]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="color"><![CDATA[green]]></Property>
<Property name="secondaryColor"><![CDATA[green]]></Property>
<Property name="stroke"><![CDATA[stroke]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Trace</Type>
<Property name="name">Trace</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[x]]></Property>
<Property name="y"><![CDATA[y]]></Property>
<Property name="maxpoints"><![CDATA[np]]></Property>
<Property name="skippoints"><![CDATA[3]]></Property>
<Property name="norepeat"><![CDATA[true]]></Property>
<Property name="connected"><![CDATA[_isPlaying]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">Panel1</Property>
<Property name="parent">Frame</Property>
<Property name="position">south</Property>
<Property name="layout"><![CDATA[border:0,0]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">Panel</Property>
<Property name="parent">Panel1</Property>
<Property name="position">east</Property>
<Property name="layout"><![CDATA[grid:0,1,0,0]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Button</Type>
<Property name="name">reset</Property>
<Property name="parent">Panel</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">playpause</Property>
<Property name="parent">Panel</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>
<Type>Elements.Slider</Type>
<Property name="name">Sliderdl</Property>
<Property name="parent">Panel1</Property>
<Property name="position">center</Property>
<Property name="variable"><![CDATA[dl]]></Property>
<Property name="minimum"><![CDATA[-range/2]]></Property>
<Property name="maximum"><![CDATA[range/2]]></Property>
<Property name="format"><![CDATA[%l_dl%]]></Property>
<Property name="enabled"><![CDATA[_isPaused]]></Property>
<Property name="dragaction"><![CDATA[drag()]]></Property>
</Osejs.View.Creation.Element>
</Osejs.View.Creation>
</Osejs.View>
</Osejs>
