<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.2//EN" "http://www.web3d.org/specifications/x3d-3.2.dtd">
<X3D profile='Immersive' version='3.2 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' http://www.web3d.org/specifications/x3d-3.2.xsd '>
<head>
<meta name='titlecontent='Gimbals.x3d'/>
<meta name='descriptioncontent='Gimbals for user-driven roll pitch and yaw angle conversions, also shows conversion from X3D (VRML) to DIS coordinate system. Model inspiration by Bob McGhee.'/>
<meta name='creatorcontent='Eric Bachmann and Don Brutzman'/>
<meta name='createdcontent='1996'/>
<meta name='finishedcontent='19 April 1999'/>
<meta name='translatorcontent='Curtis Blais'/>
<meta name='translatedcontent='27 January 2001'/>
<meta name='modifiedcontent='10 April 2012'/>
<meta name='Imagecontent='GimbalsExampleF18.png'/>
<meta name='Imagecontent='GimbalsExampleRocket.png'/>
<meta name='hintcontent='Note that axis orientations are aligned with X3D Geospatial conventions'/>
<meta name='identifiercontent=' http://www.web3d.org/x3d/content/examples/Basic/DistributedInteractiveSimulation/Gimbals.x3d '/>
<meta name='referencecontent=' http://www.web3d.org/WorkingGroups/vrtp/demo/gimbals/DisCoordinateSystemGimbals.wrl '/>
<meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!-- -->
<Scene>
<Background groundAngle='1.309 1.570796groundColor='0 0.3 1 0 0.3 1 0 0.3 1skyAngle='1.309 1.571skyColor='0 0.2 0.7 0 0.5 1 1 1 1'/>
<DirectionalLight color='0.5 0.4 0.0direction='1 -.5 1'/>
<Group DEF='ViewpointGroup'>
<!-- have default Viewpoints precede model viewpoints for consistent navigation -->
<Viewpoint description='South to Northposition='0 15 100'/>
<Viewpoint description='East to Westorientation='0 1 0 1.57079position='120 20 0'/>
<Viewpoint description='North to Southorientation='0 1 0 -3.14159position='0 20 -120'/>
<Viewpoint description='West to Eastorientation='0 1 0 -1.57079position='-120 20 0'/>
<Viewpoint description='Close Uporientation='1 0 0 -.20136position='0 30 50'/>
<Transform DEF='fromNEtoSWrotation='0 1 0 0.7854translation='30 40 30'>
<Viewpoint description='Northeast to SWorientation='1 0 0 -0.45'/>
</Transform>
<Transform DEF='fromSWtoNErotation='0 1 0 -2.35619translation='-25 5 -25'>
<Viewpoint description='Southwest to NEorientation='1 0 0 0.35'/>
</Transform>
<Transform rotation='-1 0 0 1.57translation='0 150 0'>
<Viewpoint description='Top Downorientation='0 0 -1 1.57position='0 0 0'/>
</Transform>
</Group>
<Transform DEF='SunInDistancetranslation='-250 125 -250'>
<Shape>
<Appearance>
<Material DEF='SUN_MATERIALambientIntensity='0diffuseColor='1 0.871763 0emissiveColor='1 0.871763 0shininess='0.5specularColor='1 1 1'/>
</Appearance>
<Sphere radius='5.0'/>
</Shape>
</Transform>
<Transform DEF='GlobalCoordinateAxestranslation='0 20 0'>
<Transform DEF='GlobalAxisLines'>
<Shape>
<Appearance>
<Material DEF='COLOR1diffuseColor='0.01 0.01 0.1emissiveColor='0.01 0.01 0.1'/>
</Appearance>
<IndexedLineSet coordIndex='0 1 -1 2 3 -1 4 5 -1 6 7 -1 8 9 -1 10 11 -1'>
<Coordinate point='35 0 0 2 0 0 -35 0 0 -2 0 0 0 25 0 0 2 0 0 -25 0 0 -2 0 0 0 35 0 0 2 0 0 -35 0 0 -2'/>
</IndexedLineSet>
</Shape>
</Transform>
<Transform DEF='PositiveZAxisLabeltranslation='0 -4.0 40'>
<Billboard axisOfRotation='0 0 0'>
<Transform scale='0.1 0.1 0.1'>
<Shape>
<Appearance>
<Material USE='COLOR1'/>
</Appearance>
<Text string='"South" "+Z X3D, -X DIS"'>
<FontStyle DEF='FONT1justify='"MIDDLE" "MIDDLE"size='36'/>
</Text>
</Shape>
</Transform>
</Billboard>
</Transform>
<Transform DEF='PositiveXAxisLabeltranslation='44 -4.0 0'>
<Billboard axisOfRotation='0 0 0'>
<Transform scale='0.1 0.1 0.1'>
<Shape>
<Appearance>
<Material USE='COLOR1'/>
</Appearance>
<Text string='"East" "+X X3D, +Y DIS"'>
<FontStyle USE='FONT1'/>
</Text>
</Shape>
</Transform>
</Billboard>
</Transform>
<Transform DEF='NegativeZAxisLabeltranslation='-0.5 -4.0 -40'>
<Billboard axisOfRotation='0 0 0'>
<Transform scale='0.1 0.1 0.1'>
<Shape>
<Appearance>
<Material USE='COLOR1'/>
</Appearance>
<Text string='"North" "-Z X3D, +X DIS"'>
<FontStyle USE='FONT1'/>
</Text>
</Shape>
</Transform>
</Billboard>
</Transform>
<Transform DEF='NegativeXAxisLabeltranslation='-44 -4.0 0'>
<Billboard axisOfRotation='0 0 0'>
<Transform scale='0.1 0.1 0.1'>
<Shape>
<Appearance>
<Material USE='COLOR1'/>
</Appearance>
<Text string='"West" "-X X3D, -Y DIS"'>
<FontStyle USE='FONT1'/>
</Text>
</Shape>
</Transform>
</Billboard>
</Transform>
<Transform DEF='PositiveYAxisLabeltranslation='0 30 0'>
<Billboard axisOfRotation='0 0 0'>
<Transform scale='0.1 0.1 0.1'>
<Shape>
<Appearance>
<Material USE='COLOR1'/>
</Appearance>
<Text string='"Up" "+Y X3D, -Z DIS"'>
<FontStyle USE='FONT1'/>
</Text>
</Shape>
</Transform>
</Billboard>
</Transform>
<Transform DEF='NegativeYAxisLabeltranslation='0 -28 0'>
<Billboard axisOfRotation='0 0 0'>
<Transform scale='0.1 0.1 0.1'>
<Shape>
<Appearance>
<Material USE='COLOR1'/>
</Appearance>
<Text string='"Down" "-Y X3D, +Z DIS"'>
<FontStyle USE='FONT1'/>
</Text>
</Shape>
</Transform>
</Billboard>
</Transform>
</Transform>
<Transform DEF='GimbalObjectsrotation='0 1 0 1.57translation='0 20 0'>
<!-- AZIMUTH_TRANSFORM ROUTE:  [from AZIMUTH_SENSOR.rotation_changed to set_rotation ] -->
<Transform DEF='AZIMUTH_TRANSFORM'>
<!-- AZIMUTH_SENSOR ROUTEs:  [from rotation_changed to AZIMUTH_TRANSFORM.set_rotation ] [from rotation_changed to CONSTRUCT_TRACE_STRING.set_azimuthRotation ] -->
<CylinderSensor DEF='AZIMUTH_SENSORdescription='drag gimbal to change azimuth'/>
<Transform DEF='AzimuthGimbalrotation='1 0 0 1.57079'>
<Transform DEF='AzimuthGimbalShape'>
<Shape>
<Appearance DEF='AppearanceGimbals'>
<Material diffuseColor='1 0.59 0.3'/>
</Appearance>
<Extrusion beginCap='falseconvex='falsecreaseAngle='1.57crossSection='0.5 0 0.46 -0.19 0.355 -0.355 0.19 -0.46 0 -0.5 -0.19 -0.46 -0.355 -0.355 -0.46 -0.19 -0.5 0 -0.46 0.19 -0.355 0.355 -0.19 0.46 0 0.5 0.19 0.46 0.355 0.355 0.46 0.19 0.5 0endCap='falsesolid='falsespine='14 0 0 13.25 0 7.85 11.05 0 11.05 7.85 0 13.25 0 0 14 -7.85 0 13.25 -11.05 0 11.05 -13.25 0 7.85 -14 0 0 -13.25 0 -7.85 -11.05 0 -11.05 -7.85 0 -13.25 0 0 -14 7.85 0 -13.25 11.05 0 -11.05 13.25 0 -7.85 14 0 0'/>
</Shape>
<Transform rotation='0 0 1 1.57079translation='12.75 0 0'>
<Shape DEF='PinShape'>
<Appearance USE='AppearanceGimbals'/>
<Cone bottomRadius='0.5height='1.5'/>
</Shape>
</Transform>
<Transform rotation='0 0 1 -1.57079translation='-12.75 0 0'>
<Shape USE='PinShape'/>
</Transform>
</Transform>
</Transform>
<Transform DEF='ElevationRollObjectsrotation='0 0 1 1.57'>
<!-- ELEVATION_TRANSFORM ROUTE:  [from ELEVATION_SENSOR.rotation_changed to set_rotation ] -->
<Transform DEF='ELEVATION_TRANSFORM'>
<!-- ELEVATION_SENSOR ROUTEs:  [from rotation_changed to ELEVATION_TRANSFORM.set_rotation ] [from rotation_changed to CONSTRUCT_TRACE_STRING.set_elevationRotation ] -->
<CylinderSensor DEF='ELEVATION_SENSORdescription='drag gimbal to change elevation'/>
<Transform DEF='ElevationGimbalrotation='0 0 1 1.57079'>
<Transform DEF='ElevationGimbalShape'>
<Shape>
<Appearance USE='AppearanceGimbals'/>
<Extrusion beginCap='falseconvex='falsecreaseAngle='1.57crossSection='0.5 0 0.46 -0.19 0.355 -0.355 0.19 -0.46 0 -0.5 -0.19 -0.46 -0.355 -0.355 -0.46 -0.19 -0.5 0 -0.46 0.19 -0.355 0.355 -0.19 0.46 0 0.5 0.19 0.46 0.355 0.355 0.46 0.19 0.5 0endCap='falsesolid='falsespine='12 0 0 11.25 0 5.85 9.05 0 9.05 5.85 0 11.25 0 0 12 -5.85 0 11.25 -9.05 0 9.05 -11.25 0 5.85 -12 0 0 -11.25 0 -5.85 -9.05 0 -9.05 -5.85 0 -11.25 0 0 -12 5.85 0 -11.25 9.05 0 -9.05 11.25 0 -5.85 12 0 0'/>
</Shape>
<Transform rotation='1 0 0 -1.57079translation='0 0 10.75'>
<Shape USE='PinShape'/>
</Transform>
<Transform rotation='1 0 0 1.57079translation='0 0 -10.75'>
<Shape USE='PinShape'/>
</Transform>
</Transform>
</Transform>
<Transform DEF='RollObjectsrotation='1 0 0 -1.57'>
<!-- ROLL_TRANSFORM ROUTE:  [from ROLL_SENSOR.rotation_changed to set_rotation ] -->
<Transform DEF='ROLL_TRANSFORM'>
<!-- ROLL_SENSOR ROUTEs:  [from rotation_changed to ROLL_TRANSFORM.set_rotation ] [from rotation_changed to CONSTRUCT_TRACE_STRING.set_rollRotation ] -->
<CylinderSensor DEF='ROLL_SENSORdescription='drag gimbal to change roll'/>
<Transform DEF='RollGimbalrotation='1 0 0 1.57079'>
<Transform DEF='RollGimbalShape'>
<Shape>
<Appearance USE='AppearanceGimbals'/>
<Extrusion beginCap='falseconvex='falsecreaseAngle='1.57crossSection='0.5 0 0.46 -0.19 0.355 -0.355 0.19 -0.46 0 -0.5 -0.19 -0.46 -0.355 -0.355 -0.46 -0.19 -0.5 0 -0.46 0.19 -0.355 0.355 -0.19 0.46 0 0.5 0.19 0.46 0.355 0.355 0.46 0.19 0.5 0endCap='falsesolid='falsespine='10 0 0 9.25 0 3.85 7.05 0 7.05 3.85 0 9.25 0 0 10 -3.85 0 9.25 -7.05 0 7.05 -9.25 0 3.85 -10 0 0 -9.25 0 -3.85 -7.05 0 -7.05 -3.85 0 -9.25 0 0 -10 3.85 0 -9.25 7.05 0 -7.05 9.25 0 -3.85 10 0 0'/>
</Shape>
</Transform>
<Transform rotation='0 0 1 -1.57'>
<Transform rotation='0 1 0 -1.57scale='0.4 0.4 0.4'>
<Transform DEF='ScaleUpContainedObjectscale='6 6 6'>
<!-- note that default is in a different library, so each Inline goes online for url retrieval if needed -->
<Switch DEF='ModelChoicewhichChoice='0'> </Switch>
</Transform>
<Transform DEF='LocalCoordinateAxesscale='0.65 0.65 0.65'>
<Transform DEF='LocalAxisLines'>
<Shape>
<Appearance DEF='AppearanceBodyAxes'>
<Material diffuseColor='1 .8 0emissiveColor='1 .8 0'/>
</Appearance>
<IndexedLineSet coordIndex='0 1 -1 2 3 -1 4 5 -1'>
<Coordinate point='25 0 0 -25 0 0 0 25 0 0 -25 0 0 0 25 0 0 -25'/>
</IndexedLineSet>
</Shape>
</Transform>
<Transform DEF='PositiveXLocaltranslation='35 0 0'>
<Billboard axisOfRotation='0 0 0'>
<Transform scale='.1 .1 .1'>
<Shape>
<Appearance USE='AppearanceBodyAxes'/>
<Text string='"body +X nose"'>
<FontStyle DEF='FONT2justify='"MIDDLE" "MIDDLE"size='48'/>
</Text>
</Shape>
</Transform>
</Billboard>
</Transform>
<Transform DEF='NegativeXLocaltranslation='-35 0 0'>
<Billboard axisOfRotation='0 0 0'>
<Transform scale='.1 .1 .1'>
<Shape>
<Appearance USE='AppearanceBodyAxes'/>
<Text string='"body -X tail"'>
<FontStyle USE='FONT2'/>
</Text>
</Shape>
</Transform>
</Billboard>
</Transform>
<Transform DEF='PositiveZLocaltranslation='0 -30 0'>
<Billboard axisOfRotation='0 0 0'>
<Transform scale='.1 .1 .1'>
<Shape>
<Appearance USE='AppearanceBodyAxes'/>
<Text string='"body -Y bottom"'>
<FontStyle USE='FONT2'/>
</Text>
</Shape>
</Transform>
</Billboard>
</Transform>
<Transform DEF='NegativeZLocaltranslation='0 26 0'>
<Billboard axisOfRotation='0 0 0'>
<Transform scale='.1 .1 .1'>
<Shape>
<Appearance USE='AppearanceBodyAxes'/>
<Text string='"body +Y top"'>
<FontStyle USE='FONT2'/>
</Text>
</Shape>
</Transform>
</Billboard>
</Transform>
<Transform DEF='PositiveYLocaltranslation='0 0 34'>
<Billboard axisOfRotation='0 0 0'>
<Transform scale='.1 .1 .1'>
<Shape>
<Appearance USE='AppearanceBodyAxes'/>
<Text string='"body +Z right"'>
<FontStyle USE='FONT2'/>
</Text>
</Shape>
</Transform>
</Billboard>
</Transform>
<Transform DEF='NegativeYLocaltranslation='0 0 -34'>
<Billboard axisOfRotation='0 0 0'>
<Transform scale='.1 .1 .1'>
<Shape>
<Appearance USE='AppearanceBodyAxes'/>
<Text string='"body -Z left"'>
<FontStyle USE='FONT2'/>
</Text>
</Shape>
</Transform>
</Billboard>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
<Transform DEF='RotationTexttranslation='0 -12 22'>
<Billboard axisOfRotation='0 0 0'>
<Shape>
<Appearance>
<Material diffuseColor='0 .8 .1emissiveColor='0 .8 .1'/>
</Appearance>
<!-- TRACE_STRING ROUTE:  [from CONSTRUCT_TRACE_STRING.rotationMessage_changed to set_string ] -->
<Text DEF='TRACE_STRINGstring='"Drag gimbals for new rotation value"'>
<FontStyle justify='"MIDDLE" "MIDDLE"size='4'/>
</Text>
</Shape>
</Billboard>
</Transform>
<!-- CONSTRUCT_TRACE_STRING ROUTEs:  [from ROLL_SENSOR.rotation_changed to set_rollRotation ] [from ELEVATION_SENSOR.rotation_changed to set_elevationRotation ] [from AZIMUTH_SENSOR.rotation_changed to set_azimuthRotation ] [from rotationMessage_changed to TRACE_STRING.set_string ] -->
<Script DEF='CONSTRUCT_TRACE_STRING'
  url=' "Gimbals.js" "http://www.web3d.org/x3d/content/examples/Basic/DistributedInteractiveSimulation/Gimbals.js" '>
