<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd">
<X3D profile='Immersive' version='3.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' http://www.web3d.org/specifications/x3d-3.0.xsd '>
<head>
<meta name='titlecontent='CollisionCourses.x3d'/>
<meta name='descriptioncontent='Animate ship tracks showing collision by USS GREENVILLE with MV EHIME MARU. We hope that studying lessons learned this incident might help prevent future accidents.'/>
<meta name='creatorcontent='Don Brutzman and UW3303 students'/>
<meta name='createdcontent='16 May 2001'/>
<meta name='modifiedcontent='21 October 2018'/>
<meta name='referencecontent='CollisionUssGreenevilleMvEhimeMaru.html'/>
<meta name='referencecontent='CollisionUssGreenevilleMvEhimeMaru.ppt'/>
<meta name='referencecontent='UW 3303 reconstruction worklist.doc'/>
<meta name='referencecontent='CalculateTrackLegWaypoints.m'/>
<meta name='referencecontent='CalculateTrackLegWaypoints.out'/>
<meta name='referencecontent='ExcelPlottingData.txt'/>
<meta name='referencecontent='TrackOrders.xls'/>
<meta name='referencecontent='TrackCalculations.m'/>
<meta name='referencecontent='Greeneville_Track_Reconstruction.pdf'/>
<meta name='drawingcontent='popup.greeneville.size.gif'/>
<meta name='drawingcontent='10308_nat_subHAWAIIch.gif'/>
<meta name='drawingcontent=' http://www.nytimes.com/images/2001/03/08/national/010308_nat_subHAWAIIch.gif '/>
<meta name='Imagecontent='PR_030101-2.gif'/>
<meta name='Imagecontent='PR_030101-3.gif'/>
<meta name='Imagecontent='PR_030101-4.gif'/>
<meta name='referencecontent=' http://www.ntsb.gov/Pressrel/2001/010302.htm '/>
<meta name='identifiercontent=' https://savage.nps.edu/Savage/Scenarios/CollisionUssGreenevilleMvEhimeMaru/CollisionCourses.x3d '/>
<meta name='subjectcontent='3D simulation Collision Ehime Maru USS GREENEVILLE'/>
<meta name='generatorcontent='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/>
<!-- =============================== -->
<!-- Track reconstruction spreadsheet and programs -->
<meta name='referencecontent='TrackCalculations.m'/>
<meta name='referencecontent='TrackOrders.xls'/>
<!-- ================================ -->
<meta name='referencecontent=' http://www.cpf.navy.mil/cpfnews/coidownloadmain.html '/>
<!-- MV Ehime Maru and USS GREENEVILLE references -->
<meta name='referencecontent='Greeneville_Track_Reconstruction.pdf'/>
<meta name='referencecontent=' http://www.cpf.navy.mil/pages/legal/foia/Greeneville_Track_Reconstruction.pdf '/>
<meta name='referencecontent='popup.greeneville.size.gif'/>
<meta name='referencecontent=' http://www.cnn.com/interactive/world/0102/sub.size.comparison/popup.greeneville.size.gif '/>
<meta name='licensecontent=' ../../license.html'/>
</head>
<!-- -->
<Scene>
<!-- Coordinate system: origin is collision point 21°05'N 157°50'W (21.0917N, -157.8183W) y=vertical (depth negative) meters | | | x=latitude=north meters | / | / | / |/ *- - - > z=longitude meters -->
<!-- Prototype and external prototype declarations must precede scene definition. -->
<ExternProtoDeclare name='HiddenViewpointappinfo='Hidden viewpoint becomes active (binds) upon pointer selection to reveal an interesting view with an optionally label'
  url=' "../../../Savage/Tools/Animation/HiddenViewpointPrototype.x3d#HiddenViewpoint" "https://savage.nps.edu/Savage/Tools/Animation/HiddenViewpointPrototype.x3d#HiddenViewpoint" "../../../Savage/Tools/Animation/HiddenViewpointPrototype.wrl#HiddenViewpoint" "https://savage.nps.edu/Savage/Tools/Animation/HiddenViewpointPrototype.wrl#HiddenViewpoint" '>
