X3D Model Documentation: CoasterClassical.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2  <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.2//EN" "https://www.web3d.org/specifications/x3d-3.2.dtd">
  3  <X3D profile='Immersive' version='3.2 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.2.xsd'>
  4       <head>
  5            <meta name='titlecontent='CoasterClassical.x3d'/>
  6            <meta name='descriptioncontent='X3D example showing a flying model using classical animation techniques'/>
  7            <meta name='creatorcontent='Herbert Stocker'/>
  8            <meta name='translatorcontent='Don Brutzman'/>
  9            <meta name='createdcontent='18 April 2006'/>
 10            <meta name='translatedcontent='2 December 2011'/>
 11            <meta name='modifiedcontent='28 November 2019'/>
 12            <meta name='referencecontent='originals/coaster-classical.wrl'/>
 13            <meta name='referencecontent='Stocker_06_Followers.pdf'/>
 14            <meta name='referencecontent='http://www.hersto.com/Publications/Followers'/>
 15            <meta name='requirescontent='X3D version 3.2 or greater'/>
 16            <meta name='subjectcontent='X3D Follower Chaser Damper'/>
 17            <meta name='referencecontent='https://www.web3d.org/x3d/specifications/ISO-IEC-19775-1.2-X3D-AbstractSpecification/Part01/components/followers.html'/>
 18            <meta name='referencecontent='https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html'/>
 19            <meta name='identifiercontent='https://www.web3d.org/x3d/content/examples/Basic/Followers/CoasterClassical.x3d'/>
 20            <meta name='generatorcontent='Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html'/>
 21            <meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
 22            <meta name='licensecontent='../../license.html'/>
 23       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top Index for DEF nodes: _4, AircraftObject, AppFromBelow, BottomWhite, CoasterAnim, CubePoints, enterWorldScript, enterWorldTimeSensor, GroundEdges, GroundPlane, GroundPlaneFromBelow, LeftSideGreen, MatFromBelow, MotionTrailCoordL, MotionTrailCoordR, MotionTrailLeft, MotionTrailLineL, MotionTrailLineR, MotionTrailLineSetL, MotionTrailLineSetR, MotionTrailRight, MotionTrailScriptL, MotionTrailScriptR, NavInfo1, offsetCoordinates, RightSideRed, Shed, TargetVehicle, TargetVehicleRotationInterp, TargetVehicleTranslationInterp, TexGrass, TexTransGrass, Texturizer, Time, TopBlue, wingtipCoordinates

