<?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='RapierMissileSystemPrototype.x3d'/>
<meta name='creatorcontent='Oliver Tan'/>
<meta name='createdcontent='28 January 2004'/>
<meta name='modifiedcontent='21 October 2018'/>
<meta name=' warning content=' check whether size is to scale '/>
<meta name='descriptioncontent='Rapier missile system prototype.'/>
<meta name='identifiercontent=' https://savage.nps.edu/Savage/Weapons/Missiles/RapierMissileSystemPrototype.x3d '/>
<meta name='generatorcontent='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/>
<meta name='referencecontent=' http://www.army-technology.com/projects/jernas/jernas1.html '/>
<meta name='subjectcontent='Rapier, Rapier missile, missile'/>
<meta name='licensecontent=' ../../license.html'/>
</head>
<!-- -->
<Scene>
<!-- This is only a representational model. It is not created to scale. -->
<ExternProtoDeclare name='RapierMissile'
  url=' "RapierMissilePrototype.x3d#RapierMissile" "https://savage.nps.edu/Savage/Weapons/Missiles/RapierMissilePrototype.x3d#RapierMissile" "RapierMissilePrototype.wrl#RapierMissile" "https://savage.nps.edu/Savage/Weapons/Missiles/RapierMissilePrototype.wrl#RapierMissile" '>