<field name='positiontype='SFVec3faccessType='inputOutput'/>
<field name='rotationtype='SFRotationaccessType='inputOutput'/>
<field name='sensorRadiustype='SFFloataccessType='initializeOnly'/>
<field name='labeltype='MFStringaccessType='inputOutput'/>
<field name='labelOffsettype='SFVec3faccessType='inputOutput'/>
<field name='labelFontSizetype='SFFloataccessType='initializeOnly'/>
<field name='labelColortype='SFColoraccessType='inputOutput'/>
<field name='activatetype='SFBoolaccessType='inputOnly'/>
</ExternProtoDeclare>
<ExternProtoDeclare name='WaypointInterpolatorappinfo='Reads waypoints and legSpeeds/legDurations/defaultSpeed to provide a customizable position/orientation interpolator.'
  url=' "../../../Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d#WaypointInterpolator" "https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d#WaypointInterpolator" "../../../Savage/Tools/Animation/WaypointInterpolatorPrototype.wrl#WaypointInterpolator" "https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorPrototype.wrl#WaypointInterpolator" '>
<!-- Priority of use: legSpeeds (m/sec), legDurations (seconds), defaultSpeed (m/sec) -->
<field name='descriptiontype='SFStringaccessType='initializeOnly'
 appinfo='Short description of what is animated by this WaypointInterpolator.'/>

<field name='waypointstype='MFVec3faccessType='initializeOnly'
 appinfo='Waypoints being traversed with interpolation of intermediate positions and orientations.'/>

<field name='add_waypointtype='SFVec3faccessType='inputOnly'
 appinfo='Add another single waypoint to array of waypoints recalculate interpolator values.'/>

<field name='set_waypointstype='MFVec3faccessType='inputOnly'
 appinfo='Replace all waypoints recalculate interpolator values.'/>

<field name='pitchUpDownForVerticalWaypointstype='SFBoolaccessType='initializeOnly'
 appinfo='Whether to pitch child geometry (such as a vehicle) up or down to match vertical slope'/>

<field name='legSpeedstype='MFFloataccessType='initializeOnly'
 appinfo='Units m/sec. If used array lengths for legSpeeds and legDurations must be one less than number of waypoints.'/>

<field name='legDurationstype='MFFloataccessType='initializeOnly'
 appinfo='Units in seconds. If used array lengths for legSpeeds and legDurations must be one less than number of waypoints.'/>

<field name='defaultSpeedtype='SFFloataccessType='initializeOnly'
 appinfo='Units m/sec.'/>

<field name='turningRatetype='SFFloataccessType='initializeOnly'
 appinfo='turningRate (degrees/second) also determines standoff distance prior to waypoint where turn commences. If 0 turns are instantaneous.'/>

<field name='totalDurationtype='SFTimeaccessType='outputOnly'
 appinfo='Output calculation summing all leg durations, useful for setting TimeSensor cycleInterval. Units in seconds.'/>

<!-- interpolation fields -->
<field name='set_fractiontype='SFFloataccessType='inputOnly'
 appinfo='exposed PositionInterpolator and OrientationInterpolator setting'/>

<field name='position_changedtype='SFVec3faccessType='outputOnly'
 appinfo='exposed PositionInterpolator setting'/>

<field name='orientation_changedtype='SFRotationaccessType='outputOnly'
 appinfo='exposed OrientationInterpolator setting'/>

<!-- display-related fields -->
<field name='lineColortype='SFColoraccessType='inputOutput'
 appinfo='default color for non-active line segments'/>

<field name='highlightSegmentColortype='SFColoraccessType='inputOutput'
 appinfo='active segment highlight color'/>

<field name='transparencytype='SFFloataccessType='inputOutput'
 appinfo='1.0 is completely transparent, 0.0 is completely opaque.'/>