Index for Viewpoint nodes: Viewpoint_1, Viewpoint_2, Viewpoint_3, Viewpoint_4, Viewpoint_5, Viewpoint_6, Viewpoint_7, Viewpoint_8
-->
 24       <Scene>
 25            <WorldInfo info='"Roller Coaster with Twin Motion Trails" "Developed by Tom Kaye (tomk@sgi.com)" "Silicon Graphics Inc, 1997" "Created in CosmoWorlds" "Packaged by CosmoPackage" "PositionDamper and OrientationDamper nodes added by Herbert Stocker, www.hersto.com"title='CoasterClassical.x3d'/>
 26            <Background skyColor='0.113 0.529 0.847'/>
 27            <Inline   url=' "Sky.x3d" "https://www.web3d.org/x3d/content/examples/Basic/Followers/Sky.x3d" "Sky.wrl" "https://www.web3d.org/x3d/content/examples/Basic/Followers/Sky.wrl" '/>
 28            <DirectionalLight direction='0.0 -1.0 0.0'/>
 29            <Transform DEF='GroundEdgesscale='10.0 0.05 5.0translation='-2.97994 -0.0499999 -1.0'>
 30                 <Shape>
 31                      <Appearance>
 32                           <Material diffuseColor='0.0 0.0 0.0emissiveColor='0.274 0.427 0.098'/>
 33                      </Appearance>
 34                      <IndexedFaceSet creaseAngle='0.5solid='falsecoordIndex='0 1 3 2 -1 4 5 7 6 -1 6 7 1 0 -1 2 3 5 4 -1'>
 35                           <Coordinate DEF='CubePointspoint='-1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1'/>
 36                      </IndexedFaceSet>
 37                 </Shape>
 38            </Transform>
 39            <Transform DEF='GroundPlanescale='10.0 0.05 5.0translation='-3.0 -0.05 -1.0'>
 40                 <Shape>
 41                      <Appearance>
 42 
                         <!-- TextureTransform TexTransGrass is a DEF node that has 1 USE node: USE_1 -->
                         <TextureTransform DEF='TexTransGrassscale='4.0 4.0'/>
 43 
                         <!-- ImageTexture TexGrass is a DEF node that has 1 USE node: USE_1 -->
                         <ImageTexture DEF='TexGrass'   url=' "grass4.jpg " "https://www.web3d.org/x3d/content/examples/Basic/Followers/grass4.jpg " '/>
 44                      </Appearance>
 45                      <IndexedFaceSet creaseAngle='0.5coordIndex='0 1 2 3 -1'>
 46                           <Coordinate point='-1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0'/>
 47                      </IndexedFaceSet>
 48                 </Shape>
 49            </Transform>
 50            <Transform DEF='GroundPlaneFromBelowscale='10.0 0.05 5.0translation='-3.0 -0.05 -1.0'>
 51                 <Shape>
 52 
                    <!-- Appearance AppFromBelow is a DEF node that has 1 USE node: USE_1 -->
                    <Appearance DEF='AppFromBelow'>
 53 
                         <!-- Material MatFromBelow is a DEF node that has 1 USE node: USE_1 -->
                         <Material DEF='MatFromBelowdiffuseColor='0.0 0.0 0.0emissiveColor='0.274 0.427 0.098shininess='0.0transparency='0.51'/>
 54                      </Appearance>
 55                      <IndexedFaceSet ccw='falsecreaseAngle='0.5coordIndex='0 1 2 3 -1'>
 56                           <Coordinate point='-1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0'/>
 57                      </IndexedFaceSet>
 58                 </Shape>
 59            </Transform>
 60            <Script DEF='TexturizerdirectOutput='true'>
 61                 <field name='TexTransGrasstype='SFNodeaccessType='initializeOnly'>
 62                      <TextureTransform USE='TexTransGrass'/>
 63                 </field>
 64                 <field name='TexGrasstype='SFNodeaccessType='initializeOnly'>
 65                      <ImageTexture USE='TexGrass'/>
 66                 </field>
 67                 <field name='AppFromBelowtype='SFNodeaccessType='initializeOnly'>
 68                      <Appearance USE='AppFromBelow'/>
 69                 </field>
 70                 <field name='MatFromBelowtype='SFNodeaccessType='initializeOnly'>
 71                      <Material USE='MatFromBelow'/>
 72                 </field>
  <![CDATA[
      
ecmascript:

function initialize()
{
    if(   Browser.getName() == 'blaxxunCC3D'  // This also covers BS Contact VRML.
       || Browser.getName() == 'bsContactMP4' 
      )
    {
        AppFromBelow.texture= TexGrass;
        AppFromBelow.textureTransform= TexTransGrass;
        MatFromBelow.transparency= .6;
        MatFromBelow.emissiveColor= new SFColor(1, 1, 1);
    }
}

    
]]>
 74            </Script>
 75 
          <!-- ROUTE information for TargetVehicle node:  [from TargetVehicleTranslationInterp.value_changed to set_translation ] [from TargetVehicleRotationInterp.value_changed to set_rotation ] [from translation_changed to offsetCoordinates.rawCoordinateIn ] [from rotation_changed to wingtipCoordinates.set_vehicleRotation ] -->
          <Transform DEF='TargetVehiclecenter='1.04904E-5 0.717017 -8.82894E-4rotation='-0.57735 0.57735 0.577351 2.09439scale='0.499976 0.499948 0.499971scaleOrientation='0.356491 -0.901205 0.246461 0.410829translation='1.5 -0.712227 -3.99929'>
 76                 <Group>
 77                      <Group DEF='CoasterAnim'>
 78 
 79                      </Group>
 80 
                    <!-- ROUTE information for TargetVehicleTranslationInterp node:  [from Time.fraction_changed to set_fraction ] [from value_changed to TargetVehicle.set_translation ] -->
                    <PositionInterpolator DEF='TargetVehicleTranslationInterpkey='0.0 0.0307592 0.0307692 0.0576923 0.0615385 0.0653846 0.0692308 0.0730769 0.0769231 0.0807693 0.0846154 0.0884616 0.0923077 0.0961539 0.1 0.103846 0.107692 0.111539 0.115385 0.119231 0.123077 0.126923 0.130769 0.134615 0.138462 0.142308 0.146154 0.15 0.153846 0.157692 0.161539 0.165385 0.169231 0.173077 0.17735 0.181624 0.185897 0.190171 0.194444 0.198718 0.202991 0.207265 0.211538 0.215384 0.21923 0.223077 0.226923 0.230769 0.234615 0.238461 0.242308 0.246154 0.25 0.253846 0.257692 0.261539 0.265385 0.269231 0.273077 0.276923 0.28077 0.284616 0.288462 0.294231 0.3 0.303846 0.307692 0.311539 0.315385 0.319231 0.323077 0.326923 0.33077 0.334616 0.338462 0.343269 0.348077 0.352885 0.357692 0.361538 0.365384 0.369231 0.373077 0.376923 0.419231 0.423718 0.428205 0.432692 0.43718 0.441667 0.446154 0.45055 0.454945 0.459341 0.463736 0.468132 0.472527 0.476923 0.481319 0.485714 0.49011 0.494505 0.498901 0.503296 0.507692 0.512179 0.516666 0.521153 0.525641 0.530128 0.534615 0.539102 0.543589 0.548076 0.552564 0.557051 0.561538 0.565384 0.56923 0.573077 0.576923 0.580769 0.584615 0.588462 0.592308 0.596154 0.6 0.603846 0.607692 0.611539 0.615385 0.619231 0.623077 0.626923 0.630769 0.634616 0.638462 0.642735 0.647009 0.651282 0.655556 0.659829 0.664102 0.668376 0.672649 0.676923 0.681319 0.685714 0.69011 0.694505 0.698901 0.703297 0.707692 0.712088 0.716483 0.720879 0.725274 0.72967 0.734065 0.738461 0.742307 0.746153 0.75 0.753846 0.757692 0.761538 0.765385 0.769231 0.8 0.804487 0.808974 0.813461 0.817949 0.822436 0.826923 0.830769 0.892308 0.896154 0.9 0.903847 0.907693 0.911539 0.915385 0.976923 0.980769 0.984615 0.988461 0.992308 0.996154 1.0keyValue='1.5 -0.712227 -3.99929 1.5 -0.712227 -3.99929 1.5 -0.712227 -3.99929 -2.98023E-8 -0.712227 -3.99929 -0.135118 -0.684878 -3.99929 -0.249569 -0.659854 -3.99929 -0.348176 -0.634392 -3.99929 -0.435765 -0.605731 -3.99929 -0.517157 -0.571108 -3.99929 -0.597176 -0.52776 -3.99929 -0.680647 -0.472924 -3.99929 -0.772392 -0.40384 -3.99929 -0.877235 -0.317743 -3.99929 -1.0 -0.211873 -3.99929 -1.13575 -0.0903623 -3.99929 -1.276 0.0401461 -3.99929 -1.42025 0.178653 -3.99929 -1.568 0.324157 -3.99929 -1.71875 0.47566 -3.99929 -1.872 0.632161 -3.99929 -2.02725 0.792661 -3.99929 -2.184 0.95616 -3.99929 -2.34175 1.12166 -3.99929 -2.5 1.28816 -3.99929 -2.65825 1.45465 -3.99929 -2.816 1.62015 -3.99929 -2.97275 1.78365 -3.99929 -3.128 1.94414 -3.99929 -3.28125 2.10064 -3.99929 -3.432 2.25213 -3.99929 -3.57975 2.39763 -3.99929 -3.724 2.53613 -3.99929 -3.86425 2.66663 -3.99929 -4.0 2.78813 -3.99929 -4.14037 2.9077 -3.99929 -4.26703 3.00806 -3.99929 -4.38271 3.0906 -3.99929 -4.49017 3.15667 -3.99929 -4.59214 3.20765 -3.99929 -4.69136 3.24492 -3.99929 -4.79058 3.26984 -3.99929 -4.89255 3.28379 -3.99929 -5.0 3.28813 -3.99929 -5.091 3.28988 -3.99929 -5.168 3.29213 -3.99929 -5.237 3.29038 -3.99929 -5.304 3.28013 -3.99929 -5.375 3.25688 -3.99929 -5.456 3.21613 -3.99929 -5.553 3.15338 -3.99929 -5.672 3.06413 -3.99929 -5.819 2.94388 -3.99929 -6.0 2.78813 -3.99929 -6.22034 2.58518 -3.99929 -6.47675 2.33319 -3.99929 -6.76235 2.04246 -3.99929 -7.07024 1.7233 -3.99929 -7.39354 1.38601 -3.99929 -7.72536 1.04089 -3.99929 -8.05881 0.698235 -3.99929 -8.38699 0.368357 -3.99929 -8.70302 0.0615546 -3.99929 -9.0 -0.211873 -3.99929 -9.38046 -0.486211 -3.99929 -9.7071 -0.504772 -3.99929 -9.94767 -0.377057 -3.99929 -10.2127 -0.187134 -3.9993 -10.4575 0.0384212 -3.9993 -10.6372 0.273034 -3.9993 -10.7071 0.490127 -3.99929 -10.6304 0.71709 -3.99926 -10.437 0.97164 -3.99923 -10.182 1.21269 -3.99918 -9.92036 1.39917 -3.99915 -9.70711 1.48998 -3.99912 -9.49317 1.43325 -4.01568 -9.29107 1.24316 -4.0433 -9.12021 0.999743 -4.04882 -9.00002 0.782985 -3.99911 -8.95476 0.641569 -3.90294 -8.9491 0.500148 -3.76718 -8.96606 0.358725 -3.60879 -8.98868 0.217301 -3.44475 -8.99999 0.0758787 -3.29202 -9.0 0.0758831 8.81374E-4 -9.02165 0.156862 0.377715 -9.06926 0.278578 0.786017 -9.11688 0.430141 1.19519 -9.13853 0.600657 1.57462 -9.10823 0.779234 1.89372 -9.00001 0.954982 2.12188 -8.81189 1.13921 2.26291 -8.56375 1.34809 2.3519 -8.27199 1.56759 2.39465 -7.95299 1.78363 2.39691 -7.62314 1.98218 2.36447 -7.29882 2.14918 2.3031 -6.99643 2.27058 2.21857 -6.71286 2.35274 2.08419 -6.43251 2.41028 1.88591 -6.15303 2.44152 1.64852 -5.87204 2.44477 1.39679 -5.58719 2.41835 1.15551 -5.2961 2.36059 0.949439 -4.99643 2.26981 0.803365 -4.67853 2.10492 0.710561 -4.34952 1.85751 0.653148 -4.0131 1.56821 0.632428 -3.67297 1.27761 0.649702 -3.33285 1.02632 0.706271 -2.99643 0.854937 0.803438 -2.65729 0.765917 0.968587 -2.31119 0.72726 1.20616 -1.9651 0.727911 1.48302 -1.62596 0.756815 1.76605 -1.30076 0.802918 2.02214 -0.996445 0.855165 2.21814 -0.74528 0.911436 2.34886 -0.493761 0.987636 2.47346 -0.24516 1.07762 2.58902 -0.00275008 1.17525 2.69261 0.230195 1.27439 2.78127 0.450403 1.36888 2.85209 0.654601 1.45258 2.90213 0.839515 1.51936 2.92844 1.00187 1.56306 2.9281 1.14473 1.58985 2.90446 1.27405 1.60986 2.86363 1.39088 1.62293 2.80686 1.49628 1.62889 2.73535 1.59133 1.62758 2.65033 1.67707 1.61882 2.55304 1.75456 1.60246 2.44469 1.82487 1.57832 2.32651 1.88906 1.54624 2.19973 1.94818 1.50605 2.06557 2.00331 1.45759 1.92524 2.0598 1.38509 1.74941 2.10934 1.28868 1.54462 2.15031 1.17446 1.31831 2.18108 1.04854 1.07793 2.20001 0.917032 0.830914 2.20549 0.786048 0.584711 2.19587 0.661696 0.34676 2.16953 0.550085 0.124505 2.12483 0.457321 -0.0746234 2.04566 0.382953 -0.26982 1.92723 0.324577 -0.466918 1.78027 0.278421 -0.654261 1.61552 0.240713 -0.820186 1.44371 0.207684 -0.953036 1.27556 0.17556 -1.04115 1.12182 0.140572 -1.07287 0.961417 0.104905 -1.03454 0.777803 0.0726409 -0.93196 0.588454 0.0428501 -0.782685 0.410843 0.0146023 -0.604261 0.262447 -0.0130321 -0.414235 0.16074 -0.0409833 -0.230153 0.123196 -0.0701823 -0.0695581 0.152848 -0.0965528 0.0554954 0.233341 -0.122932 0.180429 0.352943 -0.149317 0.305271 0.499921 -0.175707 0.430048 0.662542 -0.202099 0.554788 0.829075 -0.228492 0.679519 0.987787 -0.254884 0.804269 1.12695 -0.281274 0.92907 3.25257 -0.281718 0.928657 3.49502 -0.302707 0.820501 3.71072 -0.33278 0.666566 3.90667 -0.368681 0.482109 4.08991 -0.407152 0.282388 4.26745 -0.444937 0.0826635 4.44633 -0.478779 -0.10181 4.49975 -0.492812 -0.249108 4.49974 -0.617812 -3.50169 4.4583 -0.629977 -3.64537 4.38642 -0.64534 -3.74526 4.29424 -0.662836 -3.81596 4.19192 -0.681397 -3.87206 4.08959 -0.699958 -3.92816 3.99741 -0.717453 -3.99886 1.95311 -0.708216 -3.99918 1.8512 -0.708255 -3.9992 1.76829 -0.708748 -3.99922 1.69805 -0.709542 -3.99924 1.63415 -0.710487 -3.99925 1.57024 -0.711433 -3.99927 1.5 -0.712227 -3.99929'/>
 81 
                    <!-- ROUTE information for TargetVehicleRotationInterp node:  [from Time.fraction_changed to set_fraction ] [from value_changed to TargetVehicle.set_rotation ] -->
                    <OrientationInterpolator DEF='TargetVehicleRotationInterpkey='0.0 0.0307592 0.0307692 0.0576923 0.0615385 0.0653846 0.0692308 0.0730769 0.0769231 0.0807693 0.0846154 0.0884616 0.0923077 0.0961539 0.1 0.103846 0.107692 0.111539 0.115385 0.119231 0.123077 0.126923 0.130769 0.134615 0.138462 0.142308 0.146154 0.15 0.153846 0.157692 0.161539 0.165385 0.169231 0.173077 0.17735 0.181624 0.185897 0.190171 0.194444 0.198718 0.202991 0.207265 0.211538 0.215384 0.21923 0.223077 0.226923 0.230769 0.234615 0.238461 0.242308 0.246154 0.25 0.253846 0.257692 0.261539 0.265385 0.269231 0.273077 0.276923 0.28077 0.284616 0.288462 0.294231 0.3 0.303846 0.307692 0.311539 0.315385 0.319231 0.323077 0.326923 0.33077 0.334616 0.338462 0.343269 0.348077 0.352885 0.357692 0.361538 0.365385 0.371154 0.376923 0.419231 0.423718 0.428205 0.432692 0.43718 0.441667 0.446154 0.45055 0.454945 0.459341 0.463736 0.468132 0.472527 0.476923 0.481319 0.485714 0.49011 0.494505 0.498901 0.503296 0.507692 0.512179 0.516666 0.521153 0.525641 0.530128 0.534615 0.539102 0.543589 0.548076 0.552564 0.557051 0.561538 0.565384 0.56923 0.573077 0.576923 0.580769 0.584615 0.588462 0.592308 0.596154 0.6 0.603846 0.607692 0.611539 0.615385 0.619231 0.623077 0.626923 0.630769 0.634616 0.638462 0.64327 0.648077 0.652884 0.657692 0.661538 0.665384 0.669231 0.673077 0.676923 0.681319 0.685714 0.69011 0.694505 0.698901 0.703297 0.707692 0.712088 0.716483 0.720879 0.725274 0.72967 0.734065 0.738461 0.742307 0.746153 0.75 0.753846 0.757692 0.761538 0.765385 0.769231 0.8 0.805769 0.811538 0.815385 0.819231 0.826923 0.830769 0.892308 0.898077 0.903846 0.907692 0.911539 0.915385 0.976923 0.980769 0.984615 0.988461 0.992308 0.996154 1.0keyValue='-0.57735 0.57735 0.577351 2.09439 -0.57735 0.57735 0.577351 2.09439 -0.57735 0.57735 0.577351 2.09439 -0.57735 0.57735 0.577351 2.09439 -0.567425 0.596705 0.567426 2.0656 -0.552946 0.623298 0.552947 2.02684 -0.534178 0.655215 0.534179 1.98152 -0.5115 0.690459 0.511501 1.933 -0.485545 0.726974 0.485546 1.88439 -0.457321 0.762702 0.457322 1.83843 -0.428293 0.795694 0.428294 1.79737 -0.400386 0.824246 0.400387 1.76289 -0.375911 0.846983 0.375912 1.73611 -0.357406 0.862856 0.357407 1.71777 -0.350413 0.868574 0.350414 1.71123 -0.344112 0.873598 0.344113 1.70552 -0.338526 0.877952 0.338527 1.70059 -0.333674 0.881659 0.333675 1.69641 -0.329572 0.884739 0.329573 1.69295 -0.326233 0.887211 0.326234 1.69018 -0.323666 0.889089 0.323667 1.68808 -0.321879 0.890386 0.32188 1.68664 -0.320874 0.891111 0.320875 1.68583 -0.320653 0.891271 0.320654 1.68565 -0.321213 0.890867 0.321214 1.6861 -0.32255 0.8899 0.322551 1.68718 -0.324657 0.888367 0.324658 1.68889 -0.327523 0.88626 0.327524 1.69125 -0.331134 0.883572 0.331135 1.69426 -0.335476 0.88029 0.335477 1.69795 -0.340529 0.876401 0.340531 1.70235 -0.346273 0.871888 0.346274 1.70746 -0.352682 0.866735 0.352684 1.71333 -0.359731 0.860922 0.359732 1.71999 -0.379051 0.84418 0.379052 1.73938 -0.403091 0.821605 0.403091 1.76604 -0.430042 0.793805 0.430043 1.79969 -0.458227 0.761614 0.458227 1.83981 -0.486193 0.726108 0.486193 1.88552 -0.512787 0.688549 0.512787 1.93559 -0.537168 0.650309 0.537168 1.98841 -0.55879 0.612787 0.55879 2.04206 0.57735 -0.57735 -0.57735 4.18879 -0.592737 0.545276 0.592737 2.14317 -0.607867 0.510877 0.607867 2.19697 -0.622164 0.475209 0.622164 2.25436 -0.635219 0.439311 0.635219 2.31374 -0.646775 0.404185 0.646774 2.37338 -0.656701 0.370792 0.656701 2.43144 -0.664968 0.340054 0.664967 2.48602 -0.67161 0.312858 0.67161 2.53517 -0.676704 0.290074 0.676704 2.57694 -0.680334 0.272566 0.680334 2.60939 0.682874 -0.25955 -0.682874 3.64949 0.684721 -0.24963 -0.684721 3.63085 0.685956 -0.24275 -0.685957 3.61788 0.686638 -0.238864 -0.686638 3.61053 0.6868 -0.237929 -0.686801 3.60877 0.686455 -0.23991 -0.686456 3.61251 0.685596 -0.244775 -0.685597 3.6217 0.684194 -0.252499 -0.684195 3.63625 0.682202 -0.263059 -0.682203 3.65606 -0.679551 0.276441 0.679552 2.60218 -0.651684 0.388092 0.651685 2.40119 -0.57735 0.577351 0.57735 2.09439 -0.519268 0.678765 0.519268 1.94893 -0.431702 0.792002 0.431701 1.8019 -0.31046 0.898459 0.31046 1.67767 -0.16043 0.973922 0.16043 1.59722 9.74767E-7 1.0 -1.41687E-6 1.5708 0.161223 0.975708 -0.148326 1.59539 0.315447 0.90762 -0.276984 1.66758 0.44283 0.80887 -0.386822 1.78134 0.53168 0.695018 -0.484011 1.92685 0.577351 0.577349 -0.577351 2.0944 0.575666 0.423328 -0.699573 2.34418 0.526724 0.265591 -0.80748 2.6321 0.454336 0.119696 -0.882752 2.91451 -0.382683 5.22933E-7 0.92388 3.14159 0.252411 -0.125411 -0.959459 3.39666 -0.139004 0.246324 0.959168 2.81009 -0.0386425 0.43267 0.900724 2.81224 -2.31525E-8 0.707107 0.707107 3.14159 7.73042E-7 0.707106 0.707107 3.14159 -0.00876494 0.734457 0.678599 3.14885 -0.0285068 0.769004 0.638608 3.16521 -0.0486659 0.808026 0.587133 3.18191 -0.0581319 0.848652 0.525748 3.18975 -0.0456313 0.888339 0.456915 3.1794 2.39447E-6 0.92391 0.38261 3.14159 0.0786355 0.946421 0.313215 3.08231 0.192106 0.953145 0.233687 3.00228 0.323556 0.935491 0.142016 2.91004 0.454104 0.890043 0.0401617 2.81573 0.56562 0.821933 -0.0670859 2.72855 0.643683 0.745038 -0.174902 2.65407 0.678589 0.678584 -0.281141 2.59345 0.668232 0.633955 -0.389317 2.54351 0.62041 0.603828 -0.500483 2.50165 0.542536 0.57856 -0.609035 2.46915 0.44421 0.549133 -0.707906 2.44718 0.338083 0.508887 -0.791665 2.4346 0.238101 0.453246 -0.858997 2.42716 -0.156533 -0.377892 0.912521 3.86435 0.0841793 0.268063 -0.959717 2.40414 0.0256254 0.144472 -0.989177 2.38826 -0.0235779 0.0120284 -0.99965 2.37673 -0.0677081 -0.123358 -0.99005 2.37506 -0.110799 -0.255312 -0.960489 2.38791 0.156584 0.378037 0.912453 3.8643 0.199754 0.495172 0.845519 3.81534 0.234386 0.606756 0.759546 3.75121 0.26331 0.703896 0.659696 3.67508 0.290188 0.780534 0.553677 3.59248 0.319705 0.833754 0.450158 3.51028 0.357418 0.86288 0.357337 3.43548 0.388222 0.870408 0.302778 3.382 0.422536 0.870603 0.252018 3.31762 0.460181 0.863923 0.204623 3.24888 0.500434 0.850766 0.160508 3.18273 0.542297 0.83159 0.119883 3.12627 0.584709 0.806972 0.0831381 3.08674 0.626724 0.77759 0.0507125 3.07135 0.667642 0.744129 0.0229443 3.08727 0.707107 0.707106 -5.66118E-5 3.14148 0.74037 0.672053 -0.0140531 3.22796 0.776084 0.630213 -0.0229366 3.35674 0.813139 0.581409 -0.027708 3.51729 0.850398 0.525328 -0.0292033 3.69882 0.886636 0.461616 -0.0280549 3.89037 0.920425 0.390135 -0.0247437 4.08094 0.950058 0.31145 -0.0197199 4.25974 0.973667 0.227572 -0.0135787 4.41657 0.989727 0.142788 -0.00725208 4.54238 0.997946 0.0640204 -0.00213212 4.62976 1.0 -6.35534E-7 6.57274E-7 4.67307 0.996553 -0.0829147 0.00280905 4.58205 0.997358 -0.0723366 0.00661529 4.31936 0.999519 -0.0302525 0.00676277 4.04802 1.0 1.43159E-5 1.09746E-5 3.92683 0.999789 0.0203775 -0.00242897 3.98667 0.998433 0.0559599 2.76579E-4 4.13447 0.995428 0.0953603 -0.00548976 4.33023 0.991672 0.12336 -0.0369914 4.53263 0.98617 0.117199 -0.117189 4.69846 0.972284 0.0799382 -0.219712 4.77524 0.934194 0.0177418 -0.356323 4.81433 0.861097 -0.0615913 -0.504696 4.81086 0.754371 -0.146391 -0.639917 4.76748 0.626563 -0.226361 -0.745775 4.69736 0.491671 -0.296641 -0.818696 4.62182 -0.35747 0.357464 0.862806 1.71782 0.21821 -0.412778 -0.884307 4.54287 0.0661529 -0.463952 -0.883387 4.53918 -0.0944755 -0.507746 -0.856311 4.53289 -0.25223 -0.540327 -0.802762 4.50509 -0.392158 -0.560344 -0.729538 4.44253 -0.502221 -0.570694 -0.649679 4.33821 0.577348 0.577349 0.577354 2.09439 0.644809 0.569887 0.509361 2.21646 0.690244 0.566606 0.450024 2.36556 0.718052 0.569145 0.400594 2.53842 0.731837 0.578127 0.36081 2.7331 0.734077 0.593619 0.329768 2.94811 0.726083 0.615517 0.3065 3.18152 0.707982 0.643794 0.290327 3.43027 0.678599 0.678602 0.281075 3.68959 0.577346 0.577353 0.577352 4.18878 0.702176 0.593063 0.393985 4.21811 0.802385 0.584275 0.121658 4.14687 0.815464 0.577014 -0.045534 4.15811 0.832054 0.535461 -0.144804 4.24246 0.990554 0.130102 -0.0433214 4.64834 1.0 7.4414E-6 6.62627E-6 4.71239 1.0 7.3873E-6 6.62225E-6 4.71239 0.884975 0.140068 -0.444072 4.8316 -0.593457 -0.140733 0.792466 1.59101 0.460357 0.0639742 -0.885426 4.55475 0.49072 -0.205856 -0.846651 4.43643 0.577355 -0.577348 -0.577348 4.1888 0.577351 -0.577349 -0.57735 4.18879 0.577351 -0.577349 -0.577351 4.18879 0.577351 -0.57735 -0.577351 4.18879 0.57735 -0.57735 -0.577351 4.18879 0.57735 -0.57735 -0.577351 4.18879 0.57735 -0.57735 -0.577351 4.1888 -0.57735 0.57735 0.577351 2.09439'/>
 82                 </Group>
 83                 <Transform center='5.06639E-7 0.711873 0.25'>
 84                      <Switch whichChoice='0'>
 85                           <Transform DEF='AircraftObjectcenter='0.0 0.711873 0.25'>
 86                                <Transform DEF='LeftSideGreencenter='1.0 0.0 0.5scale='0.5 1.0 0.5translation='-1.0 0.711873 -0.25'>
 87                                     <Shape>
 88                                          <Appearance>
 89 
                                             <!-- Material _4 is a DEF node that has 1 USE node: USE_1 -->
                                             <Material DEF='_4ambientIntensity='0.0diffuseColor='1.0 0.0 0.0shininess='0.0'/>
 90                                          </Appearance>
 91                                          <IndexedFaceSet ccw='falsecolorPerVertex='falsecreaseAngle='0.5colorIndex='1 0coordIndex='0 1 3 4 -1 3 2 4 -1'>
 92                                               <Coordinate point='1.0 -1.0 1.0 1.0 -1.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 0.5'/>
 93                                               <Color color='0.0 1.0 0.0 0.0 0.497326 0.0'/>
 94                                          </IndexedFaceSet>
 95                                     </Shape>
 96                                </Transform>
 97                                <Transform DEF='BottomWhitecenter='1.0 0.0 0.0scale='0.5 1.0 0.5scaleOrientation='5.58553E-9 -1.0 -9.77967E-9 0.492161translation='-1.0 0.711872 -1.56338E-7'>
 98                                     <Shape>
 99                                          <Appearance>