<field name='rolltype='SFFloatvalue='0.0accessType='initializeOnly'
 appinfo='declared for persistence'/>

<field name='elevationtype='SFFloatvalue='0.0accessType='initializeOnly'
 appinfo='declared for persistence'/>

<field name='azimuthtype='SFFloatvalue='0.0accessType='initializeOnly'
 appinfo='declared for persistence'/>

<field name='azimuth2type='SFFloatvalue='0.0accessType='initializeOnly'
 appinfo='declared for persistence'/>

<field name='newRotationtype='SFRotationvalue='0 1 0 0accessType='inputOutput'
 appinfo='declared for persistence'/>

<field name='newRotationStringtype='SFStringaccessType='inputOutput'
 appinfo='declared for persistence'/>

<field name='set_rollRotationtype='SFRotationaccessType='inputOnly'/>
<field name='set_elevationRotationtype='SFRotationaccessType='inputOnly'/>
<field name='set_azimuthRotationtype='SFRotationaccessType='inputOnly'/>
<field name='rotationMessage_changedtype='MFStringaccessType='outputOnly'/>
</Script>
<ROUTE fromNode='ROLL_SENSORfromField='rotation_changedtoNode='ROLL_TRANSFORMtoField='set_rotation'/>
<ROUTE fromNode='ELEVATION_SENSORfromField='rotation_changedtoNode='ELEVATION_TRANSFORMtoField='set_rotation'/>
<ROUTE fromNode='AZIMUTH_SENSORfromField='rotation_changedtoNode='AZIMUTH_TRANSFORMtoField='set_rotation'/>
<ROUTE fromNode='ROLL_SENSORfromField='rotation_changedtoNode='CONSTRUCT_TRACE_STRINGtoField='set_rollRotation'/>
<ROUTE fromNode='ELEVATION_SENSORfromField='rotation_changedtoNode='CONSTRUCT_TRACE_STRINGtoField='set_elevationRotation'/>
<ROUTE fromNode='AZIMUTH_SENSORfromField='rotation_changedtoNode='CONSTRUCT_TRACE_STRINGtoField='set_azimuthRotation'/>
<ROUTE fromNode='CONSTRUCT_TRACE_STRINGfromField='rotationMessage_changedtoNode='TRACE_STRINGtoField='set_string'/>
</Scene>
</X3D>
<!--

