<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[200]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[range]]></Comment>
</Variable>
<Variable>
<Name>xmin</Name>
<Value><![CDATA[-range]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>xmax</Name>
<Value><![CDATA[range]]></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>size2</Name>
<Value><![CDATA[size/2]]></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>stroke</Name>
<Value><![CDATA[3]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>zero</Name>
<Value><![CDATA[180.20477815699658]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name></Name>
<Value><![CDATA[0.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>box</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Variable>
<Name>basex</Name>
<Value><![CDATA[0.]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>basey</Name>
<Value><![CDATA[0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>bx</Name>
<Value><![CDATA[{xmin,xmin,0,0}]]></Value>
<Type>double</Type>
<Dimension>[4]</Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>by</Name>
<Value><![CDATA[{ymax,0,0,ymax}]]></Value>
<Type>double</Type>
<Dimension>[4]</Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>baseh</Name>
<Value><![CDATA[ymax]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>waterh</Name>
<Value><![CDATA[ymax*0.9]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>waterw</Name>
<Value><![CDATA[xmax]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>hy</Name>
<Value><![CDATA[ymax/2]]></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>l_showbase</Name>
<Value><![CDATA["show baseline"]]></Value>
<Type>String</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>l_showvx</Name>
<Value><![CDATA["show vx"]]></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>n</Name>
<Value><![CDATA[200]]></Value>
<Type>int</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>x</Name>
<Value><![CDATA[0]]></Value>
<Type>double</Type>
<Dimension>[n]</Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>y</Name>
<Value><![CDATA[0]]></Value>
<Type>double</Type>
<Dimension>[n]</Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>vy</Name>
<Value><![CDATA[0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>vx</Name>
<Value><![CDATA[]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>h</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>depth</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>g</Name>
<Value><![CDATA[980]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>tmax</Name>
<Value><![CDATA[0.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[
depth=waterh-(hy-basey);
waterh=ymax;
]]></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="waterh">-vx*size2/waterw</Rate>
<Method>MidPoint</Method>
<Tolerance></Tolerance>
<Comment><![CDATA[]]></Comment>
<Events><Event.Page>
<Type>EVENT_EDITOR</Type>
<Name>Event</Name>
<Active>true</Active>
<Visible>true</Visible>
<EventContent>
<Comment><![CDATA[]]></Comment>
<ZeroCondition><![CDATA[
return waterh-(hy-basey);
]]></ZeroCondition>
<Tolerance><![CDATA[0.001]]></Tolerance>
<Action><![CDATA[

]]></Action>
<StopAtEvent>true</StopAtEvent>

</EventContent>
</Event.Page>
</Events>

</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[
double delta,t2;
zero=0.;
basex=xmin+waterw;
depth=waterh-(hy-basey);
h=hy+ymax;
tmax=Math.sqrt(2*h/g);
delta=tmax/n;
if(depth>0)vx=Math.sqrt(2*g*depth);
else {
 vx=0.;
 waterh=hy-basey;
 if(_isPlaying())playpause();
}
for(int i=0;i<n;i++){
  t2=i*delta;
  x[i]=basex+vx*t2;
  y[i]=hy-g*t2*t2/2;
}

]]></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>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_showbase="顯示底線";
 l_showvx="顯示噴出速度";
 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>dragbox</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
public void dragbox () {
 baseh=ymax+basey;
 hy=basey+waterh-depth;
 if(basex< 0.8*xmin)basex=0.8*xmin;
 waterw=basex-xmin;
 bx[0]=bx[1]=xmin-basex;
}
public void draghole () {
 if(hy>basey+waterh-size2)hy=basey+waterh-size2;
 else if(hy<basey+size2)hy=basey+size2;
 depth=waterh-(hy-basey);
}

]]></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["7,6"]]></Property>
<Property name="size"><![CDATA["587,312"]]></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[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>
<Type>Elements.CheckBox</Type>
<Property name="name">showbase</Property>
<Property name="parent">Panel1</Property>
<Property name="variable"><![CDATA[showbase]]></Property>
<Property name="text"><![CDATA[%l_showbase%]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.CheckBox</Type>
<Property name="name">CheckBoxshowvx</Property>
<Property name="parent">Panel1</Property>
<Property name="variable"><![CDATA[showvx]]></Property>
<Property name="text"><![CDATA[%l_showvx%]]></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">west</Property>
<Property name="layout"><![CDATA[grid:2,1,0,0]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Slider</Type>
<Property name="name">Sliderwater</Property>
<Property name="parent">Panel</Property>
<Property name="variable"><![CDATA[waterh]]></Property>
<Property name="minimum"><![CDATA[hy]]></Property>
<Property name="maximum"><![CDATA[ymax]]></Property>
<Property name="orientation"><![CDATA[VERTICAL]]></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>
<Property name="background"><![CDATA[200,220,208]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Particle</Type>
<Property name="name">water</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[xmin]]></Property>
<Property name="y"><![CDATA[basey]]></Property>
<Property name="sizex"><![CDATA[waterw]]></Property>
<Property name="sizey"><![CDATA[waterh]]></Property>
<Property name="enabled"><![CDATA[true]]></Property>
<Property name="style"><![CDATA[RECTANGLE]]></Property>
<Property name="elementposition"><![CDATA[SOUTH_WEST]]></Property>
<Property name="color"><![CDATA[lightGray]]></Property>
<Property name="secondaryColor"><![CDATA[lightGray]]></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[xmin]]></Property>
<Property name="y"><![CDATA[ymin]]></Property>
<Property name="sizex"><![CDATA[waterw]]></Property>
<Property name="sizey"><![CDATA[baseh]]></Property>
<Property name="enabled"><![CDATA[true]]></Property>
<Property name="style"><![CDATA[RECTANGLE]]></Property>
<Property name="elementposition"><![CDATA[SOUTH_WEST]]></Property>
<Property name="color"><![CDATA[gray]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Line</Type>
<Property name="name">box</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="maxpoints"><![CDATA[4]]></Property>
<Property name="x"><![CDATA[bx]]></Property>
<Property name="y"><![CDATA[by]]></Property>
<Property name="positionx"><![CDATA[basex]]></Property>
<Property name="positiony"><![CDATA[basey]]></Property>
<Property name="enabled"><![CDATA[true]]></Property>
<Property name="enabledSecondary"><![CDATA[false]]></Property>
<Property name="dragaction"><![CDATA[dragbox()]]></Property>
<Property name="color"><![CDATA[null]]></Property>
<Property name="stroke"><![CDATA[stroke]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Poligon</Type>
<Property name="name">waterjet</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="maxpoints"><![CDATA[n]]></Property>
<Property name="x"><![CDATA[x]]></Property>
<Property name="y"><![CDATA[y]]></Property>
<Property name="closed"><![CDATA[false]]></Property>
<Property name="color"><![CDATA[lightGray]]></Property>
<Property name="secondaryColor"><![CDATA[lightGray]]></Property>
<Property name="stroke"><![CDATA[stroke]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Arrow</Type>
<Property name="name">hole</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[basex]]></Property>
<Property name="y"><![CDATA[hy]]></Property>
<Property name="sizex"><![CDATA[zero]]></Property>
<Property name="sizey"><![CDATA[size2]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="enabledSecondary"><![CDATA[true]]></Property>
<Property name="dragaction"><![CDATA[draghole()]]></Property>
<Property name="color"><![CDATA[white]]></Property>
<Property name="secondaryColor"><![CDATA[white]]></Property>
<Property name="stroke"><![CDATA[stroke]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Arrow</Type>
<Property name="name">baseline</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[basex]]></Property>
<Property name="y"><![CDATA[basey]]></Property>
<Property name="sizex"><![CDATA[xmax-basex]]></Property>
<Property name="sizey"><![CDATA[zero]]></Property>
<Property name="visible"><![CDATA[showbase]]></Property>
<Property name="enabled"><![CDATA[false]]></Property>
<Property name="style"><![CDATA[SEGMENT]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Arrow</Type>
<Property name="name">Arrow</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x"><![CDATA[basex]]></Property>
<Property name="y"><![CDATA[hy]]></Property>
<Property name="sizex"><![CDATA[vx]]></Property>
<Property name="sizey"><![CDATA[zero]]></Property>
<Property name="scalex"><![CDATA[0.1]]></Property>
<Property name="visible"><![CDATA[showvx]]></Property>
<Property name="enabled"><![CDATA[true]]></Property>
<Property name="color"><![CDATA[red]]></Property>
<Property name="secondaryColor"><![CDATA[red]]></Property>
</Osejs.View.Creation.Element>
</Osejs.View.Creation>
</Osejs.View>
</Osejs>
