<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.1//EN" "https://www.web3d.org/specifications/x3d-3.1.dtd">
<X3D profile='Immersive' version='3.1' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.1.xsd'>
  <head>
    <component level='2' name='Geometry2D'/>
    <meta content='NTDSPrototypes.x3d' name='title'/>
    <meta content='Standard Naval Tactical Display Symbology (NTDS) icons' name='description'/>
    <meta content='LT Patrick Sullivan' name='creator'/>
    <meta content='11 February 2006' name='created'/>
    <meta content='28 November 2019' name='modified'/>
    <meta content='NTDSExternProtoExamples.x3d' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/Savage/Tools/Symbology/NTDSPrototypes.x3d' name='identifier'/>
    <meta content='X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit' name='generator'/>
    <meta content='../../license.html' name='license'/>
  </head>
  <Scene>
    <!-- These first two Protos are common to all symbology -->
    <WorldInfo title='NTDSPrototypes.x3d'/>
    <ProtoDeclare appinfo='NTDS Symbology for vector' name='SymbolVector'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Color for labels' name='labelColor' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <Shape>
            <Appearance>
              <Material>
                <IS>
                  <connect nodeField='diffuseColor' protoField='labelColor'/>
                  <connect nodeField='emissiveColor' protoField='labelColor'/>
                </IS>
              </Material>
            </Appearance>
            <!-- Cylinder bottom='false' height='.01' radius='.1' side='false'/ -->
            <IndexedTriangleSet ccw='true' colorPerVertex='true' index='2 1 0' normalPerVertex='true' solid='true'>
              <Coordinate point='2 0 -0.05 2.3 0 0 2 0 0.05'/>
            </IndexedTriangleSet>
          </Shape>
          <Shape>
            <IndexedLineSet colorIndex='0 0' colorPerVertex='false' coordIndex='0 1'>
              <Coordinate point='0 0 0 2 0 0'/>
              <Color>
                <IS>
                  <connect nodeField='color' protoField='color'/>
                </IS>
              </Color>
            </IndexedLineSet>
          </Shape>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for label' name='SymbolLabel'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Color for labels' name='labelColor' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Additional information for the track (i.e. track number entityID entity name)' name='trackLabel' type='MFString'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform rotation='1 0 0 -1.57' translation='0 0 1.5'>
          <Shape>
            <Appearance>
              <Material>
                <IS>
                  <connect nodeField='diffuseColor' protoField='labelColor'/>
                </IS>
              </Material>
            </Appearance>
            <Text>
              <IS>
                <connect nodeField='string' protoField='trackLabel'/>
              </IS>
              <FontStyle justify='"MIDDLE" "MIDDLE"' size='0.8'/>
            </Text>
          </Shape>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <!-- Sea Units -->
    <ProtoDeclare appinfo='NTDS Symbology for surface vessel, classification pending' name='SurfacePending'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Color for labels' name='labelColor' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Symbol Modifier' name='symbolModifier' type='MFString'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='1 1 0'/>
            <fieldValue name='labelColor' value='1 1 0'/>
          </ProtoInstance>
          <Billboard>
            <!-- Symbol Geometry Top arc -->
            <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
              <Shape DEF='SemiCircle'>
                <Arc2D endAngle='3.1415926536'/>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='emissiveColor' protoField='color'/>
                    </IS>
                  </Material>
                </Appearance>
              </Shape>
            </Transform>
            <!-- Right arc -->
            <Transform rotation='0 -1 0 1.57'>
              <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
                <Shape USE='SemiCircle'/>
              </Transform>
            </Transform>
            <!-- Left arc -->
            <Transform rotation='0 1 0 1.57'>
              <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
                <Shape USE='SemiCircle'/>
              </Transform>
            </Transform>
            <!-- Bottom arc -->
            <Transform rotation='1 0 0 1.57' translation='0 0 1'>
              <Shape USE='SemiCircle'/>
            </Transform>
            <!-- Symbol Modifier -->
            <Transform rotation='1 0 0 -1.57' translation='0 0 -1.1'>
              <Shape>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='diffuseColor' protoField='labelColor'/>
                    </IS>
                  </Material>
                </Appearance>
                <Text>
                  <IS>
                    <connect nodeField='string' protoField='symbolModifier'/>
                  </IS>
                  <FontStyle justify='"MIDDLE" "MIDDLE"' size='2'/>
                </Text>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for surface vessel, classification unknown' name='SurfaceUnknown'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='SFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='1 1 0'/>
            <fieldValue name='labelColor' value='1 1 0'/>
          </ProtoInstance>
          <Billboard>
            <!-- Symbol Geometry Top arc -->
            <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
              <Shape DEF='SemiCircle2'>
                <Arc2D endAngle='3.1415926536'/>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='emissiveColor' protoField='color'/>
                    </IS>
                  </Material>
                </Appearance>
              </Shape>
            </Transform>
            <!-- Right arc -->
            <Transform rotation='0 -1 0 1.57'>
              <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
                <Shape USE='SemiCircle2'/>
              </Transform>
            </Transform>
            <!-- Left arc -->
            <Transform rotation='0 1 0 1.57'>
              <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
                <Shape USE='SemiCircle2'/>
              </Transform>
            </Transform>
            <!-- Bottom arc -->
            <Transform rotation='1 0 0 1.57' translation='0 0 1'>
              <Shape USE='SemiCircle2'/>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for surface vessel, classification friendly' name='SurfaceFriend'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='0 0 1'/>
            <fieldValue name='labelColor' value='0 0 1'/>
          </ProtoInstance>
          <Billboard>
            <Transform>
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0' colorPerVertex='false' coordIndex='1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33'>
                  <Coordinate point='0 0 -1 0.195 0 -0.981 0.382 0 -0.924 0.555 0 -0.832 0.707 0 -0.708 0.831 0 -0.556 0.923 0 -0.383 0.98 0 -0.196 1 0 0 0.98 0 0.195 0.923 0 0.382 0.831 0 0.555 0.707 0 0.707 0.555 0 0.831 0.382 0 0.923 0.195 0 0.98 0 0 1 -0.195 0 0.98 -0.382 0 0.923 -0.555 0 0.831 -0.707 0 0.707 -0.831 0 0.555 -0.923 0 0.382 -0.98 0 0.195 -1 0 0 -0.981 0 -0.195 -0.924 0 -0.382 -0.832 0 -0.555 -0.708 0 -0.707 -0.556 0 -0.831 -0.383 0 -0.923 -0.196 0 -0.98 0 0 -1 0.195 0 -0.981'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for surface vessel, classification neutral' name='SurfaceNeutral'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='0 1 0'/>
            <fieldValue name='labelColor' value='0 1 0'/>
          </ProtoInstance>
          <Billboard>
            <Transform>
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0 0' colorPerVertex='false' coordIndex='0 1 2 3 0'>
                  <Coordinate point='-1.0 0 1.0 1.0 0 1.0 1.0 0 -1.0 -1.0 0 -1.0'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare name='SurfaceHostile'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='1 0 0'/>
            <fieldValue name='labelColor' value='1 0 0'/>
          </ProtoInstance>
          <Billboard>
            <Transform rotation='0 1 0 .785'>
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0 0' colorPerVertex='false' coordIndex='0 1 2 3 0'>
                  <Coordinate point='-1.0 0 1.0 1.0 0 1.0 1.0 0 -1.0 -1.0 0 -1.0'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for surface vessel, classification assumed friendly' name='SurfaceAssumedFriend'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Color for labels' name='labelColor' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Symbol Modifier' name='symbolModifier' type='MFString'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='0 0 1'/>
            <fieldValue name='labelColor' value='0 0 1'/>
          </ProtoInstance>
          <Billboard>
            <Transform>
              <!-- TODO: Save -> Symbol Geometry (broken circle) -->
              <!-- Shape> <IndexedLineSet colorIndex='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0' colorPerVertex='false' coordIndex='0 1 -1 2 3 -1 4 5 -1 6 7 -1 8 9 -1 10 11 -1 12 13 -1 14 15 -1 16 17 -1 18 19 -1 20 21'> <Coordinate point='0 0 -1 0.195 0 -0.981 0.555 0 -0.832 0.707 0 -0.708 0.923 0 -0.383 0.98 0 -0.196 0.98 0 0.195 0.923 0 0.382 0.707 0 0.707 0.555 0 0.831 0.195 0 0.98 0 0 1 -0.382 0 0.923 -0.555 0 0.831 -0.831 0 0.555 -0.923 0 0.382 -1 0 0 -0.981 0 -0.195 -0.832 0 -0.555 -0.708 0 -0.707 -0.383 0 -0.923 -0.196 0 -0.98'/> <Color> <IS> <connect nodeField='color' protoField='color'/> </IS> </Color> </IndexedLineSet> </Shape -->
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0' colorPerVertex='false' coordIndex='1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33'>
                  <Coordinate point='0 0 -1 0.195 0 -0.981 0.382 0 -0.924 0.555 0 -0.832 0.707 0 -0.708 0.831 0 -0.556 0.923 0 -0.383 0.98 0 -0.196 1 0 0 0.98 0 0.195 0.923 0 0.382 0.831 0 0.555 0.707 0 0.707 0.555 0 0.831 0.382 0 0.923 0.195 0 0.98 0 0 1 -0.195 0 0.98 -0.382 0 0.923 -0.555 0 0.831 -0.707 0 0.707 -0.831 0 0.555 -0.923 0 0.382 -0.98 0 0.195 -1 0 0 -0.981 0 -0.195 -0.924 0 -0.382 -0.832 0 -0.555 -0.708 0 -0.707 -0.556 0 -0.831 -0.383 0 -0.923 -0.196 0 -0.98 0 0 -1 0.195 0 -0.981'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
            <!-- Symbol Modifier -->
            <Transform rotation='1 0 0 -1.57' translation='1 0 -1.2'>
              <Shape>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='diffuseColor' protoField='labelColor'/>
                    </IS>
                  </Material>
                </Appearance>
                <Text>
                  <IS>
                    <connect nodeField='string' protoField='symbolModifier'/>
                  </IS>
                  <FontStyle justify='"BEGIN" "BEGIN"' size='0.5'/>
                </Text>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for surface vessel, classification suspected hostile' name='SurfaceSuspect'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Color for labels' name='labelColor' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Symbol Modifier' name='symbolModifier' type='MFString'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='1 0 0'/>
            <fieldValue name='labelColor' value='1 0 0'/>
          </ProtoInstance>
          <Billboard>
            <Transform rotation='0 1 0 .785'>
              <!-- TODO: Save -> Symbol Geometry (broken lined square) -->
              <!-- Shape> <IndexedLineSet colorIndex='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0' colorPerVertex='false' coordIndex='0 1 -1 2 3 -1 4 5 -1 6 7 8 -1 9 10 -1 11 12 -1 13 14 15 -1 16 17 -1 18 19 -1 20 21 22 -1 23 24 -1 25 26 -1 27 28'> <Coordinate point='-1.0 0 1.0 -0.8 0 1.0 -0.4 0 1.0 -0.2 0 1.0 0.2 0 1.0 0.4 0 1.0 0.8 0 1.0 1.0 0 1.0 1.0 0 0.8 1.0 0 0.4 1.0 0 0.2 1.0 0 -0.2 1.0 0 -0.4 1.0 0 -0.8 1.0 0 -1.0 0.8 0 -1.0 0.4 0 -1.0 0.2 0 -1.0 -0.2 0 -1.0 -0.4 0 -1.0 -0.8 0 -1.0 -1.0 0 -1.0 -1.0 0 -0.8 -1.0 0 -0.4 -1.0 0 -0.2 -1.0 0 0.2 -1.0 0 0.4 -1.0 0 0.8 -1.0 0 1.0'/> <Color> <IS> <connect nodeField='color' protoField='color'/> </IS> </Color> </IndexedLineSet> </Shape -->
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0 0' colorPerVertex='false' coordIndex='0 1 2 3 0'>
                  <Coordinate point='-1.0 0 1.0 1.0 0 1.0 1.0 0 -1.0 -1.0 0 -1.0'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
            <!-- Symbol Modifier -->
            <Transform rotation='1 0 0 -1.57' translation='1 0 -1.2'>
              <Shape>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='diffuseColor' protoField='labelColor'/>
                    </IS>
                  </Material>
                </Appearance>
                <Text>
                  <IS>
                    <connect nodeField='string' protoField='symbolModifier'/>
                  </IS>
                  <FontStyle justify='"BEGIN" "BEGIN"' size='0.5'/>
                </Text>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <!-- Air Units -->
    <ProtoDeclare appinfo='NTDS Symbology for air vessel, classification pending' name='AirPending'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Color for labels' name='labelColor' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Symbol Modifier' name='symbolModifier' type='MFString'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='1 1 0'/>
            <fieldValue name='labelColor' value='1 1 0'/>
          </ProtoInstance>
          <Billboard>
            <!-- Symbol Geometry Top arc -->
            <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
              <Shape DEF='SemiCircle3'>
                <Arc2D endAngle='3.1415926536'/>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='emissiveColor' protoField='color'/>
                    </IS>
                  </Material>
                </Appearance>
              </Shape>
            </Transform>
            <!-- Right arc -->
            <Transform rotation='0 -1 0 1.57'>
              <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
                <Shape USE='SemiCircle3'/>
              </Transform>
            </Transform>
            <!-- Left arc -->
            <Transform rotation='0 1 0 1.57'>
              <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
                <Shape USE='SemiCircle3'/>
              </Transform>
            </Transform>
            <!-- Symbol Modifier -->
            <Transform rotation='1 0 0 -1.57' translation='0 0 -1.1'>
              <Shape>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='diffuseColor' protoField='labelColor'/>
                    </IS>
                  </Material>
                </Appearance>
                <Text>
                  <IS>
                    <connect nodeField='string' protoField='symbolModifier'/>
                  </IS>
                  <FontStyle justify='"MIDDLE" "MIDDLE"' size='2'/>
                </Text>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for air vessel, classification unknown' name='AirUnknown'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='SFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='1 1 0'/>
            <fieldValue name='labelColor' value='1 1 0'/>
          </ProtoInstance>
          <Billboard>
            <!-- Symbol Geometry Top arc -->
            <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
              <Shape DEF='SemiCircle4'>
                <Arc2D endAngle='3.1415926536'/>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='emissiveColor' protoField='color'/>
                    </IS>
                  </Material>
                </Appearance>
              </Shape>
            </Transform>
            <!-- Right arc -->
            <Transform rotation='0 -1 0 1.57'>
              <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
                <Shape USE='SemiCircle4'/>
              </Transform>
            </Transform>
            <!-- Left arc -->
            <Transform rotation='0 1 0 1.57'>
              <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
                <Shape USE='SemiCircle4'/>
              </Transform>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for air vessel, classification friendly' name='AirFriend'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='0 0 1'/>
            <fieldValue name='labelColor' value='0 0 1'/>
          </ProtoInstance>
          <Billboard>
            <Transform rotation='0 1 0 3.14'>
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0' colorPerVertex='false' coordIndex='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'>
                  <Coordinate point='1 0 0 0.98 0 0.195 0.923 0 0.382 0.831 0 0.555 0.707 0 0.707 0.555 0 0.831 0.382 0 0.923 0.195 0 0.98 0 0 1 -0.195 0 0.98 -0.382 0 0.923 -0.555 0 0.831 -0.707 0 0.707 -0.831 0 0.555 -0.923 0 0.382 -0.98 0 0.195 -1 0 0'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for air vessel, classification neutral' name='AirNeutral'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='0 1 0'/>
            <fieldValue name='labelColor' value='0 1 0'/>
          </ProtoInstance>
          <Billboard>
            <Transform>
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0' colorPerVertex='false' coordIndex='0 1 2 3'>
                  <Coordinate point='-1.0 0 0 -1.0 0 -1.0 1.0 0 -1.0 1.0 0 0'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for air vessel, classification hostile' name='AirHostile'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='1 0 0'/>
            <fieldValue name='labelColor' value='1 0 0'/>
          </ProtoInstance>
          <Billboard>
            <Transform rotation='0 1 0 2.295'>
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0' colorPerVertex='false' coordIndex='0 1 2'>
                  <Coordinate point='-1.0 0 1.0 1.0 0 1.0 1.0 0 -1.0'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for air vessel, classification assumed friendly' name='AirAssumedFriend'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Color for labels' name='labelColor' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Symbol Modifier' name='symbolModifier' type='MFString'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='0 0 1'/>
            <fieldValue name='labelColor' value='0 0 1'/>
          </ProtoInstance>
          <Billboard>
            <Transform rotation='0 1 0 1.57'>
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0 0 0 0 0 0 0 0 0' colorPerVertex='false' coordIndex='0 1 -1 2 3 -1 4 5 -1 6 7 -1 8 9 -1 10 11'>
                  <Coordinate point='0 0 -1 0.195 0 -0.981 0.555 0 -0.832 0.707 0 -0.708 0.923 0 -0.383 0.98 0 -0.196 0.98 0 0.195 0.923 0 0.382 0.707 0 0.707 0.555 0 0.831 0.195 0 0.98 0 0 1'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
            <!-- Symbol Modifier -->
            <Transform rotation='1 0 0 -1.57' translation='1 0 -1.2'>
              <Shape>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='diffuseColor' protoField='labelColor'/>
                    </IS>
                  </Material>
                </Appearance>
                <Text>
                  <IS>
                    <connect nodeField='string' protoField='symbolModifier'/>
                  </IS>
                  <FontStyle justify='"BEGIN" "BEGIN"' size='0.5'/>
                </Text>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for air vessel, classification suspect' name='AirSuspect'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Color for labels' name='labelColor' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Symbol Modifier' name='symbolModifier' type='MFString'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='1 0 0'/>
            <fieldValue name='labelColor' value='1 0 0'/>
          </ProtoInstance>
          <Billboard>
            <Transform rotation='0 1 0 2.295'>
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0 0' colorPerVertex='false' coordIndex='0 1 2 3 0'>
                  <Coordinate point='-1.0 0 1.0 1.0 0 1.0 1.0 0 -1.0 -1.0 0 -1.0'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
            <!-- Symbol Modifier -->
            <Transform rotation='1 0 0 -1.57' translation='1 0 -1.2'>
              <Shape>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='diffuseColor' protoField='labelColor'/>
                    </IS>
                  </Material>
                </Appearance>
                <Text>
                  <IS>
                    <connect nodeField='string' protoField='symbolModifier'/>
                  </IS>
                  <FontStyle justify='"BEGIN" "BEGIN"' size='0.5'/>
                </Text>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <!-- Sub-Surface Units -->
    <ProtoDeclare appinfo='NTDS Symbology for subsurface vessel, classification pending' name='SubSurfacePending'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Color for labels' name='labelColor' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Symbol Modifier' name='symbolModifier' type='MFString'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='1 1 0'/>
            <fieldValue name='labelColor' value='1 1 0'/>
          </ProtoInstance>
          <Billboard>
            <!-- Symbol Geometry Right arc -->
            <Transform rotation='0 -1 0 1.57'>
              <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
                <Shape DEF='SemiCircle5'>
                  <Arc2D endAngle='3.1415926536'/>
                  <Appearance>
                    <Material>
                      <IS>
                        <connect nodeField='emissiveColor' protoField='color'/>
                      </IS>
                    </Material>
                  </Appearance>
                </Shape>
              </Transform>
            </Transform>
            <!-- Left arc -->
            <Transform rotation='0 1 0 1.57'>
              <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
                <Shape USE='SemiCircle5'/>
              </Transform>
            </Transform>
            <!-- Bottom arc -->
            <Transform rotation='1 0 0 1.57' translation='0 0 1'>
              <Shape USE='SemiCircle5'/>
            </Transform>
            <!-- Symbol Modifier -->
            <Transform rotation='1 0 0 -1.57' translation='0 0 -1.1'>
              <Shape>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='diffuseColor' protoField='labelColor'/>
                    </IS>
                  </Material>
                </Appearance>
                <Text>
                  <IS>
                    <connect nodeField='string' protoField='symbolModifier'/>
                  </IS>
                  <FontStyle justify='"MIDDLE" "MIDDLE"' size='2'/>
                </Text>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for subsurface vessel, classification unknown' name='SubSurfaceUnknown'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='SFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='1 1 0'/>
            <fieldValue name='labelColor' value='1 1 0'/>
          </ProtoInstance>
          <Billboard>
            <!-- Symbol Geometry Right arc -->
            <Transform rotation='0 -1 0 1.57'>
              <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
                <Shape DEF='SemiCircle6'>
                  <Arc2D endAngle='3.1415926536'/>
                  <Appearance>
                    <Material>
                      <IS>
                        <connect nodeField='emissiveColor' protoField='color'/>
                      </IS>
                    </Material>
                  </Appearance>
                </Shape>
              </Transform>
            </Transform>
            <!-- Left arc -->
            <Transform rotation='0 1 0 1.57'>
              <Transform rotation='-1 0 0 1.57' translation='0 0 -1'>
                <Shape USE='SemiCircle6'/>
              </Transform>
            </Transform>
            <!-- Bottom arc -->
            <Transform rotation='1 0 0 1.57' translation='0 0 1'>
              <Shape USE='SemiCircle6'/>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for subsurface vessel, classification friendly' name='SubSurfaceFriend'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='0 0 1'/>
            <fieldValue name='labelColor' value='0 0 1'/>
          </ProtoInstance>
          <Billboard>
            <Transform>
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0' colorPerVertex='false' coordIndex='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'>
                  <Coordinate point='1 0 0 0.98 0 0.195 0.923 0 0.382 0.831 0 0.555 0.707 0 0.707 0.555 0 0.831 0.382 0 0.923 0.195 0 0.98 0 0 1 -0.195 0 0.98 -0.382 0 0.923 -0.555 0 0.831 -0.707 0 0.707 -0.831 0 0.555 -0.923 0 0.382 -0.98 0 0.195 -1 0 0'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for subsurface vessel, classification neutral' name='SubSurfaceNeutral'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='0 1 0'/>
            <fieldValue name='labelColor' value='0 1 0'/>
          </ProtoInstance>
          <Billboard>
            <Transform rotation='0 1 0 3.14'>
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0' colorPerVertex='false' coordIndex='0 1 2 3'>
                  <Coordinate point='-1.0 0 0 -1.0 0 -1.0 1.0 0 -1.0 1.0 0 0'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for subsurface vessel, classification hostile' name='SubSurfaceHostile'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='1 0 0'/>
            <fieldValue name='labelColor' value='1 0 0'/>
          </ProtoInstance>
          <Billboard>
            <Transform rotation='0 1 0 -.785'>
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0' colorPerVertex='false' coordIndex='0 1 2'>
                  <Coordinate point='-1.0 0 1.0 1.0 0 1.0 1.0 0 -1.0'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for subsurface vessel, classification assumed friendly' name='SubSurfaceAssumedFriend'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Color for labels' name='labelColor' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Symbol Modifier' name='symbolModifier' type='MFString'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='0 0 1'/>
            <fieldValue name='labelColor' value='0 0 1'/>
          </ProtoInstance>
          <Billboard>
            <Transform rotation='0 1 0 -1.57'>
              <!-- Symbol Geometry -->
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0 0 0 0 0 0 0 0 0' colorPerVertex='false' coordIndex='0 1 -1 2 3 -1 4 5 -1 6 7 -1 8 9 -1 10 11'>
                  <Coordinate point='0 0 -1 0.195 0 -0.981 0.555 0 -0.832 0.707 0 -0.708 0.923 0 -0.383 0.98 0 -0.196 0.98 0 0.195 0.923 0 0.382 0.707 0 0.707 0.555 0 0.831 0.195 0 0.98 0 0 1'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
            <!-- Symbol Modifier -->
            <Transform rotation='1 0 0 -1.57' translation='1 0 -1.2'>
              <Shape>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='diffuseColor' protoField='labelColor'/>
                    </IS>
                  </Material>
                </Appearance>
                <Text>
                  <IS>
                    <connect nodeField='string' protoField='symbolModifier'/>
                  </IS>
                  <FontStyle justify='"BEGIN" "BEGIN"' size='0.5'/>
                </Text>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for subsurface vessel, classification suspect' name='SubSurfaceSuspect'>
      <ProtoInterface>
        <field accessType='inputOutput' appinfo='Single color value for symbol' name='color' type='MFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Color for labels' name='labelColor' type='SFColor' value='0.8 0.8 0.8'/>
        <field accessType='inputOutput' appinfo='Symbol Modifier' name='symbolModifier' type='MFString'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SymbolVector'>
            <fieldValue name='color' value='1 0 0'/>
            <fieldValue name='labelColor' value='1 0 0'/>
          </ProtoInstance>
          <Billboard>
            <Transform rotation='0 1 0 -.785'>
              <Shape>
                <IndexedLineSet colorIndex='0 0 0 0 0' colorPerVertex='false' coordIndex='0 1 2 3 0'>
                  <Coordinate point='-1.0 0 1.0 1.0 0 1.0 1.0 0 -1.0 -1.0 0 -1.0'/>
                  <Color>
                    <IS>
                      <connect nodeField='color' protoField='color'/>
                    </IS>
                  </Color>
                </IndexedLineSet>
              </Shape>
            </Transform>
            <!-- Symbol Modifier -->
            <Transform rotation='1 0 0 -1.57' translation='1 0 -1.2'>
              <Shape>
                <Appearance>
                  <Material>
                    <IS>
                      <connect nodeField='diffuseColor' protoField='labelColor'/>
                    </IS>
                  </Material>
                </Appearance>
                <Text>
                  <IS>
                    <connect nodeField='string' protoField='symbolModifier'/>
                  </IS>
                  <FontStyle justify='"BEGIN" "BEGIN"' size='0.5'/>
                </Text>
              </Shape>
            </Transform>
          </Billboard>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <!-- Ground Equipment (exactly the same as Sea Surface symbols) -->
    <ProtoDeclare appinfo='NTDS Symbology for Ground Equipment, classification pending' name='GroundEquipmentPending'>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SurfacePending'>
            <fieldValue name='color' value='1 1 0'/>
            <fieldValue name='labelColor' value='1 1 0'/>
            <fieldValue name='symbolModifier' value='"?"'/>
          </ProtoInstance>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for Ground Equipment, classification unknown' name='GroundEquipmentUnknown'>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SurfaceUnknown'>
            <fieldValue name='color' value='1 1 0'/>
          </ProtoInstance>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for Ground Equipment, classification friendly' name='GroundEquipmentFriend'>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SurfaceFriend'>
            <fieldValue name='color' value='0 0 1'/>
          </ProtoInstance>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for Ground Equipment, classification neutral' name='GroundEquipmentNeutral'>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SurfaceNeutral'>
            <fieldValue name='color' value='0 1 0'/>
          </ProtoInstance>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for Ground Equipment, classification hostile' name='GroundEquipmentHostile'>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SurfaceHostile'>
            <fieldValue name='color' value='1 0 0'/>
          </ProtoInstance>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for Ground Equipment, classification assumed friendly' name='GroundEquipmentAssumedFriend'>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SurfaceAssumedFriend'>
            <fieldValue name='color' value='0 0 1'/>
            <fieldValue name='labelColor' value='0 0 1'/>
            <fieldValue name='symbolModifier' value='"?"'/>
          </ProtoInstance>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <ProtoDeclare appinfo='NTDS Symbology for Ground Equipment, classification suspect' name='GroundEquipmentSuspect'>
      <ProtoBody>
        <Transform>
          <ProtoInstance name='SurfaceSuspect'>
            <fieldValue name='color' value='1 0 0'/>
            <fieldValue name='labelColor' value='1 0 0'/>
            <fieldValue name='symbolModifier' value='"?"'/>
          </ProtoInstance>
        </Transform>
      </ProtoBody>
    </ProtoDeclare>
    <!-- Viewable geometry for this scene is anchored text that links to an example showing ExternProtoDeclare usage of BeamCylinder -->
    <Viewpoint description='NTDS Symbology Prototypes' position='0 0 12'/>
    <Anchor description='NTDS Symbology Examples' url='"NTDSExternProtoExamples.x3d" "../../CommunicationsAndSensors/Beam/NTDSExternProtoExamples.x3d" "https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/Beam/NTDSExternProtoExamples.x3d" "NTDSExternProtoExamples.wrl" "../../CommunicationsAndSensors/Beam/NTDSExternProtoExamples.wrl" "https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/Beam/NTDSExternProtoExamples.wrl"'>
      <Shape>
        <Appearance>
          <Material diffuseColor='0 1 1' emissiveColor='0 1 1'/>
        </Appearance>
        <Text string='"BeamHemispherePrototype" "is a Prototype definition file." "" "Select this text to view" "NTDSExternProtoExamples"'>
          <FontStyle justify='"MIDDLE" "MIDDLE"'/>
        </Text>
      </Shape>
      <!-- Transparent box to simplify user selection (i.e. "clickability") -->
      <Shape>
        <Box size='12 6 0.1'/>
        <Appearance>
          <Material transparency='0.8'/>
        </Appearance>
      </Shape>
    </Anchor>
    <!-- ***THE FOLLOWING NOT YET IMPLEMENTED*** -->
    <!-- Space Units -->
    <!-- Ground Installations -->
    <!-- Special Ops Units -->
  </Scene>
</X3D>