<field name='labelDisplayModetype='SFStringaccessType='initializeOnly'
 appinfo='allowed values: none; waypoints (produce labels at each waypoint); or interpolation (produce single moving label at interpolator time course speed location)'/>

<field name='heightLabeltype='SFStringaccessType='initializeOnly'
 appinfo='allowed values: altitude depth (negate Y value) none'/>

<field name='labelOffsettype='SFVec3faccessType='initializeOnly'
 appinfo='heightLabel relative location'/>

<field name='labelFontSizetype='SFFloataccessType='initializeOnly'
 appinfo='heightLabel text size'/>

<field name='labelColortype='SFColoraccessType='initializeOnly'
 appinfo='heightLabel text color'/>

<field name='traceEnabledtype='SFBoolaccessType='initializeOnly'
 appinfo='enable console output to trace script computations and prototype progress'/>

<field name='outputInitializationComputationstype='SFBoolaccessType='initializeOnly'
 appinfo='Output the number of waypoints totalDistance and totalDuration to console upon initialization'/>

<field name='verticalDropLineColortype='SFColoraccessType='inputOutput'
 appinfo='default color for vertical drop-line segments'/>

<field name='verticalDropLineTransparencytype='SFFloataccessType='inputOutput'
 appinfo='1.0 is completely transparent, 0.0 is completely opaque.'/>
</ExternProtoDeclare>
<ExternProtoDeclare name='ViewPositionOrientation'
  url=' "../../Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation" "https://savage.nps.edu/Savage/Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation" "../../Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation" "https://savage.nps.edu/Savage/Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation" '>
<field name='enabledtype='SFBoolaccessType='inputOutput'/>
<field name='traceEnabledtype='SFBoolaccessType='initializeOnly'/>
<field name='set_traceEnabledtype='SFBoolaccessType='inputOnly'/>
<field name='position_changedtype='SFVec3faccessType='outputOnly'/>
<field name='orientation_changedtype='SFRotationaccessType='outputOnly'/>
<field name='outputViewpointStringtype='MFStringaccessType='outputOnly'/>
</ExternProtoDeclare>
<ExternProtoDeclare name='SeaStateExtrusion'
  url=' "../../Environment/SeaState/SeaStateExtrusionPrototype.x3d#SeaStateExtrusion" "https://savage.nps.edu/Savage/Environment/SeaState/SeaStateExtrusionPrototype.x3d#SeaStateExtrusion" "../../Environment/SeaState/SeaStateExtrusionPrototype.wrl#SeaStateExtrusion" "https://savage.nps.edu/Savage/Environment/SeaState/SeaStateExtrusionPrototype.wrl#SeaStateExtrusion" '>
<field name='shipPitchtype='SFRotationaccessType='outputOnly'/>
<field name='shipRolltype='SFRotationaccessType='outputOnly'/>
</ExternProtoDeclare>
<ExternProtoDeclare name='DvdControllerappinfo="Digital Virtual Display (DVD) Controller Prototype definition to control a scenario's animation timing"
  url=' "../../Tools/HeadsUpDisplays/DvdControllerPrototype.x3d#DvdController" "https://savage.nps.edu/Savage/Tools/HeadsUpDisplays/DvdControllerPrototype.x3d#DvdController" "../../Tools/HeadsUpDisplays/DvdControllerPrototype.wrl#DvdController" "https://savage.nps.edu/Savage/Tools/HeadsUpDisplays/DvdControllerPrototype.wrl#DvdController" '>
<field name='descriptiontype='SFStringaccessType='initializeOnly'
 appinfo='Short description of what is animated by this DvdController.'/>

<field name='playEnabledtype='SFBoolaccessType='initializeOnly'
 appinfo='Whether or not play mode is enabled including during startup.'/>

<field name='displayModetype='SFStringaccessType='initializeOnly'
 appinfo='Initializes how control buttons and slider are displayed. The control buttons include DIS control (i.e. Master Ghost Local) and Playback control (i.e. Reset to Start Fast Rewind Rewind Pause Play Fast Forward Reset to End). Possible values are (case sensitive): ALL DIS_ONLY PLAYBACK_ONLY SLIDER_ONLY DIS_PLAYBACK DIS_SLIDER PLAYBACK_SLIDER and NONE.'/>