100                                               <Material ambientIntensity='0.0diffuseColor='1.0 1.0 1.0shininess='0.0'/>
101                                          </Appearance>
102                                          <IndexedFaceSet ccw='falsecolorPerVertex='falsecreaseAngle='0.5colorIndex='1 0 1 0coordIndex='1 3 4 5 -1 4 2 5 -1 0 1 5 6 -1 5 2 6 -1'>
103                                               <Coordinate point='0.0 -1.0 0.0 1.0 -1.0 0.0 1.0 1.0 0.0 2.0 -1.0 0.0 1.5 0.0 0.0 1.0 0.0 0.0 0.5 0.0 0.0'/>
104                                               <Color color='1.0 1.0 1.0 0.502674 0.502674 0.502674'/>
105                                          </IndexedFaceSet>
106                                     </Shape>
107                                </Transform>
108                                <Transform DEF='TopBluecenter='1.0 0.0 0.0scale='0.5 1.0 0.5scaleOrientation='5.58553E-9 -1.0 -9.77967E-9 0.492161translation='-1.0 0.711872 -1.56338E-7'>
109                                     <Shape>
110                                          <Appearance>
111                                               <Material USE='_4'/>
112                                          </Appearance>
113                                          <IndexedFaceSet colorPerVertex='falsecreaseAngle='0.5colorIndex='1 0 1 0coordIndex='1 3 4 5 -1 4 2 5 -1 0 1 5 6 -1 5 2 6 -1'>
114                                               <Coordinate point='0.0 -1.0 0.0 1.0 -1.0 0.0 1.0 1.0 0.0 2.0 -1.0 0.0 1.5 0.0 0.0 1.0 0.0 0.0 0.5 0.0 0.0'/>
115                                               <Color color='0.0 0.0 1.0 0.0 0.0 0.502674'/>
116                                          </IndexedFaceSet>
117                                     </Shape>
118                                </Transform>
119                                <Transform DEF='RightSideRedcenter='1.0 0.0 0.5scale='0.5 1.0 0.5scaleOrientation='5.58553E-9 -1.0 -9.77967E-9 0.492161translation='-0.999999 0.711873 -0.25'>
120                                     <Shape>
121                                          <Appearance>
122                                               <Material ambientIntensity='0.0diffuseColor='1.0 0.0 0.0shininess='0.0'/>
123                                          </Appearance>
124                                          <IndexedFaceSet colorPerVertex='falsecreaseAngle='0.5colorIndex='1 0coordIndex='0 1 3 4 -1 3 2 4 -1'>
125                                               <Coordinate point='1.0 -1.0 1.0 1.0 -1.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 0.5'/>
126                                               <Color color='1.0 0.0 0.0 0.502674 0.0 0.0'/>
127                                          </IndexedFaceSet>
128                                     </Shape>
129                                </Transform>
130                           </Transform>
131                      </Switch>
132                 </Transform>
133                 <Viewpoint description='Far Behindorientation='1.0 0.0 0.0 1.37position='-0.3 -11.75 2.52'/>
134                 <Viewpoint description='Behindorientation='1.0 0.0 0.0 1.37position='-0.1 -3.7 0.8'/>
135                 <Viewpoint description='From the Sideorientation='0.294 0.617 0.73 2.673position='5.7 4.0 1.1'/>
136                 <Viewpoint description='Far from the SidefieldOfView='0.785orientation='0.199 0.493 0.847 2.274position='7.689 3.242 7.885'/>
137                 <Viewpoint description='Pilot Vieworientation='1.0 0.0 0.0 1.5position='0.0 0.5 0.3'/>
138                 <Viewpoint description='From the FrontfieldOfView='0.785orientation='0.036 0.735 0.677 3.106position='0.353 3.737 0.43'/>
139                 <Viewpoint description='From the Front 2fieldOfView='0.785orientation='0.044 -0.746 -0.664 2.996position='-0.327 3.746 0.357'/>
140            </Transform>
141 
          <!-- ROUTE information for enterWorldTimeSensor node:  [from enterWorldScript.firstTime to set_enabled ] [from time to enterWorldScript.triggerIn ] -->
          <TimeSensor DEF='enterWorldTimeSensorloop='truestartTime='1.0'/>