<field name='rocketAppearancetype='SFNodeaccessType='initializeOnly'/>
</ExternProtoDeclare>
<ProtoDeclare name='RapierMissileSystem'>
<!-- This is only a representational model. It is not created to scale. -->
<ProtoInterface>
<field name='materialtype='SFNodeaccessType='initializeOnly'>
<Material diffuseColor='.3 .6 .9'/>
</field>
<field name='imageTexturetype='SFNodeaccessType='initializeOnly'> </field>
</ProtoInterface>
<ProtoBody>
<Viewpoint description='Rapier Missile Systemposition='0 0 3'/>
<Viewpoint description='Rapier Missile System Obliqueorientation='0 1 0 -1.571position='-3 0.5 0'/>
<Transform rotation='0 1 0 1.57'>
<Transform rotation='0 0 1 -1.571'>
<Shape>
<Appearance DEF='LauncherSkin'>
<IS>
<connect nodeField='materialprotoField='material'/>
<connect nodeField='textureprotoField='imageTexture'/>
</IS>
</Appearance>
</Shape>
<!-- ROUTE information for MissileSystem node:  [from MissileSystemRotation.rotation_changed to rotation ] -->
<Transform DEF='MissileSystem'>
<Transform rotation='0 0 1 1.571'>
<Transform translation='0 -0.075 0.25'>
<Transform scale='0.5 0.5 0.5'>
<Transform rotation='0 0 1 -1.571translation='-0.05 0.1 0'>
<Transform>
<Shape>
<Appearance USE='LauncherSkin'/>
<Extrusion creaseAngle='3.14crossSection='-0.2 -1.4 -0.2 -0.3 0.05 0.2 0.1 0.2 0.1 -1.4 -0.2 -1.4solid='falsespine='0 0 0 0 0.1 0'/>
</Shape>
<Transform translation='-0.05 0.05 -0.75'>
<Shape>
<Appearance USE='LauncherSkin'/>
<Cylinder height='0.2radius='0.15'/>
</Shape>
</Transform>
<Transform translation='-0.05 0.05 -1.4'>
<Shape>
<Appearance USE='LauncherSkin'/>
<Cylinder height='0.2radius='0.15'/>
</Shape>
</Transform>
<Transform translation='-0.05 0.05 -0.5'>
<Shape>
<Appearance USE='LauncherSkin'/>
<Cylinder height='0.2radius='0.05'/>
</Shape>
</Transform>
</Transform>
</Transform>
<Transform translation='0 0.1 -0.55'>
<Transform DEF='MissileGripPair'>
<Transform scale='0.49 1 0.8'>
<Transform translation='0 0.15 -0.3'>
<Transform DEF='MissileGriptranslation='0.2 0 0'>
<Transform rotation='0 1 0 1.571'>
<Transform scale='0.04 0.04 0.04'>
<Transform>
<Transform rotation='1 0 0 1.571'>
<Transform DEF='U1'>
<Shape>
<Appearance USE='LauncherSkin'/>
<Cylinder height='8'/>
</Shape>
<Transform translation='0 4 0'>
<Shape>
<Sphere/>
<Appearance USE='LauncherSkin'/>
</Shape>
</Transform>
<Transform translation='0 -4 0'>
<Shape>
<Sphere/>
<Appearance USE='LauncherSkin'/>
</Shape>
</Transform>
</Transform>
</Transform>
<Transform translation='0 0 4'>
<Transform rotation='0 0 1 -0.7'>
<Transform translation='0 5 0'>
<Transform>
<Shape>
<Appearance USE='LauncherSkin'/>
<Cylinder height='10'/>
</Shape>
<Transform translation='0 5 0'>
<Shape>
<Sphere/>
<Appearance USE='LauncherSkin'/>
</Shape>
</Transform>
<Transform translation='0 -5 0'>
<Shape>
<Sphere/>
<Appearance USE='LauncherSkin'/>
</Shape>
</Transform>
</Transform>
</Transform>
<Transform translation='0 10 0'>
<Transform translation='0 0 -4'>
<Transform rotation='1 0 0 1.571'>
<Transform scale='1 0.8 1translation='0 0.2 0'>
<Transform USE='U1'/>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
<Transform rotation='1 0 0 -1.4translation='0 0.15 -0.3'>
<Transform rotation='0 1 0 3.142'>
<Transform USE='MissileGrip'/>
</Transform>
</Transform>
</Transform>
</Transform>
</Transform>
<Transform translation='0 0.1 -1.2'>
<Transform USE='MissileGripPair'/>
</Transform>
<Transform rotation='1 0 0 -3.142translation='0 0.2 -0.95'>
<Transform USE='MissileGripPair'/>
</Transform>
<Transform rotation='1 0 0 -3.142translation='0 0.2 -1.6'>
<Transform USE='MissileGripPair'/>
</Transform>
</Transform>
<Transform>
<!-- ROUTE information for TopMissile node:  [from topMissilePathInterpolator.value_changed to set_translation ] -->
<Transform DEF='TopMissile'>
<Transform rotation='0 1 0 -1.57scale='0.1 0.1 0.1translation='0 0.2 -0.2'>
<Transform>
<ProtoInstance name='RapierMissile'>
<fieldValue name='rocketAppearance'>
<Appearance USE='LauncherSkin'/>
</fieldValue>
</ProtoInstance>
</Transform>
</Transform>
<!-- ROUTE information for shootTopMissile node:  [from touchTime to topMissileClock.set_startTime ] -->
<TouchSensor DEF='shootTopMissiledescription='touch missile to launch it'/>
<!-- ROUTE information for topMissilePathInterpolator node:  [from topMissileClock.fraction_changed to set_fraction ] [from value_changed to TopMissile.set_translation ] -->
<PositionInterpolator DEF='topMissilePathInterpolatorkey='0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1keyValue='0 0 1 0 0.05 2 0 0.1 3 0 0.15 4 0 0.2 5 0 0.25 6 0 0.3 7 0 0.35 8 0 0.4 9 0 0.45 10 0 0.5 11'/>
<!-- ROUTE information for topMissileClock node:  [from shootTopMissile.touchTime to set_startTime ] [from fraction_changed to topMissilePathInterpolator.set_fraction ] -->
<TimeSensor DEF='topMissileClockcycleInterval='10'/>
<ROUTE fromNode='topMissileClockfromField='fraction_changedtoNode='topMissilePathInterpolatortoField='set_fraction'/>
<ROUTE fromNode='topMissilePathInterpolatorfromField='value_changedtoNode='TopMissiletoField='set_translation'/>
<ROUTE fromNode='shootTopMissilefromField='touchTimetoNode='topMissileClocktoField='set_startTime'/>
</Transform>
</Transform>
<!-- ROUTE information for BottomMissile node:  [from bottomMissilePathInterpolator.value_changed to set_translation ] -->
<Transform DEF='BottomMissile'>
<Transform rotation='0 1 0 -1.57scale='0.1 0.1 0.1translation='0 -0.05 -0.15'>
<Transform>
<ProtoInstance name='RapierMissile'>
<fieldValue name='rocketAppearance'>
<Appearance USE='LauncherSkin'/>
</fieldValue>
</ProtoInstance>
</Transform>
</Transform>
<!-- ROUTE information for shootBottomMissile node:  [from touchTime to bottomMissileClock.set_startTime ] -->
<TouchSensor DEF='shootBottomMissiledescription='touch missile to launch it'/>
<!-- ROUTE information for bottomMissilePathInterpolator node:  [from bottomMissileClock.fraction_changed to set_fraction ] [from value_changed to BottomMissile.set_translation ] -->
<PositionInterpolator DEF='bottomMissilePathInterpolatorkey='0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1keyValue='0 0 1 0 0.05 2 0 0.1 3 0 0.15 4 0 0.2 5 0 0.25 6 0 0.3 7 0 0.35 8 0 0.4 9 0 0.45 10 0 0.5 11'/>
<!-- ROUTE information for bottomMissileClock node:  [from shootBottomMissile.touchTime to set_startTime ] [from fraction_changed to bottomMissilePathInterpolator.set_fraction ] -->
<TimeSensor DEF='bottomMissileClockcycleInterval='10'/>
<ROUTE fromNode='bottomMissileClockfromField='fraction_changedtoNode='bottomMissilePathInterpolatortoField='set_fraction'/>
<ROUTE fromNode='bottomMissilePathInterpolatorfromField='value_changedtoNode='BottomMissiletoField='set_translation'/>
<ROUTE fromNode='shootBottomMissilefromField='touchTimetoNode='bottomMissileClocktoField='set_startTime'/>
</Transform>
</Transform>
</Transform>
<!-- ROUTE information for MissileSystemRotation node:  [from rotation_changed to MissileSystem.rotation ] -->
<CylinderSensor DEF='MissileSystemRotationdescription='Rotate the missile system.maxAngle='0minAngle='-1.3'/>
<ROUTE fromNode='MissileSystemRotationfromField='rotation_changedtoNode='MissileSystemtoField='rotation'/>
</Transform>
</Transform>
</Transform>
</ProtoBody>
</ProtoDeclare>
<Anchor description='RapierMissileSystemExample'
  url=' "RapierMissileSystemExample.x3d" "https://savage.nps.edu/Savage/Weapons/Missiles/RapierMissileSystemExample.x3d" "RapierMissileSystemExample.wrl" "https://savage.nps.edu/Savage/Weapons/Missiles/RapierMissileSystemExample.wrl" '>
<Shape>
<Text string='"Rapier Missile System Prototype" "contains prototype definitions" "" "Click on text to see these Appearances in" "RapierMissileSystemExample"'>
<FontStyle justify='"MIDDLE" "MIDDLE"size='0.5'/>
</Text>
<Appearance>
<Material diffuseColor='0 0.6 0.6'/>
</Appearance>
</Shape>
</Anchor>
</Scene>
</X3D>
<!--

Index for ExternProtoDeclare definition : RapierMissile

Index for ProtoDeclare definition : RapierMissileSystem

Index for DEF nodes : BottomMissile, bottomMissileClock, bottomMissilePathInterpolator, LauncherSkin, MissileGrip, MissileGripPair, MissileSystem, MissileSystemRotation, shootBottomMissile, shootTopMissile, TopMissile, topMissileClock, topMissilePathInterpolator, U1

Index for Viewpoint images : Viewpoint_1, Viewpoint_2
-->

<!-- 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 -->