<?xml version="1.0"?>
<!DOCTYPE activity SYSTEM "escot.dtd" >
<activity name="Helicopter Flight School" size="640,445" escotVersion="1.2.16" puzzle_id="27">
  <page name="Part I: Training Simulator">
    <component class="com.sri.escot.NumberEntry" position="59,544" size="148,17" visible="false" portid="NumberEntry-1">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="Heading (rads)"/>
      <property name="value" value="1.1248584866667772"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="SketchpadBean2" position="489,254" size="152,151" visible="true" portid="SketchpadBean2-2">
 
 {1} Point(78,16)[hidden];
 
 {2} FixedPoint(78,74);
 
 {3} Segment(1,2)[hidden,black];
 
 {4} Circle(2,1)[black];
 
 {5} Point on object(4,-0.44593689);
 
 {6} Angle(5,2,1,20,259,'Angle = ')[hidden,black];
 
 {7} Angle(1,2,5,20,230,'ReverseAngle = ')[hidden,black];
 
 {8} Segment(5,2)[hidden,black];
 
 {9} Dilation(5,2,0.89999998)[hidden];
 
 {10} Dilation(9,2,0.69999999)[hidden];
 
 {11} Segment(9,2)[black];
 
 {12} Segment(9,10)[hidden,black];
 
 {13} Perpendicular(8,10)[hidden,black];
 
 {14} Midpoint(12)[hidden];
 
 {15} Circle(10,14)[hidden,black];
 
 {16} Segment(10,14)[black];
 
 {17} Intersect1(13,15)[hidden];
 
 {18} Intersect2(13,15)[hidden];
 
 {19} Midpoint(16)[hidden];
 
 {20} Polygon(17,9,18,19)[black];
 
 {21} Image(0, 0, 'SnRDocs/greenCompass.gif');
 
 <customProperty name="MeasureInDegrees" value="1"/>
      <customProperty name="DirectedAngles" value="1"/>
      <property name="SketchBackColor" value="200,200,200"/>
    </component>
    <component class="SketchpadBean2" position="263,308" size="151,114" visible="true" portid="SketchpadBean2-3">
 {1} Image(0, 0, 'SnRDocs/helipilot_small.jpg');
 <customProperty name="MeasureInDegrees" value="1"/>
      <customProperty name="DirectedAngles" value="1"/>
      <property name="SketchBackColor" value="200,200,200"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="311,281" size="148,17" visible="true" portid="NumberEntry-2">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value="Heading (degrees)"/>
      <property name="value" value="64.44969827381037"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="false"/>
    </component>
    <component class="SketchpadBean2" position="270,7" size="363,242" visible="true" portid="SketchpadBean2-1">
 
 {1} Point(9,379)[hidden,label('LatLongOrigin')];
 
 {2} Point(125,164)[hidden];
 
 {3} Point(171,166)[hidden];
 
 {4} Point(25,175);
 
 {5} Point(129,482);
 
 {6} Point(152,482);
 
 {7} Point(110,444);
 
 {8} Point(158,444);
 
 {9} Point(280,160)[hidden];
 
 {10} Point(423,160)[hidden];
 
 {11} FixedPoint(25,175)[label('Lift Off')];
 
 {12} Point(22,339)[hidden,label('LatLongOrigin')];
 
 {13} MoveButton(207,527,0,'JumpHome')(11,4)[black];
 
 {14} Circle(2,3)[hidden,black];
 
 {15} Segment(6,5)[black];
 
 {16} Translation(4,0.00000000,28.34645653)[hidden];
 
 {17} Segment(8,7)[black];
 
 {18} Segment(10,9)[hidden,black];
 
 {19} ShowButton(82,519,'ShowHome')(11)[black];
 
 {20} HideButton(91,491,'HideHome')(11)[black];
 
 {21} Perpendicular(17,1)[hidden,black];
 
 {22} Parallel(17,1)[hidden,black];
 
 {23} Circle by radius(11,17)[hidden,black];
 
 {24} Point on object(14,-1.57079633)[hidden];
 
 {25} Point on object(14,-2.29031307)[hidden,label('D')];
 
 {26} Length(15,315,192,'Length(Segment RotorDiameter) = ')[hidden,black];
 
 {27} Length(17,211,467,'MoveStepSize = ')[black];
 
 {28} Point on object(18,0.92333752)[hidden];
 
 {29} UnitCircle(23)[hidden,black];
 
 {30} Segment(24,2)[hidden,black];
 
 {31} Segment(25,2)[hidden,black];
 
 {32} Parameter(0.0,10,10,'Heading = ')[hidden,black];
 
 {33} Parameter(1.00,10,10,'StepsToMove = ')[hidden,black];
 
 {34} Translation/FixedAngle/MarkedDistance(4,27,0.00000000)[hidden];
 
 {35} Translation/FixedAngle/MarkedDistance(12,27,0.00000000)[hidden];
 
 {36} Coordinates(4,29,219,496,'Coordinate(Point Copter): ')[hidden,black];
 
 {37} AxisY(29)[hidden,black];
 
 {38} AxisX(29)[hidden,black];
 
 {39} Calculate(117,380,'= ','3.1415927410 2.0000000000 /A-')(32)[hidden,black];
 
 {40} Calculate(63,417,'MoveStepSize*StepsToMove = ','AB*')(27,33)[hidden,black];
 
 {41} Translation/FixedAngle/MarkedDistance(34,27,0.00000000)[hidden];
 
 {42} Circle(4,34)[hidden,white];
 
 {43} Line(12,35)[hidden,color(128,128,128)];
 
 {44} Circle(12,35)[hidden,white];
 
 {45} Calculate(219,588,'y[Copter] = ','#A2')(36)[black];
 
 {46} Calculate(216,614,'x[Copter] = ','#A1')(36)[black];
 
 {47} Translation/MarkedAngle/MarkedDistance(4,39,40)[hidden];
 
 {48} Translation/MarkedAngle/MarkedDistance(4,39,26)[hidden];
 
 {49} Translation/FixedAngle/MarkedDistance(41,27,0.00000000)[hidden];
 
 {50} Circle(4,41)[hidden,white];
 
 {51} Perpendicular(43,12)[hidden,color(128,128,128)];
 
 {52} Perpendicular(43,35)[hidden,color(128,128,128)];
 
 {53} MoveButton(216,542,3,'Move')(47,4)[black];
 
 {54} Circle(48,4)[hidden,black];
 
 {55} Segment(48,4)[hidden,black];
 
 {56} Translation(48,0.00000000,20.00000000)[hidden];
 
 {57} Translation/FixedAngle/MarkedDistance(49,27,0.00000000)[hidden];
 
 {58} Circle(4,49)[hidden,white];
 
 {59} VectorTranslation(52,12,35)[hidden,color(128,128,128)];
 
 {60} Intersect2(51,44)[hidden];
 
 {61} Point on object(54,2.65840021)[hidden];
 
 {62} Perpendicular(55,4)[hidden,black];
 
 {63} Midpoint(55)[hidden];
 
 {64} Translation(56,0.00000000,-20.00000000)[hidden,traced];
 
 {65} Translation/FixedAngle/MarkedDistance(57,27,0.00000000)[hidden];
 
 {66} Circle(4,57)[hidden,white];
 
 {67} VectorTranslation(59,12,35)[hidden,color(128,128,128)];
 
 {68} VectorTranslation(43,12,60)[hidden,color(128,128,128)];
 
 {69} Rotation(61,48,1.57079637)[hidden];
 
 {70} Rotation(61,48,0.34906584)[hidden];
 
 {71} AnimateButton(207,503,'SpinRotors')(61,54)(5)(0)(1)[black,auto];
 
 {72} Reflection(48,62)[hidden];
 
 {73} Circle(63,4)[hidden,black];
 
 {74} VectorTranslation(62,4,63)[hidden,black];
 
 {75} ShowButton(93,576,'ShowTrace')(64)[black];
 
 {76} HideButton(91,543,'HideTrace')(64)[black];
 
 {77} Circle(4,65)[hidden,white];
 
 {78} VectorTranslation(67,12,35)[hidden,color(128,128,128)];
 
 {79} VectorTranslation(68,12,60)[hidden,color(128,128,128)];
 
 {80} Rotation(69,48,1.57079637)[hidden];
 
 {81} Rotation(69,48,0.34906584)[hidden];
 
 {82} Polygon(70,61,48)[red];
 
 {83} Intersect2(74,73)[hidden];
 
 {84} Intersect1(74,73)[hidden];
 
 {85} ShowButton(374,483,'ShowIsobars')(42,50,58,66,77)[black,auto];
 
 {86} HideButton(374,507,'HideIsobars')(42,50,58,66,77)[black];
 
 {87} VectorTranslation(78,12,35)[hidden,color(128,128,128)];
 
 {88} VectorTranslation(79,12,60)[hidden,color(128,128,128)];
 
 {89} Rotation(80,48,1.57079637)[hidden];
 
 {90} Rotation(80,48,0.34906584)[hidden];
 
 {91} Polygon(81,69,48)[red];
 
 {92} Polygon(48,84,72,83)[red];
 
 {93} VectorTranslation(87,12,35)[hidden,color(128,128,128)];
 
 {94} VectorTranslation(88,12,60)[hidden,color(128,128,128)];
 
 {95} Rotation(89,48,0.34906584)[hidden];
 
 {96} Polygon(90,80,48)[red];
 
 {97} VectorTranslation(93,12,35)[hidden,color(128,128,128)];
 
 {98} VectorTranslation(94,12,60)[hidden,color(128,128,128)];
 
 {99} Polygon(89,95,48)[red];
 
 {100} VectorTranslation(97,12,35)[hidden,color(128,128,128)];
 
 {101} VectorTranslation(98,12,60)[hidden,color(128,128,128)];
 
 {102} VectorTranslation(101,12,60)[hidden,color(128,128,128)];
 
 {103} ShowButton(374,531,'ShowLatLong')(43,51,52,59,67,78,87,93,97,100,68,79,88,94,98,101,102)[black];
 
 {104} HideButton(374,555,'HideLatLong')(43,51,52,59,67,78,87,93,97,100,68,79,88,94,98,101,102)[black];
 
 {105} FixedPoint(250,225)[hidden];
 
 {106} FixedPoint(298,225)[hidden];
 
 {107} Segment(106,105)[black];
 Image(0, 0, 'SnRDocs/map.gif');
 
 <customProperty name="MeasureInDegrees" value="0"/>
      <customProperty name="DirectedAngles" value="1"/>
      <property name="SketchBackColor" value="200,200,200"/>
    </component>
    <component class="com.sri.escot.javascript.JavaScript" position="62,491" size="73,23" visible="false" portid="JavaScript-1">
      <export id="EscotAction0" class="org.escot.EscotAction">
        <property name="enabled" value="true"/>
        <property name="name" value="Fly"/>
      </export>
      <export id="EscotAction1" class="org.escot.EscotAction">
        <property name="enabled" value="true"/>
        <property name="name" value="Reset"/>
      </export>
      <export id="EscotNumber0" class="org.escot.EscotNumber">
        <property name="value" value="0.0"/>
        <property name="name" value="totalDist1"/>
      </export>
      <export id="EscotNumber1" class="org.escot.EscotNumber">
        <property name="value" value="0.0"/>
        <property name="name" value="radians1"/>
      </export>
      <export id="EscotString0" class="org.escot.EscotString">
        <property name="value" value="Welcome to pilot school!"/>
        <property name="name" value="pilotMsg1"/>
      </export>
      <importer id="NumberImporter0" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="degrees1"/>
      </importer>
      <importer id="NumberImporter1" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="coptery1"/>
      </importer>
      <importer id="ActionImporter0" class="org.escot.ActionImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="doMove"/>
      </importer>
      <importer id="NumberImporter2" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="moveDist1"/>
      </importer>
      <importer id="NumberImporter3" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="copterx1"/>
      </importer>
      <importer id="ActionImporter1" class="org.escot.ActionImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="doReset"/>
      </importer>
      <importer id="NumberImporter4" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="distLimit1"/>
      </importer>
      <![CDATA[function degrees1Changed() {
	radians1.value = (degrees1.value/180) * 3.14159;
}

totalDist1.value = 0
destx1 = new EscotNumber()
destx1.value = 6.3
desty1 = new EscotNumber()
desty1.value = 2
destsize1 = new EscotNumber()
destsize1.value = 0.5
destReached1 = new EscotNumber()
destReached1.value = 0

pilotMsg1.value = "Welcome to pilot training!"

function ResetPerformed() {
	doReset.perform()
	totalDist1.value = 0
	pilotMsg1.value = ""
	destReached1.value = 0
}

function FlyPerformed() {
	if (moveDist1.value > distLimit1.value || moveDist1.value < -distLimit1.value)
		pilotMsg1.value = "You don't have enough fuel to go that far. Try again."
	else {
		pilotMsg1.value = ""
		totalDist1.value = totalDist1.value + moveDist1.value
		doMove.perform()
	}
}

function copterx1Changed() {
	if (destReached1.value == 0 && copterx1.value > destx1.value - destsize1.value && copterx1.value < destx1.value + destsize1.value && coptery1.value > desty1.value - destsize1.value && coptery1.value < desty1.value + destsize1.value) {
		if (totalDist1.value > 7)
			pilotMsg1.value = "You traveled " + totalDist1.value +" miles. See if you can make the trip in 7 miles or less."
		else
			pilotMsg1.value = "You made it in " + totalDist1.value + " miles! Go to page 2."
		destReached1.value = 1
	}
}

function coptery1Changed() {
	if (destReached1.value == 0 && copterx1.value > destx1.value - destsize1.value && copterx1.value < destx1.value + destsize1.value && coptery1.value > desty1.value - destsize1.value && coptery1.value < desty1.value + destsize1.value) {
		if (totalDist1.value > 7)
			pilotMsg1.value = "You traveled " + totalDist1.value +" miles. See if you can make the trip in 7 miles or less."
		else
			pilotMsg1.value = "You made it in " + totalDist1.value + " miles! Go to page 2."
		destReached1.value = 1
	}
}
]]>
    </component>
    <component class="org.escot.demo.AppendingTextEd" position="7,7" size="252,418" visible="true" portid="AppendingTextEd-1">
      <![CDATA[Welcome to the Helicopter Rescue Team POW.  You are now in the training center! The simulation activity on this page will acquaint you with some of the skills necessary to become a licensed pilot. There are four pages total in this activity. On Page 4, you will take a qualifying exam for your pilot license.

Your job in this part of flight school is to fly the helicopter from the lift-off point to the hospital.

Try This:
1. Experiment with how the directional arrow on the compass affects the direction of the helicopter.

2. See if you can figure out how far it is from one concentric circle to the next.

3. Fly directly from lift-off to the hospital.

The Flight Instructor will give you a message in the yellow box when you can go on to the next page.
]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,255"/>
      <property name="font" value="Application,Application,0,10"/>
      <property name="editable" value="false"/>
    </component>
    <component class="org.escot.demo.StringView" position="263,411" size="379,13" visible="true" portid="StringView-1">
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,200,0"/>
      <property name="font" value="SansSerif,SansSerif,0,10"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="321,256" size="146,17" visible="true" portid="NumberEntry-5">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="Distance (miles)"/>
      <property name="value" value="1.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="org.escot.demo.ButtonPanel" position="414,328" size="73,66" visible="true" portid="ButtonPanel-1">
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="227,500" size="154,17" visible="false" portid="NumberEntry-10">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="distance limit"/>
      <property name="value" value="10.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="529,336" size="55,17" visible="true" portid="NumberEntry-11">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value=""/>
      <property name="value" value="64.44969827381037"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-5" name="number"/>
      <to portid="JavaScript-1" name="moveDist1"/>
      <to portid="SketchpadBean2-1" name="StepsToMove = "/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-2" name="Angle = "/>
      <to portid="NumberEntry-2" name="number"/>
      <to portid="JavaScript-1" name="degrees1"/>
      <to portid="NumberEntry-11" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="pilotMsg1"/>
      <to portid="StringView-1" name="StringView"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Fly"/>
      <to portid="ButtonPanel-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Reset"/>
      <to portid="ButtonPanel-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="radians1"/>
      <to portid="NumberEntry-1" name="number"/>
      <to portid="SketchpadBean2-1" name="Heading = "/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="Move"/>
      <to portid="JavaScript-1" name="doMove"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="JumpHome"/>
      <to portid="JavaScript-1" name="doReset"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-10" name="number"/>
      <to portid="JavaScript-1" name="distLimit1"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="x[Copter] = "/>
      <to portid="JavaScript-1" name="copterx1"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="y[Copter] = "/>
      <to portid="JavaScript-1" name="coptery1"/>
    </wire>
  </page>
  <page name="Part II: Simple Flight Test">
    <component class="org.escot.demo.AppendingTextEd" position="5,5" size="256,289" visible="true" portid="TextEditor-1">
      <![CDATA[Welcome to your Level I flight test. For this test, you need to be able to input a direction and a distance which will get you from the lift-off point to the hospital. The compass is provided to you as a tool, BUT IT IS DISCONNECTED, so you must input the direction directly into the heading box.

You need to make it to the hospital in one run. The Flight Instructor will let you know when you are ready to move on to the next page.  Good Luck.
]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,255"/>
      <property name="font" value="Application,Application,0,10"/>
      <property name="editable" value="false"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="59,544" size="158,17" visible="false" portid="NumberEntry-1">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="Heading (rads)"/>
      <property name="value" value="0.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="false"/>
    </component>
    <component class="SketchpadBean2" position="489,254" size="152,151" visible="true" portid="SketchpadBean2-2">
 
 {1} Point(78,16)[hidden];
 
 {2} FixedPoint(78,74);
 
 {3} Segment(1,2)[hidden,black];
 
 {4} Circle(2,1)[black];
 
 {5} Point on object(4,-0.44593689);
 
 {6} Angle(5,2,1,20,259,'Angle = ')[hidden,black];
 
 {7} Angle(1,2,5,20,230,'ReverseAngle = ')[hidden,black];
 
 {8} Segment(5,2)[hidden,black];
 
 {9} Dilation(5,2,0.89999998)[hidden];
 
 {10} Dilation(9,2,0.69999999)[hidden];
 
 {11} Segment(9,2)[black];
 
 {12} Segment(9,10)[hidden,black];
 
 {13} Perpendicular(8,10)[hidden,black];
 
 {14} Midpoint(12)[hidden];
 
 {15} Circle(10,14)[hidden,black];
 
 {16} Segment(10,14)[black];
 
 {17} Intersect1(13,15)[hidden];
 
 {18} Intersect2(13,15)[hidden];
 
 {19} Midpoint(16)[hidden];
 
 {20} Polygon(17,9,18,19)[black];
 
 {21} Image(0, 0, 'SnRDocs/greenCompass.gif');
 
 <customProperty name="MeasureInDegrees" value="1"/>
      <customProperty name="DirectedAngles" value="1"/>
      <property name="SketchBackColor" value="200,200,200"/>
    </component>
    <component class="SketchpadBean2" position="254,309" size="151,114" visible="true" portid="SketchpadBean2-3">
 {1} Image(0, 0, 'SnRDocs/helipilot_small.jpg');
 <customProperty name="MeasureInDegrees" value="1"/>
      <customProperty name="DirectedAngles" value="1"/>
      <property name="SketchBackColor" value="200,200,200"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="319,281" size="158,17" visible="true" portid="NumberEntry-2">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value="Heading (degrees)"/>
      <property name="value" value="0.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="SketchpadBean2" position="269,5" size="363,242" visible="true" portid="SketchpadBean2-1">
 
 {1} Point(9,379)[hidden,label('LatLongOrigin')];
 
 {2} Point(125,164)[hidden];
 
 {3} Point(171,166)[hidden];
 
 {4} Point(92,217);
 
 {5} Point(129,482);
 
 {6} Point(152,482);
 
 {7} Point(110,445);
 
 {8} Point(157,444);
 
 {9} Point(280,160)[hidden];
 
 {10} Point(423,160)[hidden];
 
 {11} Point(92,217)[label('Lift Off')];
 
 {12} Point(22,339)[hidden,label('LatLongOrigin')];
 
 {13} MoveButton(207,527,0,'JumpHome')(11,4)[black];
 
 {14} Circle(2,3)[hidden,black];
 
 {15} Segment(6,5)[black];
 
 {16} Translation(4,0.00000000,28.34645653)[hidden];
 
 {17} Segment(8,7)[black];
 
 {18} Segment(10,9)[hidden,black];
 
 {19} ShowButton(82,519,'ShowHome')(11)[black];
 
 {20} HideButton(91,491,'HideHome')(11)[black];
 
 {21} Perpendicular(17,1)[hidden,black];
 
 {22} Parallel(17,1)[hidden,black];
 
 {23} Circle by radius(11,17)[hidden,black];
 
 {24} Point on object(14,-1.57079633)[hidden];
 
 {25} Point on object(14,-2.29031307)[hidden,label('D')];
 
 {26} Length(15,315,192,'Length(Segment RotorDiameter) = ')[hidden,black];
 
 {27} Length(17,211,467,'MoveStepSize = ')[black];
 
 {28} Point on object(18,0.92333752)[hidden];
 
 {29} UnitCircle(23)[hidden,black];
 
 {30} Segment(24,2)[hidden,black];
 
 {31} Segment(25,2)[hidden,black];
 
 {32} Parameter(0.0,10,10,'Heading = ')[hidden,black];
 
 {33} Parameter(1.00,10,10,'StepsToMove = ')[hidden,black];
 
 {34} Translation/FixedAngle/MarkedDistance(4,27,0.00000000)[hidden];
 
 {35} Translation/FixedAngle/MarkedDistance(12,27,0.00000000)[hidden];
 
 {36} Coordinates(4,29,219,496,'Coordinate(Point Copter): ')[hidden,black];
 
 {37} AxisY(29)[hidden,black];
 
 {38} AxisX(29)[hidden,black];
 
 {39} Calculate(117,380,'= ','3.1415927410 2.0000000000 /A-')(32)[hidden,black];
 
 {40} Calculate(63,417,'MoveStepSize*StepsToMove = ','AB*')(27,33)[hidden,black];
 
 {41} Translation/FixedAngle/MarkedDistance(34,27,0.00000000)[hidden];
 
 {42} Circle(4,34)[hidden,color(128,128,128)];
 
 {43} Line(12,35)[hidden,color(128,128,128)];
 
 {44} Circle(12,35)[hidden,color(128,128,128)];
 
 {45} Calculate(219,588,'y[Copter] = ','#A2')(36)[black];
 
 {46} Calculate(216,614,'x[Copter] = ','#A1')(36)[black];
 
 {47} Translation/MarkedAngle/MarkedDistance(4,39,40)[hidden];
 
 {48} Translation/MarkedAngle/MarkedDistance(4,39,26)[hidden];
 
 {49} Translation/FixedAngle/MarkedDistance(41,27,0.00000000)[hidden];
 
 {50} Circle(4,41)[hidden,color(128,128,128)];
 
 {51} Perpendicular(43,12)[hidden,color(128,128,128)];
 
 {52} Perpendicular(43,35)[hidden,color(128,128,128)];
 
 {53} MoveButton(216,542,3,'Move')(47,4)[black];
 
 {54} Circle(48,4)[hidden,black];
 
 {55} Segment(48,4)[hidden,black];
 
 {56} Translation(48,0.00000000,20.00000000)[hidden];
 
 {57} Translation/FixedAngle/MarkedDistance(49,27,0.00000000)[hidden];
 
 {58} Circle(4,49)[hidden,color(128,128,128)];
 
 {59} VectorTranslation(52,12,35)[hidden,color(128,128,128)];
 
 {60} Intersect2(51,44)[hidden];
 
 {61} Point on object(54,2.65840021)[hidden];
 
 {62} Perpendicular(55,4)[hidden,black];
 
 {63} Midpoint(55)[hidden];
 
 {64} Translation(56,0.00000000,-20.00000000)[hidden,traced];
 
 {65} Translation/FixedAngle/MarkedDistance(57,27,0.00000000)[hidden];
 
 {66} Circle(4,57)[hidden,color(128,128,128)];
 
 {67} VectorTranslation(59,12,35)[hidden,color(128,128,128)];
 
 {68} VectorTranslation(43,12,60)[hidden,color(128,128,128)];
 
 {69} Rotation(61,48,1.57079637)[hidden];
 
 {70} Rotation(61,48,0.34906584)[hidden];
 
 {71} AnimateButton(207,503,'SpinRotors')(61,54)(5)(0)(1)[black,auto];
 
 {72} Reflection(48,62)[hidden];
 
 {73} Circle(63,4)[hidden,black];
 
 {74} VectorTranslation(62,4,63)[hidden,black];
 
 {75} ShowButton(93,576,'ShowTrace')(64)[black];
 
 {76} HideButton(91,543,'HideTrace')(64)[black];
 
 {77} Circle(4,65)[hidden,color(128,128,128)];
 
 {78} VectorTranslation(67,12,35)[hidden,color(128,128,128)];
 
 {79} VectorTranslation(68,12,60)[hidden,color(128,128,128)];
 
 {80} Rotation(69,48,1.57079637)[hidden];
 
 {81} Rotation(69,48,0.34906584)[hidden];
 
 {82} Polygon(70,61,48)[red];
 
 {83} Intersect2(74,73)[hidden];
 
 {84} Intersect1(74,73)[hidden];
 
 {85} ShowButton(374,483,'ShowIsobars')(42,50,58,66,77)[black,auto];
 
 {86} HideButton(374,507,'HideIsobars')(42,50,58,66,77)[black];
 
 {87} VectorTranslation(78,12,35)[hidden,color(128,128,128)];
 
 {88} VectorTranslation(79,12,60)[hidden,color(128,128,128)];
 
 {89} Rotation(80,48,1.57079637)[hidden];
 
 {90} Rotation(80,48,0.34906584)[hidden];
 
 {91} Polygon(81,69,48)[red];
 
 {92} Polygon(48,84,72,83)[red];
 
 {93} VectorTranslation(87,12,35)[hidden,color(128,128,128)];
 
 {94} VectorTranslation(88,12,60)[hidden,color(128,128,128)];
 
 {95} Rotation(89,48,0.34906584)[hidden];
 
 {96} Polygon(90,80,48)[red];
 
 {97} VectorTranslation(93,12,35)[hidden,color(128,128,128)];
 
 {98} VectorTranslation(94,12,60)[hidden,color(128,128,128)];
 
 {99} Polygon(89,95,48)[red];
 
 {100} VectorTranslation(97,12,35)[hidden,color(128,128,128)];
 
 {101} VectorTranslation(98,12,60)[hidden,color(128,128,128)];
 
 {102} VectorTranslation(101,12,60)[hidden,color(128,128,128)];
 
 {103} ShowButton(374,531,'ShowLatLong')(43,51,52,59,67,78,87,93,97,100,68,79,88,94,98,101,102)[black];
 
 {104} HideButton(374,555,'HideLatLong')(43,51,52,59,67,78,87,93,97,100,68,79,88,94,98,101,102)[black];
 
 Image(0, 0, 'SnRDocs/sfo2.gif');
 
 <customProperty name="MeasureInDegrees" value="1"/>
      <customProperty name="DirectedAngles" value="1"/>
      <property name="SketchBackColor" value="200,200,200"/>
    </component>
    <component class="com.sri.escot.javascript.JavaScript" position="62,491" size="73,23" visible="false" portid="JavaScript-1">
      <export id="EscotString0" class="org.escot.EscotString">
        <property name="value" value=""/>
        <property name="name" value="logEntry2"/>
      </export>
      <export id="EscotAction0" class="org.escot.EscotAction">
        <property name="enabled" value="true"/>
        <property name="name" value="Reset"/>
      </export>
      <export id="EscotString1" class="org.escot.EscotString">
        <property name="value" value="Welcome to pilot school!"/>
        <property name="name" value="pilotMsg2"/>
      </export>
      <export id="EscotNumber0" class="org.escot.EscotNumber">
        <property name="value" value="0.0"/>
        <property name="name" value="totalDist2"/>
      </export>
      <export id="EscotNumber1" class="org.escot.EscotNumber">
        <property name="value" value="0.0"/>
        <property name="name" value="radians2"/>
      </export>
      <export id="EscotAction1" class="org.escot.EscotAction">
        <property name="enabled" value="true"/>
        <property name="name" value="Fly"/>
      </export>
      <importer id="NumberImporter0" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="distLimit2"/>
      </importer>
      <importer id="ActionImporter0" class="org.escot.ActionImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="doMove2"/>
      </importer>
      <importer id="NumberImporter1" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="coptery2"/>
      </importer>
      <importer id="NumberImporter2" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="degrees2"/>
      </importer>
      <importer id="NumberImporter3" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="moveDist2"/>
      </importer>
      <importer id="ActionImporter1" class="org.escot.ActionImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="doReset"/>
      </importer>
      <importer id="NumberImporter4" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="copterx2"/>
      </importer>
      <![CDATA[function degrees2Changed() {
	radians2.value = (degrees2.value/180) * 3.14159;
}

var flown = 0
totalDist2.value = 0
destx2 = new EscotNumber()
destx2.value = 3
desty2 = new EscotNumber()
desty2.value = 4.1
destsize2 = new EscotNumber()
destsize2.value = 0.5
destReached2 = new EscotNumber()
destReached2.value = 0

pilotMsg2.value = "Your mission: fly to the hospital in one hop."

function ResetPerformed() {
	doReset.perform()
	totalDist2.value = 0
	pilotMsg2.value = ""
	destReached2.value = 0
	flown = 0
}

function FlyPerformed() {
	pilotMsg2.value = ""
	if (flown == 1) {
		pilotMsg2.value = "Hit Reset before making another attempt."
	}
	else {
		if (moveDist2.value > distLimit2.value || moveDist2.value < -distLimit2.value) {
			pilotMsg2.value = "You don't have enough fuel to go that far. Try again."
		}
		else {
			pilotMsg2.value = ""
			totalDist2.value = totalDist2.value + moveDist2.value
			doMove2.perform()
			flown = 1
		}
	}
}

function copterx2Changed() {
	if (destReached2.value == 0 && copterx2.value > destx2.value - destsize2.value && copterx2.value < destx2.value + destsize2.value && coptery2.value > desty2.value - destsize2.value && coptery2.value < desty2.value + destsize2.value) {
		if (totalDist2.value > 7)
			pilotMsg2.value = "You traveled " + totalDist2.value +" miles. See if you can make the trip in 7 miles or less."
		else
			pilotMsg2.value = "Congratulations, you made it! Go to the next page."
		destReached2.value = 1
	}
}

function coptery2Changed() {
	if (destReached2.value == 0 && copterx2.value > destx2.value - destsize2.value && copterx2.value < destx2.value + destsize2.value && coptery2.value > desty2.value - destsize2.value && coptery2.value < desty2.value + destsize2.value) {
		if (totalDist2.value > 7)
			pilotMsg2.value = "You traveled " + totalDist2.value +" miles. See if you can make the trip in 7 miles or less."
		else
			pilotMsg2.value = "Congratulations, you made it! Go to the next page."
		destReached2.value = 1
	}
}
]]>
    </component>
    <component class="org.escot.demo.StringView" position="254,410" size="379,13" visible="true" portid="StringView-1">
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,200,0"/>
      <property name="font" value="SansSerif,SansSerif,0,10"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="321,258" size="146,17" visible="true" portid="NumberEntry-5">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="Distance (miles)"/>
      <property name="value" value="1.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="org.escot.demo.ButtonPanel" position="411,309" size="70,61" visible="true" portid="ButtonPanel-1">
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="262,520" size="154,17" visible="false" portid="NumberEntry-10">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="distance limit"/>
      <property name="value" value="10.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="541,352" size="55,17" visible="true" portid="NumberEntry-11">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value=""/>
      <property name="value" value="64.44969827381037"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="296,487" size="88,17" visible="false" portid="NumberEntry-12">
      <property name="maximumDecimalPlaces" value="1"/>
      <property name="label" value="x"/>
      <property name="value" value="0.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="293,462" size="55,17" visible="false" portid="NumberEntry-13">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="y"/>
      <property name="value" value="0.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-5" name="number"/>
      <to portid="JavaScript-1" name="moveDist2"/>
      <to portid="SketchpadBean2-1" name="StepsToMove = "/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-2" name="Angle = "/>
      <to portid="NumberEntry-11" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="pilotMsg2"/>
      <to portid="StringView-1" name="StringView"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Fly"/>
      <to portid="ButtonPanel-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Reset"/>
      <to portid="ButtonPanel-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="radians2"/>
      <to portid="NumberEntry-1" name="number"/>
      <to portid="SketchpadBean2-1" name="Heading = "/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-10" name="number"/>
      <to portid="JavaScript-1" name="distLimit2"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-2" name="number"/>
      <to portid="JavaScript-1" name="degrees2"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="JumpHome"/>
      <to portid="JavaScript-1" name="doReset"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="Move"/>
      <to portid="JavaScript-1" name="doMove2"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="x[Copter] = "/>
      <to portid="NumberEntry-12" name="number"/>
      <to portid="JavaScript-1" name="copterx2"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="y[Copter] = "/>
      <to portid="NumberEntry-13" name="number"/>
      <to portid="JavaScript-1" name="coptery2"/>
    </wire>
  </page>
  <page name="Part III: Field Practice">
    <component class="org.escot.demo.AppendingTextEd" position="5,5" size="259,281" visible="true" portid="TextEditor-1">
      <![CDATA[Congratulations on getting your Level I certification! You are a certified pilot now, and you are ready to practice patient transport in the field. Your goal is to fly to the central hospital using the shortest possible route.

There is a dangerous volcano between you and the hospital, and the dispatcher has instructed you to fly around it. This means that you need to file a two step flight plan to get to the hospital. First fly from your lift-off point to the green way point (upper left). Then fly from the way point to the hospital.

You can use the Flight Log to keep track of the legs of your trip. Notice that each time you hit the Fly button, the heading and distance is recorded in the flight log. You can hit Reset to start a new flight plan. When you have successfully transported a patient the dispatcher will let you know that you can continue.
]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,255"/>
      <property name="font" value="Application,Application,0,10"/>
      <property name="editable" value="false"/>
    </component>
    <component class="SketchpadBean2" position="489,254" size="152,151" visible="true" portid="SketchpadBean2-2">
 
 {1} Point(78,16)[hidden];
 
 {2} FixedPoint(78,74);
 
 {3} Segment(1,2)[hidden,black];
 
 {4} Circle(2,1)[black];
 
 {5} Point on object(4,-0.44593689);
 
 {6} Angle(5,2,1,20,259,'Angle = ')[hidden,black];
 
 {7} Angle(1,2,5,20,230,'ReverseAngle = ')[hidden,black];
 
 {8} Segment(5,2)[hidden,black];
 
 {9} Dilation(5,2,0.89999998)[hidden];
 
 {10} Dilation(9,2,0.69999999)[hidden];
 
 {11} Segment(9,2)[black];
 
 {12} Segment(9,10)[hidden,black];
 
 {13} Perpendicular(8,10)[hidden,black];
 
 {14} Midpoint(12)[hidden];
 
 {15} Circle(10,14)[hidden,black];
 
 {16} Segment(10,14)[black];
 
 {17} Intersect1(13,15)[hidden];
 
 {18} Intersect2(13,15)[hidden];
 
 {19} Midpoint(16)[hidden];
 
 {20} Polygon(17,9,18,19)[black];
 
 {21} Image(0, 0, 'SnRDocs/greenCompass.gif');
 
 <customProperty name="MeasureInDegrees" value="1"/>
      <customProperty name="DirectedAngles" value="1"/>
      <property name="SketchBackColor" value="200,200,200"/>
    </component>
    <component class="SketchpadBean2" position="255,303" size="151,114" visible="true" portid="SketchpadBean2-3">
 {1} Image(0, 0, 'SnRDocs/helipilot_small.jpg');
 <customProperty name="MeasureInDegrees" value="1"/>
      <customProperty name="DirectedAngles" value="1"/>
      <property name="SketchBackColor" value="200,200,200"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="319,281" size="158,17" visible="true" portid="NumberEntry-2">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value="Heading (degrees)"/>
      <property name="value" value="0.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="SketchpadBean2" position="273,5" size="363,242" visible="true" portid="SketchpadBean2-1">
 
 {1} Point(9,379)[hidden,label('LatLongOrigin')];
 
 {2} Point(125,164)[hidden];
 
 {3} Point(171,166)[hidden];
 
 {4} Point(305,17);
 
 {5} Point(129,482);
 
 {6} Point(152,482);
 
 {7} Point(110,445);
 
 {8} Point(157,444);
 
 {9} Point(280,160)[hidden];
 
 {10} Point(423,160)[hidden];
 
 {11} Point(305,17)[label('Lift Off')];
 
 {12} Point(22,339)[hidden,label('LatLongOrigin')];
 
 {13} MoveButton(207,527,0,'JumpHome')(11,4)[black];
 
 {14} Circle(2,3)[hidden,black];
 
 {15} Segment(6,5)[black];
 
 {16} Translation(4,0.00000000,28.34645653)[hidden];
 
 {17} Segment(8,7)[black];
 
 {18} Segment(10,9)[hidden,black];
 
 {19} ShowButton(82,519,'ShowHome')(11)[black];
 
 {20} HideButton(91,491,'HideHome')(11)[black];
 
 {21} Perpendicular(17,1)[hidden,black];
 
 {22} Parallel(17,1)[hidden,black];
 
 {23} Circle by radius(11,17)[hidden,black];
 
 {24} Point on object(14,-1.57079633)[hidden];
 
 {25} Point on object(14,-2.29031307)[hidden,label('D')];
 
 {26} Length(15,315,192,'Length(Segment RotorDiameter) = ')[hidden,black];
 
 {27} Length(17,211,467,'MoveStepSize = ')[black];
 
 {28} Point on object(18,0.92333752)[hidden];
 
 {29} UnitCircle(23)[hidden,black];
 
 {30} Segment(24,2)[hidden,black];
 
 {31} Segment(25,2)[hidden,black];
 
 {32} Parameter(0.0,10,10,'Heading = ')[hidden,black];
 
 {33} Parameter(1.00,10,10,'StepsToMove = ')[hidden,black];
 
 {34} Translation/FixedAngle/MarkedDistance(4,27,0.00000000)[hidden];
 
 {35} Translation/FixedAngle/MarkedDistance(12,27,0.00000000)[hidden];
 
 {36} Coordinates(4,29,219,496,'Coordinate(Point Copter): ')[hidden,black];
 
 {37} AxisY(29)[hidden,black];
 
 {38} AxisX(29)[hidden,black];
 
 {39} Calculate(117,380,'= ','3.1415927410 2.0000000000 /A-')(32)[hidden,black];
 
 {40} Calculate(63,417,'MoveStepSize*StepsToMove = ','AB*')(27,33)[hidden,black];
 
 {41} Translation/FixedAngle/MarkedDistance(34,27,0.00000000)[hidden];
 
 {42} Circle(4,34)[hidden,white];
 
 {43} Line(12,35)[hidden,color(128,128,128)];
 
 {44} Circle(12,35)[hidden,white];
 
 {45} Calculate(219,588,'y[Copter] = ','#A2')(36)[black];
 
 {46} Calculate(216,614,'x[Copter] = ','#A1')(36)[black];
 
 {47} Translation/MarkedAngle/MarkedDistance(4,39,40)[hidden];
 
 {48} Translation/MarkedAngle/MarkedDistance(4,39,26)[hidden];
 
 {49} Translation/FixedAngle/MarkedDistance(41,27,0.00000000)[hidden];
 
 {50} Circle(4,41)[hidden,white];
 
 {51} Perpendicular(43,12)[hidden,color(128,128,128)];
 
 {52} Perpendicular(43,35)[hidden,color(128,128,128)];
 
 {53} MoveButton(216,542,3,'Move')(47,4)[black];
 
 {54} Circle(48,4)[hidden,black];
 
 {55} Segment(48,4)[hidden,black];
 
 {56} Translation(48,0.00000000,20.00000000)[hidden];
 
 {57} Translation/FixedAngle/MarkedDistance(49,27,0.00000000)[hidden];
 
 {58} Circle(4,49)[hidden,white];
 
 {59} VectorTranslation(52,12,35)[hidden,color(128,128,128)];
 
 {60} Intersect2(51,44)[hidden];
 
 {61} Point on object(54,2.65840021)[hidden];
 
 {62} Perpendicular(55,4)[hidden,black];
 
 {63} Midpoint(55)[hidden];
 
 {64} Translation(56,0.00000000,-20.00000000)[hidden,traced];
 
 {65} Translation/FixedAngle/MarkedDistance(57,27,0.00000000)[hidden];
 
 {66} Circle(4,57)[hidden,white];
 
 {67} VectorTranslation(59,12,35)[hidden,color(128,128,128)];
 
 {68} VectorTranslation(43,12,60)[hidden,color(128,128,128)];
 
 {69} Rotation(61,48,1.57079637)[hidden];
 
 {70} Rotation(61,48,0.34906584)[hidden];
 
 {71} AnimateButton(207,503,'SpinRotors')(61,54)(5)(0)(1)[black, auto];
 
 {72} Reflection(48,62)[hidden];
 
 {73} Circle(63,4)[hidden,black];
 
 {74} VectorTranslation(62,4,63)[hidden,black];
 
 {75} ShowButton(93,576,'ShowTrace')(64)[black];
 
 {76} HideButton(91,543,'HideTrace')(64)[black];
 
 {77} Circle(4,65)[hidden,white];
 
 {78} VectorTranslation(67,12,35)[hidden,color(128,128,128)];
 
 {79} VectorTranslation(68,12,60)[hidden,color(128,128,128)];
 
 {80} Rotation(69,48,1.57079637)[hidden];
 
 {81} Rotation(69,48,0.34906584)[hidden];
 
 {82} Polygon(70,61,48)[red];
 
 {83} Intersect2(74,73)[hidden];
 
 {84} Intersect1(74,73)[hidden];
 
 {85} ShowButton(374,483,'ShowIsobars')(42,50,58,66,77)[black,auto];
 
 {86} HideButton(374,507,'HideIsobars')(42,50,58,66,77)[black];
 
 {87} VectorTranslation(78,12,35)[hidden,color(128,128,128)];
 
 {88} VectorTranslation(79,12,60)[hidden,color(128,128,128)];
 
 {89} Rotation(80,48,1.57079637)[hidden];
 
 {90} Rotation(80,48,0.34906584)[hidden];
 
 {91} Polygon(81,69,48)[red];
 
 {92} Polygon(48,84,72,83)[red];
 
 {93} VectorTranslation(87,12,35)[hidden,color(128,128,128)];
 
 {94} VectorTranslation(88,12,60)[hidden,color(128,128,128)];
 
 {95} Rotation(89,48,0.34906584)[hidden];
 
 {96} Polygon(90,80,48)[red];
 
 {97} VectorTranslation(93,12,35)[hidden,color(128,128,128)];
 
 {98} VectorTranslation(94,12,60)[hidden,color(128,128,128)];
 
 {99} Polygon(89,95,48)[red];
 
 {100} VectorTranslation(97,12,35)[hidden,color(128,128,128)];
 
 {101} VectorTranslation(98,12,60)[hidden,color(128,128,128)];
 
 {102} VectorTranslation(101,12,60)[hidden,color(128,128,128)];
 
 {103} ShowButton(374,531,'ShowLatLong')(43,51,52,59,67,78,87,93,97,100,68,79,88,94,98,101,102)[black];
 
 {104} HideButton(374,555,'HideLatLong')(43,51,52,59,67,78,87,93,97,100,68,79,88,94,98,101,102)[black];
 
 Image(0, 0, 'SnRDocs/volcano_map2.gif');
 
 <customProperty name="MeasureInDegrees" value="1"/>
      <customProperty name="DirectedAngles" value="1"/>
      <property name="SketchBackColor" value="200,200,200"/>
    </component>
    <component class="com.sri.escot.javascript.JavaScript" position="62,491" size="73,23" visible="false" portid="JavaScript-1">
      <export id="EscotNumber0" class="org.escot.EscotNumber">
        <property name="value" value="0.0"/>
        <property name="name" value="radians3"/>
      </export>
      <export id="EscotString0" class="org.escot.EscotString">
        <property name="value" value=""/>
        <property name="name" value="logEntry3"/>
      </export>
      <export id="EscotNumber1" class="org.escot.EscotNumber">
        <property name="value" value="0.0"/>
        <property name="name" value="totalDist3"/>
      </export>
      <export id="EscotString1" class="org.escot.EscotString">
        <property name="value" value="Welcome to pilot school!"/>
        <property name="name" value="pilotMsg3"/>
      </export>
      <export id="EscotAction0" class="org.escot.EscotAction">
        <property name="enabled" value="true"/>
        <property name="name" value="Fly"/>
      </export>
      <export id="EscotAction1" class="org.escot.EscotAction">
        <property name="enabled" value="true"/>
        <property name="name" value="Reset"/>
      </export>
      <importer id="NumberImporter0" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="distLimit3"/>
      </importer>
      <importer id="ActionImporter0" class="org.escot.ActionImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="doReset"/>
      </importer>
      <importer id="NumberImporter1" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="copterx3"/>
      </importer>
      <importer id="ActionImporter1" class="org.escot.ActionImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="doMove"/>
      </importer>
      <importer id="NumberImporter2" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="degrees3"/>
      </importer>
      <importer id="NumberImporter3" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="coptery3"/>
      </importer>
      <importer id="NumberImporter4" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="moveDist3"/>
      </importer>
      <![CDATA[function degrees3Changed() {
	radians3.value = (degrees3.value/180) * 3.14159;
}


var leg = 0
var plan = 0
var waypointReached = 0
totalDist3.value = 0
destx3 = new EscotNumber()
destx3.value = -4.8
desty3 = new EscotNumber()
desty3.value = -4
destx32 = new EscotNumber()
destx32.value = -5.8
desty32 = new EscotNumber()
desty32.value = -0.4
destsize3 = new EscotNumber()
destsize3.value = 0.5
destReached3 = new EscotNumber()
destReached3.value = 0

pilotMsg3.value = "Your mission: fly to the hospital but avoid the volcano."

function ResetPerformed() {
	doReset.perform()
	totalDist3.value = 0
	pilotMsg3.value = ""
	destReached3.value = 0
	waypointReached = 0
	leg = 0
}

function FlyPerformed() {
	if (moveDist3.value > distLimit3.value || moveDist3.value < -distLimit3.value)
		pilotMsg3.value = "You don't have enough fuel to go that far. Try again."
	else {
		pilotMsg3.value = ""
		totalDist3.value = totalDist3.value + moveDist3.value
		doMove.perform()

		if (leg == 0) {
			plan++
			logEntry3.value = " "
			logEntry3.value = "Plan " + plan
		}
		leg++
		logEntry3.value = "Leg " + leg + ": " + moveDist3.value + " miles, " + degrees3.value + " degrees."
		logEntry3.value = ""
	}
}

function copterx3Changed() {
	if (waypointReached == 0) {
		if (copterx3.value > destx32.value - destsize3.value && copterx3.value < destx32.value + destsize3.value && coptery3.value > desty32.value - destsize3.value && coptery3.value < desty32.value + destsize3.value) {
			pilotMsg3.value = "You reached the way-point. Continue on to the hospital."
			waypointReached = 1
		}
	}
	else if (destReached3.value == 0) {
		if (copterx3.value > destx3.value - destsize3.value && copterx3.value < destx3.value + destsize3.value && coptery3.value > desty3.value - destsize3.value && coptery3.value < desty3.value + destsize3.value) {
			if (totalDist3.value > 10)
				pilotMsg3.value = "You traveled " + totalDist3.value +" miles. See if you can make the trip in 10 miles or less."
			else
				pilotMsg3.value = "You made it in " + totalDist3.value + " miles! Go to page 4."
			destReached3.value = 1
		}
	}
}
function coptery3Changed() {
	if (waypointReached == 0) {
		if (copterx3.value > destx32.value - destsize3.value && copterx3.value < destx32.value + destsize3.value && coptery3.value > desty32.value - destsize3.value && coptery3.value < desty32.value + destsize3.value) {
			pilotMsg3.value = "You reached the way-point. Continue on to the hospital."
			waypointReached = 1
		}
	}
	else if (destReached3.value == 0) {
		if (copterx3.value > destx3.value - destsize3.value && copterx3.value < destx3.value + destsize3.value && coptery3.value > desty3.value - destsize3.value && coptery3.value < desty3.value + destsize3.value) {
			if (totalDist3.value > 10)
				pilotMsg3.value = "You traveled " + totalDist3.value +" miles. See if you can make the trip in 10 miles or less."
			else
				pilotMsg3.value = "You made it in " + totalDist3.value + " miles! Go to page 4."
			destReached3.value = 1
		}
	}
}
]]>
    </component>
    <component class="org.escot.demo.StringView" position="254,410" size="379,13" visible="true" portid="StringView-1">
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,200,0"/>
      <property name="font" value="SansSerif,SansSerif,0,10"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="321,258" size="146,17" visible="true" portid="NumberEntry-5">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="Distance (miles)"/>
      <property name="value" value="1.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="org.escot.demo.ButtonPanel" position="410,309" size="70,61" visible="true" portid="ButtonPanel-1">
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="168,522" size="154,17" visible="false" portid="NumberEntry-10">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="distance limit"/>
      <property name="value" value="10.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="541,352" size="55,17" visible="true" portid="NumberEntry-11">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value=""/>
      <property name="value" value="64.44969827381037"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="org.escot.demo.AppendingTextEd" position="7,290" size="236,134" visible="true" portid="AppendingTextEd-1">
      <![CDATA[Flight Log
]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,255"/>
      <property name="font" value="Application,Application,0,10"/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="188,488" size="70,17" visible="false" portid="NumberEntry-1">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="x"/>
      <property name="value" value="0.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="183,460" size="76,17" visible="false" portid="NumberEntry-13">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="y"/>
      <property name="value" value="0.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-5" name="number"/>
      <to portid="JavaScript-1" name="moveDist3"/>
      <to portid="SketchpadBean2-1" name="StepsToMove = "/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-2" name="Angle = "/>
      <to portid="NumberEntry-11" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="pilotMsg3"/>
      <to portid="StringView-1" name="StringView"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Fly"/>
      <to portid="ButtonPanel-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Reset"/>
      <to portid="ButtonPanel-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="radians3"/>
      <to portid="SketchpadBean2-1" name="Heading = "/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-10" name="number"/>
      <to portid="JavaScript-1" name="distLimit3"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-2" name="number"/>
      <to portid="JavaScript-1" name="degrees3"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="JumpHome"/>
      <to portid="JavaScript-1" name="doReset"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="Move"/>
      <to portid="JavaScript-1" name="doMove"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="logEntry3"/>
      <to portid="AppendingTextEd-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="x[Copter] = "/>
      <to portid="NumberEntry-1" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-1" name="number"/>
      <to portid="JavaScript-1" name="copterx3"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="y[Copter] = "/>
      <to portid="NumberEntry-13" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-13" name="number"/>
      <to portid="JavaScript-1" name="coptery3"/>
    </wire>
  </page>
  <page name="Part IV: License Qualifying Exam">
    <component class="org.escot.demo.AppendingTextEd" position="6,10" size="263,108" visible="true" portid="TextEditor-1">
      <![CDATA[This is the final exam for your full pilot license.  For this activity, you are now the dispatcher and your job is to assist and direct the flights coming in and out of the hospital. Please answer the questions in the text box below.
]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,255"/>
      <property name="font" value="Application,Application,0,10"/>
      <property name="editable" value="false"/>
    </component>
    <component class="org.escot.demo.TextEditor" answerText="true" position="6,123" size="264,273" visible="true" portid="TextEditor-2">
      <![CDATA[Remember to hit the submit button when you're done.

1. A rookie has called in and he needs a flight plan. Here is the map that shows where he is in relationship to the hospital. Use the simulation tools to create a flight plan, and write your plan here. The flight should pass over the way point to avoid the volcano, and follow the shortest possible route.

2. At the way-point, let's say that you want to turn 50 degrees right, but due to engine problems it is safer to turn left. How many degrees left should you turn to make the same change in direction as a 50 degree right turn? Please explain how you figured it out.

Bonus Question:
3. You want to travel to a destination that is at a heading of 200 degrees, but your helicopter is not allowed to fly between the headings of 180 and 270 degrees.  Can you still make the trip?  Please explain.
]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,125"/>
      <property name="font" value="Application,Application,0,10"/>
    </component>
    <component class="SketchpadBean2" position="484,233" size="152,151" visible="true" portid="SketchpadBean2-2">
 
 {1} Point(78,16)[hidden];
 
 {2} FixedPoint(78,74);
 
 {3} Segment(1,2)[hidden,black];
 
 {4} Circle(2,1)[black];
 
 {5} Point on object(4,-0.44593689);
 
 {6} Angle(5,2,1,20,259,'Angle = ')[hidden,black];
 
 {7} Angle(1,2,5,20,230,'ReverseAngle = ')[hidden,black];
 
 {8} Segment(5,2)[hidden,black];
 
 {9} Dilation(5,2,0.89999998)[hidden];
 
 {10} Dilation(9,2,0.69999999)[hidden];
 
 {11} Segment(9,2)[black];
 
 {12} Segment(9,10)[hidden,black];
 
 {13} Perpendicular(8,10)[hidden,black];
 
 {14} Midpoint(12)[hidden];
 
 {15} Circle(10,14)[hidden,black];
 
 {16} Segment(10,14)[black];
 
 {17} Intersect1(13,15)[hidden];
 
 {18} Intersect2(13,15)[hidden];
 
 {19} Midpoint(16)[hidden];
 
 {20} Polygon(17,9,18,19)[black];
 
 {21} Image(0, 0, 'SnRDocs/greenCompass.gif');
 
 <customProperty name="MeasureInDegrees" value="1"/>
      <customProperty name="DirectedAngles" value="1"/>
      <property name="SketchBackColor" value="200,200,200"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="317,255" size="158,17" visible="true" portid="NumberEntry-2">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value="Heading (degrees)"/>
      <property name="value" value="0.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="SketchpadBean2" position="273,5" size="361,222" visible="true" portid="SketchpadBean2-1">
 
 {1} Point(9,379)[hidden,label('LatLongOrigin')];
 
 {2} Point(125,164)[hidden];
 
 {3} Point(171,166)[hidden];
 
 {4} Point(335,100);
 
 {5} Point(129,482);
 
 {6} Point(152,482);
 
 {7} Point(110,445);
 
 {8} Point(157,444);
 
 {9} Point(280,160)[hidden];
 
 {10} Point(423,160)[hidden];
 
 {11} Point(335,100)[label('Lift Off')];
 
 {12} Point(22,339)[hidden,label('LatLongOrigin')];
 
 {13} MoveButton(207,527,0,'JumpHome')(11,4)[black];
 
 {14} Circle(2,3)[hidden,black];
 
 {15} Segment(6,5)[black];
 
 {16} Translation(4,0.00000000,28.34645653)[hidden];
 
 {17} Segment(8,7)[black];
 
 {18} Segment(10,9)[hidden,black];
 
 {19} ShowButton(82,519,'ShowHome')(11)[black];
 
 {20} HideButton(91,491,'HideHome')(11)[black];
 
 {21} Perpendicular(17,1)[hidden,black];
 
 {22} Parallel(17,1)[hidden,black];
 
 {23} Circle by radius(11,17)[hidden,black];
 
 {24} Point on object(14,-1.57079633)[hidden];
 
 {25} Point on object(14,-2.29031307)[hidden,label('D')];
 
 {26} Length(15,315,192,'Length(Segment RotorDiameter) = ')[hidden,black];
 
 {27} Length(17,211,467,'MoveStepSize = ')[black];
 
 {28} Point on object(18,0.92333752)[hidden];
 
 {29} UnitCircle(23)[hidden,black];
 
 {30} Segment(24,2)[hidden,black];
 
 {31} Segment(25,2)[hidden,black];
 
 {32} Parameter(0.0,10,10,'Heading = ')[hidden,black];
 
 {33} Parameter(1.00,10,10,'StepsToMove = ')[hidden,black];
 
 {34} Translation/FixedAngle/MarkedDistance(4,27,0.00000000)[hidden];
 
 {35} Translation/FixedAngle/MarkedDistance(12,27,0.00000000)[hidden];
 
 {36} Coordinates(4,29,219,496,'Coordinate(Point Copter): ')[hidden,black];
 
 {37} AxisY(29)[hidden,black];
 
 {38} AxisX(29)[hidden,black];
 
 {39} Calculate(117,380,'= ','3.1415927410 2.0000000000 /A-')(32)[hidden,black];
 
 {40} Calculate(63,417,'MoveStepSize*StepsToMove = ','AB*')(27,33)[hidden,black];
 
 {41} Translation/FixedAngle/MarkedDistance(34,27,0.00000000)[hidden];
 
 {42} Circle(4,34)[hidden,white];
 
 {43} Line(12,35)[hidden,color(128,128,128)];
 
 {44} Circle(12,35)[hidden,white];
 
 {45} Calculate(219,588,'y[Copter] = ','#A2')(36)[black];
 
 {46} Calculate(216,614,'x[Copter] = ','#A1')(36)[black];
 
 {47} Translation/MarkedAngle/MarkedDistance(4,39,40)[hidden];
 
 {48} Translation/MarkedAngle/MarkedDistance(4,39,26)[hidden];
 
 {49} Translation/FixedAngle/MarkedDistance(41,27,0.00000000)[hidden];
 
 {50} Circle(4,41)[hidden,white];
 
 {51} Perpendicular(43,12)[hidden,color(128,128,128)];
 
 {52} Perpendicular(43,35)[hidden,color(128,128,128)];
 
 {53} MoveButton(216,542,3,'Move')(47,4)[black];
 
 {54} Circle(48,4)[hidden,black];
 
 {55} Segment(48,4)[hidden,black];
 
 {56} Translation(48,0.00000000,20.00000000)[hidden];
 
 {57} Translation/FixedAngle/MarkedDistance(49,27,0.00000000)[hidden];
 
 {58} Circle(4,49)[hidden,white];
 
 {59} VectorTranslation(52,12,35)[hidden,color(128,128,128)];
 
 {60} Intersect2(51,44)[hidden];
 
 {61} Point on object(54,2.65840021)[hidden];
 
 {62} Perpendicular(55,4)[hidden,black];
 
 {63} Midpoint(55)[hidden];
 
 {64} Translation(56,0.00000000,-20.00000000)[hidden,traced];
 
 {65} Translation/FixedAngle/MarkedDistance(57,27,0.00000000)[hidden];
 
 {66} Circle(4,57)[hidden,white];
 
 {67} VectorTranslation(59,12,35)[hidden,color(128,128,128)];
 
 {68} VectorTranslation(43,12,60)[hidden,color(128,128,128)];
 
 {69} Rotation(61,48,1.57079637)[hidden];
 
 {70} Rotation(61,48,0.34906584)[hidden];
 
 {71} AnimateButton(207,503,'SpinRotors')(61,54)(5)(0)(1)[black, auto];
 
 {72} Reflection(48,62)[hidden];
 
 {73} Circle(63,4)[hidden,black];
 
 {74} VectorTranslation(62,4,63)[hidden,black];
 
 {75} ShowButton(93,576,'ShowTrace')(64)[black];
 
 {76} HideButton(91,543,'HideTrace')(64)[black];
 
 {77} Circle(4,65)[hidden,white];
 
 {78} VectorTranslation(67,12,35)[hidden,color(128,128,128)];
 
 {79} VectorTranslation(68,12,60)[hidden,color(128,128,128)];
 
 {80} Rotation(69,48,1.57079637)[hidden];
 
 {81} Rotation(69,48,0.34906584)[hidden];
 
 {82} Polygon(70,61,48)[red];
 
 {83} Intersect2(74,73)[hidden];
 
 {84} Intersect1(74,73)[hidden];
 
 {85} ShowButton(374,483,'ShowIsobars')(42,50,58,66,77)[black,auto];
 
 {86} HideButton(374,507,'HideIsobars')(42,50,58,66,77)[black];
 
 {87} VectorTranslation(78,12,35)[hidden,color(128,128,128)];
 
 {88} VectorTranslation(79,12,60)[hidden,color(128,128,128)];
 
 {89} Rotation(80,48,1.57079637)[hidden];
 
 {90} Rotation(80,48,0.34906584)[hidden];
 
 {91} Polygon(81,69,48)[red];
 
 {92} Polygon(48,84,72,83)[red];
 
 {93} VectorTranslation(87,12,35)[hidden,color(128,128,128)];
 
 {94} VectorTranslation(88,12,60)[hidden,color(128,128,128)];
 
 {95} Rotation(89,48,0.34906584)[hidden];
 
 {96} Polygon(90,80,48)[red];
 
 {97} VectorTranslation(93,12,35)[hidden,color(128,128,128)];
 
 {98} VectorTranslation(94,12,60)[hidden,color(128,128,128)];
 
 {99} Polygon(89,95,48)[red];
 
 {100} VectorTranslation(97,12,35)[hidden,color(128,128,128)];
 
 {101} VectorTranslation(98,12,60)[hidden,color(128,128,128)];
 
 {102} VectorTranslation(101,12,60)[hidden,color(128,128,128)];
 
 {103} ShowButton(374,531,'ShowLatLong')(43,51,52,59,67,78,87,93,97,100,68,79,88,94,98,101,102)[black];
 
 {104} HideButton(374,555,'HideLatLong')(43,51,52,59,67,78,87,93,97,100,68,79,88,94,98,101,102)[black];
 
 Image(0, 0, 'SnRDocs/etna2.gif');
 
 <customProperty name="MeasureInDegrees" value="1"/>
      <customProperty name="DirectedAngles" value="1"/>
      <property name="SketchBackColor" value="200,200,200"/>
    </component>
    <component class="com.sri.escot.javascript.JavaScript" position="62,491" size="73,23" visible="false" portid="JavaScript-1">
      <export id="EscotNumber0" class="org.escot.EscotNumber">
        <property name="value" value="0.0"/>
        <property name="name" value="radians4"/>
      </export>
      <export id="EscotString0" class="org.escot.EscotString">
        <property name="value" value=""/>
        <property name="name" value="logEntry4"/>
      </export>
      <export id="EscotAction0" class="org.escot.EscotAction">
        <property name="enabled" value="true"/>
        <property name="name" value="Reset"/>
      </export>
      <export id="EscotString1" class="org.escot.EscotString">
        <property name="value" value="Welcome to pilot school!"/>
        <property name="name" value="pilotMsg4"/>
      </export>
      <export id="EscotNumber1" class="org.escot.EscotNumber">
        <property name="value" value="0.0"/>
        <property name="name" value="totalDist4"/>
      </export>
      <export id="EscotAction1" class="org.escot.EscotAction">
        <property name="enabled" value="true"/>
        <property name="name" value="Fly"/>
      </export>
      <importer id="NumberImporter0" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="distLimit4"/>
      </importer>
      <importer id="NumberImporter1" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="copterx4"/>
      </importer>
      <importer id="NumberImporter2" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="degrees4"/>
      </importer>
      <importer id="NumberImporter3" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="coptery4"/>
      </importer>
      <importer id="NumberImporter4" class="org.escot.NumberImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="moveDist4"/>
      </importer>
      <importer id="ActionImporter0" class="org.escot.ActionImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="doReset"/>
      </importer>
      <importer id="ActionImporter1" class="org.escot.ActionImporter">
        <property name="maxCount" value="1"/>
        <property name="minCount" value="0"/>
        <property name="name" value="doMove"/>
      </importer>
      <![CDATA[function degrees4Changed() {
	radians4.value = (degrees4.value/180) * 3.14159;
}


var leg = 0
var plan = 0

function ResetPerformed() {
	doReset.perform()
	leg = 0
}

function FlyPerformed() {
		doMove.perform()

		if (leg == 0) {
			plan++
			logEntry4.value = " "
			logEntry4.value = "Plan " + plan
		}
		leg++
		logEntry4.value = "Leg " + leg + ": " + moveDist4.value + " miles, " + degrees4.value + " degrees."
		logEntry4.value = ""
}
]]>
    </component>
    <component class="com.sri.escot.NumberEntry" position="323,233" size="146,17" visible="true" portid="NumberEntry-5">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="Distance (miles)"/>
      <property name="value" value="1.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="org.escot.demo.ButtonPanel" position="313,285" size="143,29" visible="true" portid="ButtonPanel-1">
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="161,537" size="154,17" visible="false" portid="NumberEntry-10">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="distance limit"/>
      <property name="value" value="10.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="540,315" size="55,17" visible="true" portid="NumberEntry-11">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value=""/>
      <property name="value" value="64.44969827381037"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="org.escot.demo.AppendingTextEd" position="274,326" size="201,94" visible="true" portid="AppendingTextEd-1">
      <![CDATA[Flight Log
]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,255"/>
      <property name="font" value="Application,Application,0,10"/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="188,488" size="70,17" visible="false" portid="NumberEntry-1">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="x"/>
      <property name="value" value="0.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="183,460" size="76,17" visible="false" portid="NumberEntry-13">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="y"/>
      <property name="value" value="0.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-5" name="number"/>
      <to portid="JavaScript-1" name="moveDist4"/>
      <to portid="SketchpadBean2-1" name="StepsToMove = "/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-2" name="Angle = "/>
      <to portid="NumberEntry-11" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Fly"/>
      <to portid="ButtonPanel-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Reset"/>
      <to portid="ButtonPanel-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="radians4"/>
      <to portid="SketchpadBean2-1" name="Heading = "/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-10" name="number"/>
      <to portid="JavaScript-1" name="distLimit4"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-2" name="number"/>
      <to portid="JavaScript-1" name="degrees4"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="JumpHome"/>
      <to portid="JavaScript-1" name="doReset"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="Move"/>
      <to portid="JavaScript-1" name="doMove"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="logEntry4"/>
      <to portid="AppendingTextEd-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="x[Copter] = "/>
      <to portid="NumberEntry-1" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-1" name="number"/>
      <to portid="JavaScript-1" name="copterx4"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="y[Copter] = "/>
      <to portid="NumberEntry-13" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-13" name="number"/>
      <to portid="JavaScript-1" name="coptery4"/>
    </wire>
  </page>
</activity>