142 
          <!-- ROUTE information for enterWorldScript node:  [from enterWorldTimeSensor.time to triggerIn ] [from firstTime to enterWorldTimeSensor.set_enabled ] [from startTime to Time.set_startTime ] -->
          <Script DEF='enterWorldScript'>
143                 <field name='triggerIntype='SFTimeaccessType='inputOnly'/>
144                 <field name='startTimetype='SFTimeaccessType='outputOnly'/>
145                 <field name='firstTimetype='SFBoolaccessType='outputOnly'/>
  <![CDATA[
      
ecmascript:
function triggerIn(value, time) {

     // fire off a single round                                     
     startTime = value;                                             
     firstTime = false;                                             
}

    
]]>
147            </Script>
148            <NavigationInfo DEF='NavInfo1type='"EXAMINE"'/>
149            <Viewpoint description='Overvieworientation='-0.0762904 0.961347 0.264559 2.28129position='11.0 6.0 -9.0'/>
150 
          <!-- ROUTE information for offsetCoordinates node:  [from TargetVehicle.translation_changed to rawCoordinateIn ] [from offsetCoordinateOut to wingtipCoordinates.set_vehiclePosition ] -->
          <Script DEF='offsetCoordinates'>
151                 <field name='offsetFactortype='SFVec3fvalue='0.0 0.717 0.0accessType='initializeOnly'/>
152                 <field name='offsetCoordinateOuttype='SFVec3faccessType='outputOnly'/>
153                 <field name='rawCoordinateIntype='SFVec3faccessType='inputOnly'/>
  <![CDATA[
      
ecmascript:
function rawCoordinateIn(value, time)
{
	offsetCoordinateOut = value.add(offsetFactor);	
}

    
]]>
155            </Script>
156            <Transform DEF='Shedscale='1.40933 0.391759 0.391759translation='1.80788 0.281642 -3.97569'>
157                 <Shape>
158                      <Appearance>
159                           <Material ambientIntensity='0.25diffuseColor='0.374 0.0030 0.176emissiveColor='0.374 0.0030 0.176shininess='0.933333specularColor='0.685 0.685 0.685'/>
160                      </Appearance>
161                      <IndexedFaceSet colorPerVertex='falsecreaseAngle='0.5solid='falsecoordIndex='1 17 14 7 5 13 10 3 -1 2 8 11 12 9 4 19 -1 8 3 10 11 -1 13 5 9 12 -1 17 1 15 18 -1 22 23 24 25 -1 27 26 28 29 -1 6 21 16 18 15 0 20 -1 21 7 14 16 -1'>
162                           <Coordinate point='-1.0 1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 1.0 0.51827 1.0 1.0 0.518265 -1.0 1.0 -1.0 0.585131 1.0 0.518269 0.585132 1.0 0.518266 -0.563741 1.0 -1.0 -0.56374 -1.0 -1.0 -0.564348 -1.0 0.525568 1.0 -1.0 0.525568 -0.564348 -1.0 -1.0 0.584421 -1.0 0.525568 0.584421 1.0 1.72428 3.12775E-7 -1.0 1.72428 3.12775E-7 -1.0 0.525568 -1.0 -1.0 0.88185 -1.16313 -1.0 1.72428 3.12775E-7 1.0 1.72428 3.12775E-7 1.0 0.88185 -1.16313 -1.0 0.921288 1.10868 -1.0 1.72428 3.12775E-7 1.0 0.921288 1.10868 1.0 1.72428 3.12775E-7'/>
163                      </IndexedFaceSet>
164                 </Shape>
165            </Transform>
166            <Transform DEF='MotionTrailLeft'>
167 
168                      <field name='stepCounttype='SFInt32value='1accessType='initializeOnly'/>
169                      <field name='isVisible_changedtype='SFBoolaccessType='outputOnly'/>
170                      <field name='coordIndex_changedtype='MFInt32accessType='outputOnly'/>
171                      <field name='currentIndextype='SFInt32value='0accessType='initializeOnly'/>
172                      <field name='last_timetype='SFTimevalue='0.0accessType='initializeOnly'/>
173                      <field name='distancetype='SFFloatvalue='0.0accessType='initializeOnly'/>
174                      <field name='isActive_changedtype='SFBoolaccessType='outputOnly'/>
175                      <field name='stepSizetype='SFInt32value='1accessType='initializeOnly'/>
176                      <field name='coordIndextype='MFInt32value='-1 -1accessType='initializeOnly'/>
177                      <field name='startIndextype='SFInt32value='0accessType='initializeOnly'/>
178                      <field name='position_changedtype='SFVec3faccessType='outputOnly'/>
179                      <field name='reset_triggertype='SFTimeaccessType='outputOnly'/>
180                      <field name='coord_changedtype='MFVec3faccessType='outputOnly'/>
181                      <field name='current_timetype='SFTimevalue='0.0accessType='initializeOnly'/>
182                      <field name='rotation_changedtype='SFRotationaccessType='outputOnly'/>
183                      <field name='set_isVisibletype='SFBoolaccessType='inputOnly'/>
184                      <field name='last_positiontype='SFVec3fvalue='0.0 0.0 0.0accessType='initializeOnly'/>
185                      <field name='set_isActivetype='SFBoolaccessType='inputOnly'/>
186                      <field name='initial_directiontype='SFVec3fvalue='0.0 0.0 -1.0accessType='initializeOnly'/>
187                      <field name='isVisibletype='SFBoolvalue='trueaccessType='initializeOnly'/>
188                      <field name='coordtype='MFVec3fvalue='0.0 0.0 0.0 1.0 0.0 0.0accessType='initializeOnly'/>
189                      <field name='rotationtype='SFRotationvalue='0.0 0.0 1.0 0.0accessType='initializeOnly'/>
190                      <field name='speed_changedtype='SFFloataccessType='outputOnly'/>
191                      <field name='speedtype='SFFloatvalue='0.0accessType='initializeOnly'/>
192                      <field name='isActivetype='SFBoolvalue='trueaccessType='initializeOnly'/>
193                      <field name='set_positiontype='SFVec3faccessType='inputOnly'/>
194                      <field name='maxPointstype='SFInt32value='50accessType='initializeOnly'/>
195                      <field name='pointCounttype='SFInt32value='0accessType='initializeOnly'/>
196                      <field name='directiontype='SFVec3fvalue='0.0 0.0 0.0accessType='initializeOnly'/>
197                      <field name='resettype='SFTimeaccessType='inputOnly'/>
198                      <field name='positiontype='SFVec3fvalue='0.0 0.0 0.0accessType='initializeOnly'/>
199                      <field name='nullcoordIndextype='MFInt32accessType='initializeOnly'/>
  <![CDATA[
        
ecmascript:
//////////////////////////////////////////////////////////////////////
// author:	-Tom Kaye, Silicon Graphics Inc, 1997 (tomk@sgi.com)
// purpose:	-Generate a polyline tail from a series of coordinates
//		passed into the script (one per clock-tick).
//		Lots of useful auxilliary info is returned as well.
// input:	-a series of position values
// output:	-a polyline consisting of the last maxPoints coordinates
//		passed into the script.
//			- position, orientation and speed of the head
//			  of the motion path
//////////////////////////////////////////////////////////////////////  
function initialize()
{
	position[0] = 0;
	position[1] = 0;
	position[2] = 0;
	last_position = position;
	direction = position;
	distance = 0;
	rotation = new SFRotation(initial_direction, direction);
	speed     = 0;
	last_time = 0;	
	current_time = 0;	
	pointCount = 0;
	stepCount = stepSize;
	currentIndex = 0;
	coord.length = maxPoints;
	coordIndex.length = maxPoints + 3;
	for ( i = 0; i < coordIndex.length; ++i) {
		coordIndex[i] = -1;
	}
}

function reset(value, time)
{
	position[0] = 0;
	position[1] = 0;
	position[2] = 0;
	last_position = position;
	direction = position;
	distance = 0;
	rotation = new SFRotation(initial_direction, direction);
	speed     = 0;
	last_time = 0;	
	current_time = 0;	
	pointCount = 0;
	stepCount = stepSize;
	currentIndex = 0;
	coord.length = maxPoints;
	coordIndex.length = maxPoints + 3;
	for ( i = 0; i < coordIndex.length; ++i) {
		coordIndex[i] = -1;
	}
}

function set_isVisible(value, time)
{
	isVisible = value;
	isVisible_changed = isVisible;
}

function set_isActive(value, time)
{
	if (value != isActive) {
		isActive = value;
		isActive_changed = isActive;
		if (isActive == true) {
			reset_trigger = time;
		}
	} 
}

function set_position(value, time)
{
  last_position = value; 		// a bogus assignment 
  if ( isActive ) {

    // skip every stepSize points
    if ( stepCount >= stepSize ) {

	 stepCount = 0;	

	// update the coordIndex with as few operations as possible
	if ( pointCount <= maxPoints ) {
		// first pass as tail grows from 0 to maxPoints in length
		// and coordIndex consists of only one polyline
		if ( pointCount < maxPoints ) {
			coordIndex[currentIndex + 1] = currentIndex;
			coordIndex[currentIndex + 2] = -1;
		} else {
			// occurs once: currentIndex == pointCount == maxPoints
			coordIndex[currentIndex + 1] = 0;
			coordIndex[currentIndex + 2] = -1;
			currentIndex = 0;
			coordIndex[currentIndex ] = currentIndex;
			coordIndex[currentIndex + 1] = -1;
		}
	} else {
		// subsequent passes when tail is a constant length of maxPoints
		// and coordIndex consists of two polylines
		if ( currentIndex < maxPoints ) {
			coordIndex[currentIndex]     = currentIndex;
			coordIndex[currentIndex + 1] = -1;
		} else {
			// occurs once each cycle when currentIndex == maxPoints
			coordIndex[currentIndex ]    = 0;
			coordIndex[currentIndex + 1] = -1;
			currentIndex = 0;
			coordIndex[currentIndex ] = currentIndex;
			coordIndex[currentIndex + 1] = -1;
		}
	}


	// save last position  and time to later compute direction and speed
	last_position = position;
	position = value;
	last_time = current_time;
	current_time = time;

	// add the new position to the coordinate array ring-buffer
	coord[currentIndex] = position;
	position_changed = position; 	// echo position value as an output


	
	// compute direction based on last two points passed in
	direction = position.subtract(last_position);
	distance = direction.length();

	// compute a new rotation only if there has been some finite movement
	if ( distance >= 0.00001 ) {
			rotation = new SFRotation(initial_direction, direction);
	}

	// Compute speed and output results only if two or more points have been
	// passed in since initialization or last reset
	if ( pointCount >= 1 ) {

		// compute speed
		speed = distance / (current_time - last_time);
		rotation_changed = rotation;
		speed_changed = speed;

		// outpout the coord and coordIndex arrays only when appropriate
		if (isVisible ) {
			coord_changed = coord;
			coordIndex_changed = coordIndex;
		} else {
			coordIndex_changed = nullcoordIndex;
		}

	}

	// increment the appropriate counters
	currentIndex += 1;	// cycles between 0 and maxPoints (length of tail)
	pointCount += 1;	// total number of points processed since reset

    }  // end stepCount block

    stepCount += 1;
  }
}

      
]]>
201                 </Script>
202                 <Transform DEF='MotionTrailLineL'>
203                      <Shape>
204                           <Appearance>
205                                <Material ambientIntensity='0.0diffuseColor='0.0 0.0 0.0emissiveColor='1.0 0.0 0.0shininess='0.0510204specularColor='0.622449 0.622449 0.622449'/>
206                           </Appearance>
207 
                         <!-- ROUTE information for MotionTrailLineSetL node:  [from MotionTrailScriptL.coordIndex_changed to set_coordIndex ] -->
                         <IndexedLineSet DEF='MotionTrailLineSetLcoordIndex='0 1 -1'>
