<Osejs version="3.45">
<Osejs.Information>
<Title><![CDATA[]]></Title>
<Version><![CDATA[]]></Version>
<Author><![CDATA[]]></Author>
<Classification><![CDATA[]]></Classification>
<Keywords><![CDATA[]]></Keywords>
<Abstract><![CDATA[]]></Abstract>
<Language><![CDATA[]]></Language>
<AuxiliaryFiles><![CDATA[]]></AuxiliaryFiles>
</Osejs.Information>
<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>true</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[200]]></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/5]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[particle size]]></Comment>
</Variable>
<Variable>
<Name>size2</Name>
<Value><![CDATA[size/2]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>sc</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>cs</Name>
<Value><![CDATA[0.0]]></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></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[0]]></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>vx</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>vy</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>yh</Name>
<Value><![CDATA[ymin]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>cta</Name>
<Value><![CDATA[Math.PI/6]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>PX</Name>
<Value><![CDATA[{xmin,xmin,xmax}]]></Value>
<Type>double</Type>
<Dimension>[3]</Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>PY</Name>
<Value><![CDATA[{ymin,yh,ymin}]]></Value>
<Type>double</Type>
<Dimension>[3]</Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>m</Name>
<Value><![CDATA[2.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>g</Name>
<Value><![CDATA[10.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>mu</Name>
<Value><![CDATA[0.6]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>N</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>fr</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>xc</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>yc</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>nf</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>scale</Name>
<Value><![CDATA[2.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.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>label</Name>
<Value><![CDATA["pause"]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>l_step</Name>
<Value><![CDATA["step"]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>msg</Name>
<Value><![CDATA[""]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>l_nf</Name>
<Value><![CDATA["net force=0.0"]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>l_f</Name>
<Value><![CDATA["friction force="]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>msgf</Name>
<Value><![CDATA[""]]></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>
<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[
vx=vy=0.;
]]></Code>

</Content>
</Osejs.Model.Initialization.Page>
</Osejs.Model.Initialization>
<Osejs.Model.Evolution>
<Osejs.Model.Evolution.Page>
<Type>ODE_EDITOR</Type>
<Name>Evol Page</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">getA(cta)*Math.cos(cta)</Rate>
<Rate state="vy">-getA(cta)*Math.sin(cta)</Rate>
<Rate state=""></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[
xc=x+size2*sc;
yc=y+size2*cs;
msgf=l_f+((int)(fr*10)/10.);
]]></Code>

</Content>
</Osejs.Model.Constraints.Page>
</Osejs.Model.Constraints>
<Osejs.Model.Library>
<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_init="初始化";
 l_reset="重設";
 l_pause="暫停";
 l_step="前進一格";
 l_nf="合力=0.0";
 l_f="摩擦力=";
 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>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>getA</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
public double getA (double c) {
  if(Math.tan(c)>mu)return m*g*(Math.sin(c)-mu*Math.cos(c));
  else return 0.;
}
]]></Code>

</Content>
</Osejs.Model.Library.Page>
<Osejs.Model.Library.Page>
<Type>LIBRARY_EDITOR</Type>
<Name>dragcta</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
public void dragcta () {
cta=Math.atan2(yh-ymin,xmax-xmin);
sc=Math.sin(cta);
cs=Math.cos(cta);
x=xmax*(1-cs);
y=ymin+xmax*sc;
PY[1]=yh;
N=m*g*cs;
msg="tan(cta)="+(int)(Math.tan(cta)*100.)/100.;
if(mu*N>m*g*sc){
 fr=m*g*sc;
 nf=0.;
}else{
  fr=mu*N;
  nf=m*g*sc-mu*N;
}
vx=vy=0;
}
]]></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["13,10"]]></Property>
<Property name="size"><![CDATA["389,545"]]></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:1,0,0,0]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Slider</Type>
<Property name="name">Slidermu</Property>
<Property name="parent">Panel</Property>
<Property name="variable"><![CDATA[mu]]></Property>
<Property name="minimum"><![CDATA[0.0]]></Property>
<Property name="maximum"><![CDATA[1.2]]></Property>
<Property name="format"><![CDATA[mu=0.00]]></Property>
<Property name="dragaction"><![CDATA[dragcta()]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">Panel2</Property>
<Property name="parent">Panel</Property>
<Property name="layout"><![CDATA[grid:2,2,0,0]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Button</Type>
<Property name="name">reset</Property>
<Property name="parent">Panel2</Property>
<Property name="text"><![CDATA[%l_reset%]]></Property>
<Property name="enabled"><![CDATA[_isPaused]]></Property>
<Property name="action"><![CDATA[_reset()]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Button</Type>
<Property name="name">initial</Property>
<Property name="parent">Panel2</Property>
<Property name="text"><![CDATA[%l_init%]]></Property>
<Property name="action"><![CDATA[_initialize()]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Bar</Type>
<Property name="name">Bar</Property>
<Property name="parent">Panel2</Property>
<Property name="variable"><![CDATA[nf]]></Property>
<Property name="minimum"><![CDATA[0.0]]></Property>
<Property name="maximum"><![CDATA[10]]></Property>
<Property name="format"><![CDATA[%l_nf%]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Button</Type>
<Property name="name">Buttonplay</Property>
<Property name="parent">Panel2</Property>
<Property name="text"><![CDATA[%label%]]></Property>
<Property name="action"><![CDATA[playpause()]]></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*1.2]]></Property>
<Property name="maximumY"><![CDATA[ymax*1.5]]></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>
<Property name="style"><![CDATA[RECTANGLE]]></Property>
<Property name="elementposition"><![CDATA[SOUTH]]></Property>
<Property name="angle"><![CDATA[-cta]]></Property>
<Property name="color"><![CDATA[gray]]></Property>
<Property name="secondaryColor"><![CDATA[null]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Poligon</Type>
<Property name="name">Polygon</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="maxpoints"><![CDATA[3]]></Property>
<Property name="x"><![CDATA[PX]]></Property>
<Property name="y"><![CDATA[PY]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="enabledSecondary"><![CDATA[false]]></Property>
<Property name="color"><![CDATA[lightGray]]></Property>
<Property name="secondaryColor"><![CDATA[null]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Arrow</Type>
<Property name="name">Arrowmg</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[xc]]></Property>
<Property name="y"><![CDATA[yc]]></Property>
<Property name="sizex"><![CDATA[zero]]></Property>
<Property name="sizey"><![CDATA[-m*g]]></Property>
<Property name="scalex"><![CDATA[scale]]></Property>
<Property name="scaley"><![CDATA[scale]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="color"><![CDATA[blue]]></Property>
<Property name="stroke"><![CDATA[stroke]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Arrow</Type>
<Property name="name">Arrowf</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[x]]></Property>
<Property name="y"><![CDATA[y]]></Property>
<Property name="sizex"><![CDATA[-fr*cs]]></Property>
<Property name="sizey"><![CDATA[fr*sc]]></Property>
<Property name="scalex"><![CDATA[scale]]></Property>
<Property name="scaley"><![CDATA[scale]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="color"><![CDATA[blue]]></Property>
<Property name="stroke"><![CDATA[stroke]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Arrow</Type>
<Property name="name">Arrownf</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[xc]]></Property>
<Property name="y"><![CDATA[yc]]></Property>
<Property name="sizex"><![CDATA[nf*cs]]></Property>
<Property name="sizey"><![CDATA[-nf*sc]]></Property>
<Property name="scalex"><![CDATA[scale]]></Property>
<Property name="scaley"><![CDATA[scale]]></Property>
<Property name="visible"><![CDATA[nf>0]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="color"><![CDATA[black]]></Property>
<Property name="secondaryColor"><![CDATA[black]]></Property>
<Property name="stroke"><![CDATA[stroke]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Text</Type>
<Property name="name">Text</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[xmin]]></Property>
<Property name="y"><![CDATA[ymin]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="text"><![CDATA[%msg%]]></Property>
<Property name="elementposition"><![CDATA[SOUTH_WEST]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Text</Type>
<Property name="name">TextF</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[xmin]]></Property>
<Property name="y"><![CDATA[ymax*1.5]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="text"><![CDATA[%msgf%]]></Property>
<Property name="elementposition"><![CDATA[NORTH_WEST]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Slider</Type>
<Property name="name">Slidercta</Property>
<Property name="parent">Frame</Property>
<Property name="position">west</Property>
<Property name="variable"><![CDATA[yh]]></Property>
<Property name="value"><![CDATA[-50]]></Property>
<Property name="minimum"><![CDATA[ymin]]></Property>
<Property name="maximum"><![CDATA[ymax*1.5]]></Property>
<Property name="orientation"><![CDATA[VERTICAL]]></Property>
<Property name="dragaction"><![CDATA[dragcta()]]></Property>
</Osejs.View.Creation.Element>
</Osejs.View.Creation>
</Osejs.View>
<Osejs.Experiment>
</Osejs.Experiment>
</Osejs>
