<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
<X3D profile='Immersive' version='3.3' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.3.xsd'>
  <head>
    <meta content='CoordinateAxesNSEW.x3d' name='title'/>
    <meta content='Don Brutzman and Byounghyun Yoo' name='creator'/>
    <meta content='14 July 2000' name='created'/>
    <meta content='2 March 2026' name='modified'/>
    <meta content='X Y Z axis arrows and labels in X3D coordinate system. See CoordinateAxesExample for use as an Inline coordinate-system reference frame.' name='description'/>
    <meta content='CoordinateAxesNSEW.png' name='Image'/>
    <meta content='CoordinateAxesNSEW.WhiteBackground.png' name='Image'/>
    <meta content='CoordinateAxes.x3d' name='reference'/>
    <meta content='CoordinateAxesInlineExample.x3d' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter03Grouping/CoordinateAxes.x3d' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter03Grouping/CoordinateAxesNSEW.x3d' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/CoordinateAxes.x3d' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/CoordinateAxesNSEW.x3d' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter03Grouping/CoordinateAxesNSEW.x3d' name='identifier'/>
    <meta content='https://www.web3d.org/x3d/specifications/ISO-IEC-FDIS-19775-1.2-X3D-AbstractSpecification/Part01/components/geodata.html#GeoLocation' name='reference'/>
    <meta content='X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit' name='generator'/>
    <meta content='../license.html' name='license'/>
  </head>
  <Scene>
    <WorldInfo title='CoordinateAxesNSEW.x3d'/>
    <Collision DEF='DoNotCollideWithVisualizationWidget' enabled='false'>
      <!-- Invoke CoordinateAxes in other scenes as an Inline child inside a scaling Transform node, at the topmost level of the scene graph. -->
      <!-- This NavigationInfo allows examine mode and will be overridden by any parent scene. -->
      <!-- Each arrow goes from +1m to -1m to allow linear scaling to fit a scene -->
      <!-- Note each label rotates about the scene's vertical Y axis for consistency, enabling local orientation by user -->
      <!-- From X3D Abstract Specification Section 25.3.3 GeoLocation: "In addition to placing a X3D model at the correct geospatial location, the GeoLocation node will also adjust the orientation of the model appropriately. The standard X3D coordinate system specifies that the +Y axis = up, +Z = out of the screen, and +X = towards the right. The GeoLocation node will set the orientation so that the +Y axis is the up direction for that local area (the normal to the tangent plane on the ellipsoid), -Z points towards the north pole, and +X is east." -->
      <Group>
        <!-- Vertical Y arrow and label -->
        <Group DEF='ArrowGreen'>
          <Shape>
            <Cylinder DEF='ArrowCylinder' bottom='false' radius='.025' top='false'/>
            <Appearance DEF='Green'>
              <Material diffuseColor='.1 .6 .1' emissiveColor='.05 .2 .05'/>
            </Appearance>
          </Shape>
          <Transform translation='0 1 0'>
            <Shape>
              <Cone DEF='ArrowCone' bottomRadius='.05' height='.1'/>
              <Appearance USE='Green'/>
            </Shape>
          </Transform>
        </Group>
        <Transform translation='0 1.08 0'>
          <Billboard>
            <Shape>
              <Appearance DEF='LABEL_APPEARANCE'>
                <Material diffuseColor='1 1 .3' emissiveColor='.33 .33 .1'/>
              </Appearance>
              <Text string='"+Y" "Up"'>
                <FontStyle DEF='LABEL_FONT_TOP' family='"SANS"' justify='"MIDDLE" "END"' size='.2'/>
              </Text>
            </Shape>
          </Billboard>
        </Transform>
        <Transform translation='0 -1.08 0'>
          <Billboard>
            <Shape>
              <Appearance USE='LABEL_APPEARANCE'/>
              <Text string='"-Y" "Down"'>
                <FontStyle USE='LABEL_FONT_TOP'/>
              </Text>
            </Shape>
          </Billboard>
        </Transform>
      </Group>
      <Transform rotation='0 0 1 -1.57079'>
        <!-- Horizontal X arrow and label -->
        <Group>
          <Group DEF='ArrowRed'>
            <Shape>
              <Cylinder USE='ArrowCylinder'/>
              <Appearance DEF='Red'>
                <Material diffuseColor='.7 .1 .1' emissiveColor='.33 0 0'/>
              </Appearance>
            </Shape>
            <Transform translation='0 1 0'>
              <Shape>
                <Cone USE='ArrowCone'/>
                <Appearance USE='Red'/>
              </Shape>
            </Transform>
          </Group>
          <Transform rotation='0 0 1 1.57079' translation='.072 1.1 0'>
            <!-- note label rotated back to original coordinate frame -->
            <Billboard>
              <Shape>
                <Appearance USE='LABEL_APPEARANCE'/>
                <Text string='"+X" "East"'>
                  <FontStyle DEF='LABEL_FONT' family='"SANS"' justify='"MIDDLE" "MIDDLE"' size='.2'/>
                </Text>
              </Shape>
            </Billboard>
          </Transform>
          <Transform rotation='0 0 1 1.57079' translation='.072 -1.1 0'>
            <!-- note label rotated back to original coordinate frame -->
            <Billboard>
              <Shape>
                <Appearance USE='LABEL_APPEARANCE'/>
                <Text string='"-X" "West"'>
                  <FontStyle USE='LABEL_FONT'/>
                </Text>
              </Shape>
            </Billboard>
          </Transform>
        </Group>
      </Transform>
      <Transform rotation='1 0 0 1.57079'>
        <!-- Perpendicular Z arrow and label, note right-hand rule -->
        <Group>
          <Group DEF='ArrowBlue'>
            <Shape>
              <Cylinder USE='ArrowCylinder'/>
              <Appearance DEF='Blue'>
                <Material diffuseColor='.3 .3 1' emissiveColor='.1 .1 .33'/>
              </Appearance>
            </Shape>
            <Transform translation='0 1 0'>
              <Shape>
                <Cone USE='ArrowCone'/>
                <Appearance USE='Blue'/>
              </Shape>
            </Transform>
          </Group>
          <Transform rotation='1 0 0 -1.57079' translation='0 1.1 .072'>
            <!-- note label rotated back to original coordinate frame -->
            <Billboard>
              <Shape>
                <Appearance USE='LABEL_APPEARANCE'/>
                <Text string='"+Z" "South"'>
                  <FontStyle USE='LABEL_FONT'/>
                </Text>
              </Shape>
            </Billboard>
          </Transform>
          <Transform rotation='1 0 0 -1.57079' translation='0 -1.1 .072'>
            <!-- note label rotated back to original coordinate frame -->
            <Billboard>
              <Shape>
                <Appearance USE='LABEL_APPEARANCE'/>
                <Text string='"-Z" "North"'>
                  <FontStyle USE='LABEL_FONT'/>
                </Text>
              </Shape>
            </Billboard>
          </Transform>
        </Group>
      </Transform>
    </Collision>
  </Scene>
</X3D>