208 
                              <!-- ROUTE information for MotionTrailCoordL node:  [from MotionTrailScriptL.coord_changed to set_point ] -->
                              <Coordinate DEF='MotionTrailCoordLpoint='0.0 0.0 0.0 1.0 0.0 0.0'/>
209                           </IndexedLineSet>
210                      </Shape>
211                 </Transform>
212            </Transform>
213            <Transform DEF='MotionTrailRight'>
214 
215                      <field name='stepCounttype='SFInt32value='1accessType='initializeOnly'/>
216                      <field name='isVisible_changedtype='SFBoolaccessType='outputOnly'/>
217                      <field name='coordIndex_changedtype='MFInt32accessType='outputOnly'/>
218                      <field name='currentIndextype='SFInt32value='0accessType='initializeOnly'/>
219                      <field name='last_timetype='SFTimevalue='0.0accessType='initializeOnly'/>
220                      <field name='distancetype='SFFloatvalue='0.0accessType='initializeOnly'/>
221                      <field name='isActive_changedtype='SFBoolaccessType='outputOnly'/>
222                      <field name='stepSizetype='SFInt32value='1accessType='initializeOnly'/>
223                      <field name='coordIndextype='MFInt32value='-1 -1accessType='initializeOnly'/>
224                      <field name='startIndextype='SFInt32value='0accessType='initializeOnly'/>
225                      <field name='position_changedtype='SFVec3faccessType='outputOnly'/>
226                      <field name='reset_triggertype='SFTimeaccessType='outputOnly'/>
227                      <field name='coord_changedtype='MFVec3faccessType='outputOnly'/>
228                      <field name='current_timetype='SFTimevalue='0.0accessType='initializeOnly'/>
229                      <field name='rotation_changedtype='SFRotationaccessType='outputOnly'/>
230                      <field name='set_isVisibletype='SFBoolaccessType='inputOnly'/>
231                      <field name='last_positiontype='SFVec3fvalue='0.0 0.0 0.0accessType='initializeOnly'/>
232                      <field name='set_isActivetype='SFBoolaccessType='inputOnly'/>
233                      <field name='initial_directiontype='SFVec3fvalue='0.0 0.0 -1.0accessType='initializeOnly'/>
234                      <field name='isVisibletype='SFBoolvalue='trueaccessType='initializeOnly'/>
235                      <field name='coordtype='MFVec3fvalue='0.0 0.0 0.0 1.0 0.0 0.0accessType='initializeOnly'/>
236                      <field name='rotationtype='SFRotationvalue='0.0 0.0 1.0 0.0accessType='initializeOnly'/>
237                      <field name='speed_changedtype='SFFloataccessType='outputOnly'/>
238                      <field name='speedtype='SFFloatvalue='0.0accessType='initializeOnly'/>
239                      <field name='isActivetype='SFBoolvalue='trueaccessType='initializeOnly'/>
240                      <field name='set_positiontype='SFVec3faccessType='inputOnly'/>
241                      <field name='maxPointstype='SFInt32value='50accessType='initializeOnly'/>
242                      <field name='pointCounttype='SFInt32value='0accessType='initializeOnly'/>
243                      <field name='directiontype='SFVec3fvalue='0.0 0.0 0.0accessType='initializeOnly'/>
244                      <field name='resettype='SFTimeaccessType='inputOnly'/>
245                      <field name='positiontype='SFVec3fvalue='0.0 0.0 0.0accessType='initializeOnly'/>
246                      <field name='nullcoordIndextype='MFInt32accessType='initializeOnly'/>
  <![CDATA[
        
ecmascript:
//////////////////////////////////////////////////////////////////////
// author:	-Tom Kaye, Silicon Graphics Inc, 1997 (tomk@sgi.com)
// purpose:	-Generate a polyline tail from a series of coordinates
//		passed into the script (one per clock-tick).
//		Lots of useful auxilliary info is returned as well.
// input:	-a series of position values
// output:	-a polyline consisting of the last maxPoints coordinates
//		passed into the script.
//			- position, orientation and speed of the head
//			  of the motion path
//////////////////////////////////////////////////////////////////////  
function initialize()
{
	position[0] = 0;
	position[1] = 0;
	position[2] = 0;
	last_position = position;
	direction = position;
	distance = 0;
	rotation = new SFRotation(initial_direction, direction);
	speed     = 0;
	last_time = 0;	
	current_time = 0;	
	pointCount = 0;
	stepCount = stepSize;
	currentIndex = 0;
	coord.length = maxPoints;
	coordIndex.length = maxPoints + 3;
	for ( i = 0; i < coordIndex.length; ++i) {
		coordIndex[i] = -1;
	}
}

function reset(value, time)
{
	position[0] = 0;
	position[1] = 0;
	position[2] = 0;
	last_position = position;
	direction = position;
	distance = 0;
	rotation = new SFRotation(initial_direction, direction);
	speed     = 0;
	last_time = 0;	
	current_time = 0;	
	pointCount = 0;
	stepCount = stepSize;
	currentIndex = 0;
	coord.length = maxPoints;
	coordIndex.length = maxPoints + 3;
	for ( i = 0; i < coordIndex.length; ++i) {
		coordIndex[i] = -1;
	}
}

function set_isVisible(value, time)
{
	isVisible = value;
	isVisible_changed = isVisible;
}

function set_isActive(value, time)
{
	if (value != isActive) {
		isActive = value;
		isActive_changed = isActive;
		if (isActive == true) {
			reset_trigger = time;
		}
	} 
}

function set_position(value, time)
{
  last_position = value; 		// a bogus assignment 
  if ( isActive ) {

    // skip every stepSize points
    if ( stepCount >= stepSize ) {

	 stepCount = 0;	

	// update the coordIndex with as few operations as possible
	if ( pointCount <= maxPoints ) {
		// first pass as tail grows from 0 to maxPoints in length
		// and coordIndex consists of only one polyline
		if ( pointCount < maxPoints ) {
			coordIndex[currentIndex + 1] = currentIndex;
			coordIndex[currentIndex + 2] = -1;
		} else {
			// occurs once: currentIndex == pointCount == maxPoints
			coordIndex[currentIndex + 1] = 0;
			coordIndex[currentIndex + 2] = -1;
			currentIndex = 0;
			coordIndex[currentIndex ] = currentIndex;
			coordIndex[currentIndex + 1] = -1;
		}
	} else {
		// subsequent passes when tail is a constant length of maxPoints
		// and coordIndex consists of two polylines
		if ( currentIndex < maxPoints ) {
			coordIndex[currentIndex]     = currentIndex;
			coordIndex[currentIndex + 1] = -1;
		} else {
			// occurs once each cycle when currentIndex == maxPoints
			coordIndex[currentIndex ]    = 0;
			coordIndex[currentIndex + 1] = -1;
			currentIndex = 0;
			coordIndex[currentIndex ] = currentIndex;
			coordIndex[currentIndex + 1] = -1;
		}
	}

	// save last position  and time to later compute direction and speed
	last_position = position;
	position = value;
	last_time = current_time;
	current_time = time;

	// add the new position to the coordinate array ring-buffer
	coord[currentIndex] = position;
	position_changed = position; 	// echo position value as an output

	// compute direction based on last two points passed in
	direction = position.subtract(last_position);
	distance = direction.length();

	// compute a new rotation only if there has been some finite movement
	if ( distance >= 0.00001 ) {
			rotation = new SFRotation(initial_direction, direction);
	}

	// Compute speed and output results only if two or more points have been
	// passed in since initialization or last reset
	if ( pointCount >= 1 ) {

		// compute speed
		speed = distance / (current_time - last_time);
		rotation_changed = rotation;
		speed_changed = speed;

		// outpout the coord and coordIndex arrays only when appropriate
		if (isVisible ) {
			coord_changed = coord;
			coordIndex_changed = coordIndex;
		} else {
			coordIndex_changed = nullcoordIndex;
		}

	}

	// increment the appropriate counters
	currentIndex += 1;	// cycles between 0 and maxPoints (length of tail)
	pointCount += 1;	// total number of points processed since reset

    }  // end stepCount block

    stepCount += 1;
  }
}

      
]]>
248                 </Script>
249                 <Transform DEF='MotionTrailLineR'>
250                      <Shape>
251                           <Appearance>
252                                <Material ambientIntensity='0.0diffuseColor='0.0 0.0 0.0emissiveColor='0.0 1.0 0.168349shininess='0.0510204specularColor='0.622449 0.622449 0.622449'/>
253                           </Appearance>
254 
                         <!-- ROUTE information for MotionTrailLineSetR node:  [from MotionTrailScriptR.coordIndex_changed to set_coordIndex ] -->
                         <IndexedLineSet DEF='MotionTrailLineSetRcoordIndex='0 1 -1'>