<field name='setDisplayModetype='SFStringaccessType='inputOnly'
 appinfo='Sets how control buttons and slider are displayed. The control buttons include DIS control (i.e. Master Ghost Local) and Playback control (i.e. Reset to Start Fast Rewind Rewind Pause Play Fast Forward Reset to End). Possible values are (case sensitive): ALL DIS_ONLY PLAYBACK_ONLY SLIDER_ONLY DIS_PLAYBACK DIS_SLIDER PLAYBACK_SLIDER and NONE.'/>

<field name='buttonColortype='SFColoraccessType='initializeOnly'
 appinfo='Default button color.'/>

<field name='selectedButtonColortype='SFColoraccessType='initializeOnly'
 appinfo='Button color when selected by user.'/>

<field name='labelColortype='SFColoraccessType='initializeOnly'
 appinfo='Default label color.'/>

<field name='selectedLabelColortype='SFColoraccessType='initializeOnly'
 appinfo='Label color when selected by user.'/>

<field name='locationOffsettype='SFVec3faccessType='initializeOnly'
 appinfo='Modified screen location and distance (for size).'/>

<field name='clockEnabledtype='SFBoolaccessType='initializeOnly'/>
<field name='cycleIntervaltype='SFTimeaccessType='initializeOnly'
 appinfo='Time for complete loop cycle in seconds.'/>

<field name='set_cycleIntervaltype='SFTimeaccessType='inputOnly'/>
<field name='cycleInterval_changedtype='SFTimeaccessType='outputOnly'/>
<field name='speedFactortype='SFFloataccessType='initializeOnly'
 appinfo='Factor used to determine the speed increase/decrease for Fast Rewind and Fast Forward action.'/>

<field name='isActivetype='SFBoolaccessType='outputOnly'/>
<field name='startTime_changedtype='SFTimeaccessType='outputOnly'/>
<field name='stopTime_changedtype='SFTimeaccessType='outputOnly'/>
<field name='time_changedtype='SFTimeaccessType='outputOnly'/>
<field name='fraction_changedtype='SFFloataccessType='outputOnly'/>
<field name='secondsElapsedtype='SFTimeaccessType='outputOnly'/>
<field name='isMastertype='SFBoolaccessType='outputOnly'
 appinfo='isMaster isRemote and isLocal are booleans represent a 3-way toggle. Only one of them can have a true value at any time.'/>

<field name='isRemotetype='SFBoolaccessType='outputOnly'
 appinfo='isMaster isRemote and isLocal are booleans represent a 3-way toggle. Only one of them can have a true value at any time.'/>

<field name='isLocaltype='SFBoolaccessType='outputOnly'
 appinfo='isMaster isRemote and isLocal are booleans represent a 3-way toggle. Only one of them can have a true value at any time.'/>

<field name='isPausedtype='SFBoolaccessType='outputOnly'
 appinfo='isPaused and isRunning always have opposite values. When isPaused is true isRunning will be false and vice versa.'/>

<field name='isRunningtype='SFBoolaccessType='outputOnly'
 appinfo='isPaused and isRunning always have opposite values. When isPaused is true isRunning will be false and vice versa.'/>

<field name='traceEnabledtype='SFBoolaccessType='initializeOnly'
 appinfo='Enable/disable console output for troubleshooting.'/>