Index for DEF nodes : AppearanceBodyAxes, AppearanceGimbals, AZIMUTH_SENSOR, AZIMUTH_TRANSFORM, AzimuthGimbal, AzimuthGimbalShape, COLOR1, CONSTRUCT_TRACE_STRING, ELEVATION_SENSOR, ELEVATION_TRANSFORM, ElevationGimbal, ElevationGimbalShape, ElevationRollObjects, F18Superhornet, FONT1, FONT2, fromNEtoSW, fromSWtoNE, GimbalObjects, GlobalAxisLines, GlobalCoordinateAxes, LocalAxisLines, LocalCoordinateAxes, ModelChoice, ModelOrientation, NegativeXAxisLabel, NegativeXLocal, NegativeYAxisLabel, NegativeYLocal, NegativeZAxisLabel, NegativeZLocal, PinShape, PositiveXAxisLabel, PositiveXLocal, PositiveYAxisLabel, PositiveYLocal, PositiveZAxisLabel, PositiveZLocal, ROLL_SENSOR, ROLL_TRANSFORM, RollGimbal, RollGimbalShape, RollObjects, RotationText, ScaleUpContainedObject, SUN_MATERIAL, SunInDistance, TRACE_STRING, ViewpointGroup

Index for Viewpoint images : Viewpoint_1, Viewpoint_2, Viewpoint_3, Viewpoint_4, Viewpoint_5, Viewpoint_6, Viewpoint_7, Viewpoint_8
-->

<!-- Color key: <X3dNode DEF='idName' field='value'/> matches <XmlElement DEF='idName' attribute='value'/> -->

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