255 
                              <!-- ROUTE information for MotionTrailCoordR node:  [from MotionTrailScriptR.coord_changed to set_point ] -->
                              <Coordinate DEF='MotionTrailCoordRpoint='0.0 0.0 0.0 1.0 0.0 0.0'/>
256                           </IndexedLineSet>
257                      </Shape>
258                 </Transform>
259            </Transform>
260 
261                 <field name='leftWingtipCoordinate_changedtype='SFVec3faccessType='outputOnly'/>
262                 <field name='set_vehicleRotationtype='SFRotationaccessType='inputOnly'/>
263                 <field name='vehiclePositiontype='SFVec3fvalue='0.0 0.0 0.0accessType='initializeOnly'/>
264                 <field name='rightOffsetVectortype='SFVec3fvalue='0.25 -0.5 0.0accessType='initializeOnly'/>
265                 <field name='leftOffsetVectortype='SFVec3fvalue='-0.25 -0.5 0.0accessType='initializeOnly'/>
266                 <field name='rightWingtipCoordinate_changedtype='SFVec3faccessType='outputOnly'/>
267                 <field name='set_vehiclePositiontype='SFVec3faccessType='inputOnly'/>
268                 <field name='vehicleRotationtype='SFRotationvalue='0.0 0.0 1.0 0.0accessType='initializeOnly'/>
  <![CDATA[
      
ecmascript:
//////////////////////////////////////////////////////////////////////
// author:	Tom Kaye, Silicon Graphics Inc, 1997 (tomk@sgi.com)
// purpose:	Generate absolute WingTip coordinates from a single
//		position and rotation value. 
// input:	position and rotation of a vehicle
// output:	absolute coordinates of left and right wingtips
//////////////////////////////////////////////////////////////////////  
function set_vehiclePosition(value, time)
{
	vehiclePosition = value;
	rightWingtipCoordinate_changed = vehiclePosition.add( vehicleRotation.multVec(rightOffsetVector) );
	leftWingtipCoordinate_changed  = vehiclePosition.add( vehicleRotation.multVec(leftOffsetVector) );
		
}

function set_vehicleRotation(value, time)
{
	vehicleRotation = value;	
}

    
]]>
270            </Script>
271            < ROUTE  fromNode='enterWorldScript' fromField='firstTime' toNode='enterWorldTimeSensor' toField='set_enabled'/>
272            < ROUTE  fromNode='enterWorldTimeSensor' fromField='time' toNode='enterWorldScript' toField='triggerIn'/>
273            < ROUTE  fromNode='TargetVehicle' fromField='translation_changed' toNode='offsetCoordinates' toField='rawCoordinateIn'/>
274            < ROUTE  fromNode='Time' fromField='cycleInterval_changed' toNode='MotionTrailScriptL' toField='reset'/>
275            < ROUTE  fromNode='wingtipCoordinates' fromField='leftWingtipCoordinate_changed' toNode='MotionTrailScriptL' toField='set_position'/>
276            < ROUTE  fromNode='MotionTrailScriptL' fromField='coord_changed' toNode='MotionTrailCoordL' toField='set_point'/>
277            < ROUTE  fromNode='MotionTrailScriptL' fromField='coordIndex_changed' toNode='MotionTrailLineSetL' toField='set_coordIndex'/>
278            < ROUTE  fromNode='Time' fromField='cycleInterval_changed' toNode='MotionTrailScriptR' toField='reset'/>
279            < ROUTE  fromNode='wingtipCoordinates' fromField='rightWingtipCoordinate_changed' toNode='MotionTrailScriptR' toField='set_position'/>
280            < ROUTE  fromNode='MotionTrailScriptR' fromField='coord_changed' toNode='MotionTrailCoordR' toField='set_point'/>
281            < ROUTE  fromNode='MotionTrailScriptR' fromField='coordIndex_changed' toNode='MotionTrailLineSetR' toField='set_coordIndex'/>
282            < ROUTE  fromNode='offsetCoordinates' fromField='offsetCoordinateOut' toNode='wingtipCoordinates' toField='set_vehiclePosition'/>
283            < ROUTE  fromNode='TargetVehicle' fromField='rotation_changed' toNode='wingtipCoordinates' toField='set_vehicleRotation'/>
284            < ROUTE  fromNode='enterWorldScript' fromField='startTime' toNode='Time' toField='set_startTime'/>
285            < ROUTE  fromNode='Time' fromField='fraction_changed' toNode='TargetVehicleTranslationInterp' toField='set_fraction'/>
286            < ROUTE  fromNode='Time' fromField='fraction_changed' toNode='TargetVehicleRotationInterp' toField='set_fraction'/>
287            < ROUTE  fromNode='TargetVehicleTranslationInterp' fromField='value_changed' toNode='TargetVehicle' toField='set_translation'/>
288            < ROUTE  fromNode='TargetVehicleRotationInterp' fromField='value_changed' toNode='TargetVehicle' toField='set_rotation'/>
289       </Scene>
290  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top Index for DEF nodes: _4, AircraftObject, AppFromBelow, BottomWhite, CoasterAnim, CubePoints, enterWorldScript, enterWorldTimeSensor, GroundEdges, GroundPlane, GroundPlaneFromBelow, LeftSideGreen, MatFromBelow, MotionTrailCoordL, MotionTrailCoordR, MotionTrailLeft, MotionTrailLineL, MotionTrailLineR, MotionTrailLineSetL, MotionTrailLineSetR, MotionTrailRight, MotionTrailScriptL, MotionTrailScriptR, NavInfo1, offsetCoordinates, RightSideRed, Shed, TargetVehicle, TargetVehicleRotationInterp, TargetVehicleTranslationInterp, TexGrass, TexTransGrass, Texturizer, Time, TopBlue, wingtipCoordinates