<field name='testTimeValtype='SFTimeaccessType='initializeOnly'/>
</ExternProtoDeclare>
<!-- =================================== -->
<!-- Begin actual scene here. Top-level viewpoint, navigation and control nodes. -->
<NavigationInfo speed='1000visibilityLimit='100000'/>
<Background groundAngle='1.309 1.570796groundColor='0 0 .6 0 0 .4 0 0 .6skyAngle='1.309 1.571skyColor='0.0 0.2 0.7 0.0 0.5 1.0 0.6 0.6 0.6'/>
<Viewpoint description='Operating areaorientation='0.032 .985 .167 3.578position='-20000 20000 -50000'/>
<!-- ViewPositionOrientation is a prototype lets us find good viewpoints for inclusion in the scene -->
<ProtoInstance name='ViewPositionOrientation'>
<fieldValue name='enabledvalue='false'/>
</ProtoInstance>
<!-- =================================== -->
<!-- Sea state -->
<!-- ROUTE information for GreenevilleSeaStateTransform node:  [from SurfaceMovementFilter.output2dPosition to set_translation ] -->
<Transform DEF='GreenevilleSeaStateTransform'>
<Transform translation='0 0 -1000'>
<Group DEF='ViewPoints'>
<Transform DEF='AerialViewrotation='0 1 0 1.8translation='15 50 -5'>
<Transform rotation='0 1 0 0.75'>
<Viewpoint description='Sea State aerial vieworientation='1 0 0 -0.35'/>
</Transform>
</Transform>
</Group>
<ProtoInstance name='SeaStateExtrusion'/>
</Transform>
<!-- semi-transparent flat plate at surface -->
<Switch whichChoice='-1'>
<Shape DEF='oceanSurface'>
<!-- IndexedFaceSet subdivided to enable view-frustrum culling for performance improvement -->
<!-- area 10Km in X by 10Km in Z -->
<IndexedFaceSet solid='falsecoordIndex='0 1 2 3 0 -1 0 3 4 5 0 -1 0 5 6 7 0 -1 0 7 8 1 0 -1'>
<Coordinate point='0 0 0 0 0 25000 25000 0 25000 25000 0 0 25000 0 -25000 0 0 -25000 -25000 0 -25000 -25000 0 0 -25000 0 25000'/>
</IndexedFaceSet>
<Appearance>
<Material diffuseColor='0 .2 .5transparency='0.05'/>
</Appearance>
</Shape>
</Switch>
</Transform>
<!-- =================================== -->
<!-- USS GREENEVILLE -->
<Group>
<!-- ROUTE information for GreenevilleTransform node:  [from GreenevilleInterpolator.position_changed to set_translation ] [from GreenevilleInterpolator.orientation_changed to set_rotation ] -->
<Transform DEF='GreenevilleTransform'> </Transform>
<!-- ROUTE information for GreenevilleInterpolator node:  [from DvdControllerClock.fraction_changed to set_fraction ] [from position_changed to GreenevilleTransform.set_translation ] [from orientation_changed to GreenevilleTransform.set_rotation ] [from position_changed to SurfaceMovementFilter.input3dPosition ] -->
<ProtoInstance name='WaypointInterpolatorDEF='GreenevilleInterpolator'>
<!-- initial waypoint time 1330, final waypoint time 1343.25 -->
<fieldValue name='descriptionvalue='GreenevilleInterpolator'/>
<fieldValue name='waypointsvalue='-18256.7 -198.1 -2429.6 -17778.3 -198.1 -2429.6 -17330.7 -198.1 -2429.6 -16816.3 -121.9 -2429.6 -16502.5 -121.9 -2429.6 -15494.2 -198.1 -2429.6 -14907.7 -198.1 -2429.6 -14161.8 -198.1 -2429.6 -14064.0 -198.1 -2429.6 -14439.6 -198.1 -3080.1 -14449.9 -198.1 -3097.9 -14555.3 -198.1 -3280.6 -14864.0 -198.1 -3815.2 -14169.5 -198.1 -3815.2 -14025.4 -121.9 -3815.2 -13634.5 -121.9 -3815.2 -12806.2 -198.1 -3815.2 -12471.8 -198.1 -3815.2 -9611.5 -198.1 -3815.2 -9128.0 -198.1 -3815.2 -8059.6 -198.1 -3426.3 -6894.6 -198.1 -3002.3 -6445.0 -198.1 -2838.7 -6029.3 -198.1 -2687.3 -4279.3 -198.1 -2050.4 -4245.5 -121.9 -2038.1 -2805.0 -121.9 -2038.1 -1711.9 -121.9 -2038.1 -1869.5 -121.9 -1905.8 -2667.5 -121.9 -1236.2 -2510.4 -121.9 -1293.4 -2027.0 -121.9 -1469.3 -1422.7 -121.9 -1689.3 -1776.4 -121.9 -1076.7 -2104.3 -121.9 -508.7 -2123.6 -121.9 -475.2 -1875.6 -121.9 -565.5 -1462.3 -121.9 -715.9 -1407.2 -45.7 -736.0 -1352.0 -45.7 -756.1 -1326.8 -45.7 -765.3 -993.8 -45.7 -886.5 -692.1 -45.7 -996.3 -371.6 -45.7 -1112.9 -389.0 -45.7 -1082.9 -498.9 -45.7 -892.4 -524.0 -45.7 -849.0 -533.6 -45.7 -832.3 -562.6 -45.7 -782.1 -620.5 -45.7 -681.9 -720.8 -18.3 -508.1 -767.1 -18.3 -427.9 -817.2 -17.7 -341.1 -826.9 -17.4 -324.4 -848.1 -17.4 -287.6 -855.8 -19.5 -274.2 -877.9 -24.1 -237.6 -946.4 -54.6 -118.8 -432.9 -121.9 -305.7 -400.5 -122.5 -280.4 -278.1 -122.5 -194.7 0.0 -6.1 0.0'/>
<!-- 1 knot = 0.514444444 meters/second, 11 knots = 5.66 meters/second -->
<fieldValue name='legDurationsvalue='93.0 87.0 100.0 61.0 196.0 114.0 145.0 19.0 146.0 4.0 41.0 120.0 135.0 28.0 76.0 161.0 65.0 556.0 94.0 221.0 241.0 93.0 86.0 362.0 7.0 112.0 85.0 16.0 81.0 13.0 40.0 50.0 55.0 51.0 3.0 27.0 45.0 6.0 9.0 4.0 53.0 48.0 51.0 9.0 57.0 13.0 5.0 15.0 30.0 52.0 24.0 26.0 5.0 11.0 4.0 13.0 31.0 83.0 6.0 22.0 50.0'/>
<fieldValue name='turningRatevalue='5'/>
<fieldValue name='pitchUpDownForVerticalWaypointsvalue='true'/>
<fieldValue name='labelDisplayModevalue='interpolation'/>
<fieldValue name='heightLabelvalue='depth'/>
<fieldValue name='lineColorvalue='0 0.8 0.8'/>
<fieldValue name='highlightSegmentColorvalue='0.8 0.6 0.2'/>
<fieldValue name='labelColorvalue='0 0.8 0.8'/>
<fieldValue name='labelOffsetvalue='0 20 0'/>
<fieldValue name='labelFontSizevalue='6'/>
<fieldValue name='traceEnabledvalue='false'/>
</ProtoInstance>
<ROUTE fromNode='GreenevilleInterpolatorfromField='position_changedtoNode='GreenevilleTransformtoField='set_translation'/>
<ROUTE fromNode='GreenevilleInterpolatorfromField='orientation_changedtoNode='GreenevilleTransformtoField='set_rotation'/>
<!-- Move sea state extrusion to stay located over submarine -->
<!-- ROUTE information for SurfaceMovementFilter node:  [from GreenevilleInterpolator.position_changed to input3dPosition ] [from output2dPosition to GreenevilleSeaStateTransform.set_translation ] -->
<Script DEF='SurfaceMovementFilter'>
<field name='input3dPositiontype='SFVec3faccessType='inputOnly'/>
<field name='output2dPositiontype='SFVec3faccessType='outputOnly'/>
<![CDATA[
        
ecmascript:

function input3dPosition (position, timestamp)
{
	output2dPosition = new SFVec3f (position.x, 0, position.z);
}

      
]]>
</Script>
<ROUTE fromNode='GreenevilleInterpolatorfromField='position_changedtoNode='SurfaceMovementFiltertoField='input3dPosition'/>
<ROUTE fromNode='SurfaceMovementFilterfromField='output2dPositiontoNode='GreenevilleSeaStateTransformtoField='set_translation'/>
</Group>
<!-- =================================== -->
<!-- MV EHIME MARU -->
<Group>
<!-- ROUTE information for EhimeMaruTransform node:  [from EhimeMaruInterpolator.position_changed to set_translation ] [from EhimeMaruInterpolator.orientation_changed to set_rotation ] -->
<Transform DEF='EhimeMaruTransform'> </Transform>
<!-- ROUTE information for EhimeMaruInterpolator node:  [from DvdControllerClock.fraction_changed to set_fraction ] [from position_changed to EhimeMaruTransform.set_translation ] [from orientation_changed to EhimeMaruTransform.set_rotation ] [from totalDuration to DvdControllerClock.set_cycleInterval ] -->
<ProtoInstance name='WaypointInterpolatorDEF='EhimeMaruInterpolator'>
<!-- initial waypoint time 1330, final waypoint time 1343.25 -->
<fieldValue name='descriptionvalue='EhimeMaruInterpolator'/>
<fieldValue name='waypointsvalue='20060.7 -3.0 -5001.7 19875.0 -3.0 -4955.4 19701.3 -3.0 -4912.1 19501.6 -3.0 -4862.3 19379.8 -3.0 -4831.9 18988.5 -3.0 -4734.4 18760.9 -3.0 -4677.6 18471.4 -3.0 -4605.4 18433.4 -3.0 -4596.0 18141.9 -3.0 -4523.3 18133.9 -3.0 -4521.3 18052.1 -3.0 -4500.9 17812.5 -3.0 -4441.2 17542.9 -3.0 -4373.9 17389.2 -3.0 -4335.6 16971.9 -3.0 -4231.6 16087.9 -3.0 -4011.2 15731.0 -3.0 -3922.2 12678.1 -3.0 -3161.0 12162.0 -3.0 -3032.3 10948.6 -3.0 -2729.8 9625.3 -3.0 -2399.9 9114.6 -3.0 -2272.5 8642.4 -3.0 -2154.8 6654.8 -3.0 -1659.2 6616.4 -3.0 -1649.6 6001.4 -3.0 -1496.3 5534.7 -3.0 -1379.9 5446.8 -3.0 -1358.0 5002.1 -3.0 -1247.2 4930.7 -3.0 -1229.4 4711.1 -3.0 -1174.6 4436.5 -3.0 -1106.1 4134.5 -3.0 -1030.9 3854.5 -3.0 -961.0 3838.0 -3.0 -956.9 3689.8 -3.0 -920.0 3442.7 -3.0 -858.4 3409.8 -3.0 -850.1 3360.3 -3.0 -837.8 3338.4 -3.0 -832.4 3047.4 -3.0 -759.8 2783.8 -3.0 -694.1 2503.8 -3.0 -624.3 2454.4 -3.0 -611.9 2141.4 -3.0 -533.9 2070.0 -3.0 -516.1 2042.6 -3.0 -509.3 1960.2 -3.0 -488.7 1795.5 -3.0 -447.7 1510.0 -3.0 -376.5 1378.2 -3.0 -343.6 1235.4 -3.0 -308.0 1208.0 -3.0 -301.2 1147.6 -3.0 -286.1 1125.6 -3.0 -280.6 1054.2 -3.0 -262.8 884.0 -3.0 -220.4 428.3 -3.0 -106.8 395.3 -3.0 -98.6 274.5 -3.0 -68.4 0.0 -3.0 0.0'/>
<!-- 1 knot = 0.514444444 meters/second, 11 knots = 5.66 meters/second -->
<fieldValue name='legDurationsvalue='93.0 87.0 100.0 61.0 196.0 114.0 145.0 19.0 146.0 4.0 41.0 120.0 135.0 28.0 76.0 161.0 65.0 556.0 94.0 221.0 241.0 93.0 86.0 362.0 7.0 112.0 85.0 16.0 81.0 13.0 40.0 50.0 55.0 51.0 3.0 27.0 45.0 6.0 9.0 4.0 53.0 48.0 51.0 9.0 57.0 13.0 5.0 15.0 30.0 52.0 24.0 26.0 5.0 11.0 4.0 13.0 31.0 83.0 6.0 22.0 50.0'/>
<fieldValue name='heightLabelvalue='none'/>
<fieldValue name='lineColorvalue='0.4 0.4 0.1'/>
<fieldValue name='highlightSegmentColorvalue='0.8 0.8 0.2'/>
<fieldValue name='labelColorvalue='0.8 0.8 0'/>
<fieldValue name='labelOffsetvalue='0 20 0'/>
<fieldValue name='labelFontSizevalue='6'/>
<fieldValue name='traceEnabledvalue='false'/>
</ProtoInstance>
<ROUTE fromNode='EhimeMaruInterpolatorfromField='position_changedtoNode='EhimeMaruTransformtoField='set_translation'/>
<ROUTE fromNode='EhimeMaruInterpolatorfromField='orientation_changedtoNode='EhimeMaruTransformtoField='set_rotation'/>
</Group>
<!-- =================================== -->
<!-- Grid and coordinate axes -->
<Group> </Group>
<!-- =================================== -->
<!-- Can use either MasterClock or DvdControllerClock -->
<TimeSensor DEF='MasterClockloop='true'/>
<!-- ROUTE information for DvdControllerClock node:  [from EhimeMaruInterpolator.totalDuration to set_cycleInterval ] [from fraction_changed to GreenevilleInterpolator.set_fraction ] [from fraction_changed to EhimeMaruInterpolator.set_fraction ] -->
<ProtoInstance name='DvdControllerDEF='DvdControllerClock'>
<fieldValue name='displayModevalue='PLAYBACK_SLIDER'/>
<fieldValue name='playEnabledvalue='true'/>
<fieldValue name='buttonColorvalue='0.655 0.655 0.655'/>
<fieldValue name='selectedButtonColorvalue='0.675 0.675 0.675'/>
<fieldValue name='selectedLabelColorvalue='0.9 0 0'/>
<fieldValue name='locationOffsetvalue='-12 -4 0'/>
<fieldValue name='cycleIntervalvalue='40'/>
<fieldValue name='speedFactorvalue='10.0'/>
<fieldValue name='traceEnabledvalue='false'/>
</ProtoInstance>
<ROUTE fromNode='EhimeMaruInterpolatorfromField='totalDurationtoNode='DvdControllerClocktoField='set_cycleInterval'/>
<ROUTE fromNode='DvdControllerClockfromField='fraction_changedtoNode='GreenevilleInterpolatortoField='set_fraction'/>
<ROUTE fromNode='DvdControllerClockfromField='fraction_changedtoNode='EhimeMaruInterpolatortoField='set_fraction'/>
</Scene>
</X3D>
<!--

Index for ExternProtoDeclare definitions : DvdController, HiddenViewpoint, SeaStateExtrusion, ViewPositionOrientation, WaypointInterpolator

Index for DEF nodes : AerialView, CoordinateAxes, DvdControllerClock, EhimeMaruInterpolator, EhimeMaruTransform, GreenevilleInterpolator, GreenevilleSeaStateTransform, GreenevilleTransform, MasterClock, oceanSurface, SurfaceMovementFilter, ViewPoints

Index for Viewpoint images : Viewpoint_1, Viewpoint_2, Viewpoint_3, Viewpoint_4
-->

<!-- Color key: <X3dNode DEF='idName' field='value'/> matches <XmlElement DEF='idName' attribute='value'/>
(Light blue background: behavior node) (Grey background: inserted documentation) (Magenta background: X3D Extensibility)
    <Prototype name='ProtoName'> <field name='fieldName'/> </Prototype> -->

<!-- Additional help information about X3D scenes: X3D Resources, X3D Scene Authoring Hints and X3D Tooltips -->