Index for Viewpoint nodes: Viewpoint_1, Viewpoint_2, Viewpoint_3, Viewpoint_4, Viewpoint_5, Viewpoint_6, Viewpoint_7, Viewpoint_8
-->
X3D Tooltips element index: Appearance, Background, Color, Coordinate, DirectionalLight, field, Group, head, ImageTexture, IndexedFaceSet, IndexedLineSet, Inline, Material, meta, NavigationInfo, OrientationInterpolator, PositionInterpolator, ROUTE, Scene, Script, Shape, Switch, TextureTransform, TimeSensor, Transform, Viewpoint, WorldInfo, X3D, accessType and type, XML data types, field types

Event Graph ROUTE Table entries with 18 ROUTE connections total, showing X3D event-model relationships for this scene.

Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.

      MotionTrailScriptL
Script
coord_changed
MFVec3f

ROUTE
event to
(1)
MotionTrailCoordL
Coordinate
set_point
MFVec3f
MotionTrailScriptL
Script
coordIndex_changed
MFInt32

ROUTE
event to
(1)
MotionTrailLineSetL
IndexedLineSet
set_coordIndex
MFInt32

      MotionTrailScriptR
Script
coord_changed
MFVec3f

ROUTE
event to
(1)
MotionTrailCoordR
Coordinate
set_point
MFVec3f
MotionTrailScriptR
Script
coordIndex_changed
MFInt32

ROUTE
event to
(1)
MotionTrailLineSetR
IndexedLineSet
set_coordIndex
MFInt32

Texturizer
Script
No ROUTE connection found for output events from this node.
Contains SFNode fields with direct access to another node. 

Additional guidance on X3D animation can be found in the 10-Step Animation Design Process and Event Tracing hint sheets. Have fun with X3D! 😀

-->
<!-- Online at
https://www.web3d.org/x3d/content/examples/Basic/Followers/CoasterClassicalIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/Followers/CoasterClassical.x3d -->

<!-- Color legend: X3D terminology <X3dNode DEF='idName' field='value'/> matches XML terminology <XmlElement DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
-->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->