package HumanoidAnimation.Skeleton;

import org.web3d.x3d.jsail.Core.*;
import org.web3d.x3d.jsail.fields.*;
import org.web3d.x3d.jsail.Geometry3D.*;
import org.web3d.x3d.jsail.Grouping.*;
import org.web3d.x3d.jsail.PointingDeviceSensor.*;
import org.web3d.x3d.jsail.Rendering.*;
import org.web3d.x3d.jsail.Shape.*;

// Javadoc metadata annotations follow, see below for X3DJSAIL Java source code.
/**
 * <p> two small oblong bones, varying in size and form in different individuals, side by side to form bridge of upper third of nose. </p>
 <p> Related links:  source r_nasal.java, <a href="https://www.web3d.org/x3d/content/examples/X3dResources.html" target="_blank">X3D Resources</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" target="_blank">X3D Scene Authoring Hints</a>, and <a href="https://www.web3d.org/x3d/content/X3dTooltips.html" target="_blank">X3D Tooltips</a>. </p>
	<table style="color:black; border:0px solid; border-spacing:10px 0px;">
        <caption>Scene Meta Information</caption>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center; padding:10px 0px;"><i>meta tags</i></td>
			<td style="text-align:left;   padding:10px 0px;">HumanoidAnimation.Skeleton.r_nasal&nbsp; Document Metadata </td>
		</tr>

		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> title </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skeleton/r_nasal.x3d">r_nasal.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> description </i> </td>
			<td> two small oblong bones, varying in size and form in different individuals, side by side to form bridge of upper third of nose </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> creator </i> </td>
			<td> Joe Williams, John Carlson, Damon Hernandez, Don Brutzman </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> translator </i> </td>
			<td> Don Brutzman </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> created </i> </td>
			<td> 5 December 2013 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> translated </i> </td>
			<td> 5 March 2026 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> modified </i> </td>
			<td> 8 March 2026 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skeleton/originals/nasalr.x3d">originals/nasalr.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="https://en.wikipedia.org/wiki/Nasal_bone" target="_blank">https://en.wikipedia.org/wiki/Nasal_bone</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="https://en.wikipedia.org/wiki/List_of_bones_of_the_human_skeleton" target="_blank">https://en.wikipedia.org/wiki/List_of_bones_of_the_human_skeleton</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/Basic/Medical" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/Medical</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Medical" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Medical</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> generator </i> </td>
			<td> X3D-Edit 4.0, <a href="https://www.web3d.org/x3d/tools/X3D-Edit" target="_blank">https://www.web3d.org/x3d/tools/X3D-Edit</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> generator </i> </td>
			<td> X3D Tidy, <a href="https://www.web3d.org/x3d/stylesheets/X3dTidy.html" target="_blank">https://www.web3d.org/x3d/stylesheets/X3dTidy.html</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> identifier </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skeleton/r_nasal.x3d" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skeleton/r_nasal.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> license </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skeleton/../license.html">../license.html</a> </td>
		</tr>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center;" colspan="2">  &nbsp; </td>
		</tr>
	</table>

	<p>
		This program uses the
		<a href="https://www.web3d.org/specifications/java/X3DJSAIL.html" target="_blank">X3D Java Scene Access Interface Library (X3DJSAIL)</a>.
		It has been produced using the 
		<a href="https://www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">X3dToJava.xslt</a>
		stylesheet
	       (<a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">version control</a>)
                which is used to create Java source code from an original <code>.x3d</code> model.
	</p>

	* @author Joe Williams, John Carlson, Damon Hernandez, Don Brutzman
 */

public class r_nasal
{
	/** Default constructor to create this object. */
	public r_nasal ()
	{
	  initialize();
	}

	/** Create and initialize the X3D model for this object. */
	public final void initialize()
	{
            try { // catch-all
  x3dModel = new X3D().setProfile(X3D.PROFILE_INTERACTIVE).setVersion(X3D.VERSION_3_3)
  .setHead(new head()
    .addMeta(new meta().setName(meta.NAME_TITLE      ).setContent("r_nasal.x3d"))
    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("two small oblong bones, varying in size and form in different individuals, side by side to form bridge of upper third of nose"))
    .addMeta(new meta().setName(meta.NAME_CREATOR    ).setContent("Joe Williams, John Carlson, Damon Hernandez, Don Brutzman"))
    .addMeta(new meta().setName(meta.NAME_TRANSLATOR ).setContent("Don Brutzman"))
    .addMeta(new meta().setName(meta.NAME_CREATED    ).setContent("5 December 2013"))
    .addMeta(new meta().setName(meta.NAME_TRANSLATED ).setContent("5 March 2026"))
    .addMeta(new meta().setName(meta.NAME_MODIFIED   ).setContent("8 March 2026"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("originals/nasalr.x3d"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://en.wikipedia.org/wiki/Nasal_bone"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://en.wikipedia.org/wiki/List_of_bones_of_the_human_skeleton"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://www.web3d.org/x3d/content/examples/Basic/Medical"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Medical"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("X3D Tidy, https://www.web3d.org/x3d/stylesheets/X3dTidy.html"))
    .addMeta(new meta().setName(meta.NAME_IDENTIFIER ).setContent("https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skeleton/r_nasal.x3d"))
    .addMeta(new meta().setName(meta.NAME_LICENSE    ).setContent("../license.html")))
  .setScene(new Scene()
    .addChild(new WorldInfo().setTitle("r_nasal.x3d"))
    .addChild(new TouchSensor().setDescription("bone r_nasal"))
    .addChild(new Transform("r_nasal")
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material("BoneMaterial").setAmbientIntensity(0.965).setDiffuseColor(1.0,0.9765,0.8667).setShininess(0.05).setSpecularColor(0.349,0.349,0.349)))
        .setGeometry(new IndexedFaceSet("r_nasal_geometry").setDEF("r_nasal_geometry").setCreaseAngle(1.571).setCoordIndex(getr_nasal_geometry_5_22_coordIndex())
          .setCoord(new Coordinate("r_nasal_coordinate").setPoint(getr_nasal_coordinate_6_22_point()))))));
            }
            catch (Exception ex)
            {       
                System.err.println ("*** Further hints on X3DJSAIL errors and exceptions at");
                System.err.println ("*** https://www.web3d.org/specifications/java/X3DJSAIL.html");
                throw (ex);
            }
	}
	// end of initialize() method


		/** Define subarray values using type int[] with $tupleSize=1 and $tupleSplitSize=1000 for subarray position()=1 */
		private int[] getr_nasal_geometry_5_22_coordIndex_1()
		{
			int[] value = {0,1,2,-1,2,1,3,-1,4,5,6,-1,4,7,5,-1,8,9,10,-1,11,12,13,-1,14,15,16,-1,17,18,19,-1,20,21,22,-1,23,24,25,-1,26,21,27,-1,28,29,30,-1,31,13,32,-1,33,34,35,-1,36,37,38,-1,39,40,41,-1,42,43,44,-1,45,46,47,-1,48,49,45,-1,50,51,52,-1,50,53,47,-1,54,55,56,-1,57,58,59,-1,60,61,62,-1,63,64,65,-1,66,67,68,-1,69,70,71,-1,9,72,73,-1,74,24,23,-1,75,76,77,-1,78,79,80,-1,81,18,82,-1,83,84,85,-1,86,87,88,-1,89,90,91,-1,59,58,0,-1,92,93,94,-1,95,96,6,-1,97,98,99,-1,100,97,101,-1,102,103,27,-1,104,105,106,-1,107,108,88,-1,109,110,91,-1,111,63,65,-1,112,113,114,-1,88,87,115,-1,115,116,88,-1,57,117,118,-1,119,120,121,-1,47,53,122,-1,123,14,124,-1,125,126,127,-1,124,128,42,-1,42,129,124,-1,130,107,57,-1,131,132,133,-1,134,122,53,-1,135,136,137,-1,24,99,25,-1,71,104,106,-1,59,2,138,-1,139,140,141,-1,142,143,82,-1,144,145,146,-1,76,68,67,-1,84,141,140,-1,79,96,80,-1,51,71,106,-1,147,148,62,-1,149,82,18,-1,84,150,151,-1,21,26,22,-1,152,153,154,-1,155,74,23,-1,55,119,70,-1,156,157,148,-1,4,6,79,-1,112,158,143,-1,90,118,91,-1,159,160,161,-1,127,126,162,-1,128,163,42,-1,164,165,127,-1,166,147,61,-1,147,166,167,-1,57,168,169,-1,169,165,164,-1,129,167,166,-1,122,170,121,-1,80,14,123,-1,171,133,172,-1,173,91,174,-1,4,175,7,-1,135,176,177,-1,17,178,63,-1,179,180,181,-1,90,89,159,-1,130,108,107,-1,182,183,120,-1,184,26,27,-1,100,136,135,-1,185,81,186,-1,114,65,95,-1,65,64,95,-1,187,146,60,-1,105,170,134,-1,188,68,184,-1,189,102,190,-1,18,83,190,-1,141,84,83,-1,60,146,61,-1,191,154,85,-1,192,113,112,-1,193,194,175,-1,133,171,195,-1,58,57,161,-1,196,189,153,-1,78,80,145,-1,94,168,197,-1,198,199,149,-1,200,73,72,-1,186,158,185,-1,104,70,119,-1,48,47,121,-1,170,201,121,-1,43,42,163,-1,49,162,126,-1,202,41,40,-1,33,203,204,-1,37,205,38,-1,34,36,35,-1,180,179,45,-1,180,22,76,-1,23,25,206,-1,45,163,22,-1,178,19,207,-1,17,198,18,-1,208,152,209,-1,7,155,5,-1,195,171,210,-1,211,1,173,-1,173,0,160,-1,212,171,172,-1,182,55,213,-1,56,214,54,-1,182,213,215,-1,212,210,171,-1,173,174,216,-1,173,1,0,-1,173,217,211,-1,1,211,3,-1,200,72,218,-1,209,28,208,-1,123,61,80,-1,178,207,15,-1,23,206,155,-1,6,5,219,-1,180,45,22,-1,36,220,35,-1,37,40,205,-1,204,39,33,-1,40,37,202,-1,163,45,43,-1,121,120,48,-1,104,119,201,-1,221,181,222,-1,70,69,223,-1,200,224,73,-1,177,225,139,-1,76,75,226,-1,147,227,148,-1,150,100,101,-1,184,22,26,-1,144,193,175,-1,225,177,176,-1,228,137,150,-1,64,63,96,-1,83,81,141,-1,190,19,18,-1,190,85,189,-1,184,103,188,-1,170,122,134,-1,109,159,110,-1,159,89,110,-1,187,60,229,-1,185,141,81,-1,135,97,100,-1,27,103,184,-1,182,215,183,-1,116,230,117,-1,3,231,138,-1,181,221,179,-1,63,111,17,-1,175,194,7,-1,119,55,182,-1,80,15,14,-1,121,47,122,-1,166,124,129,-1,164,132,169,-1,16,15,232,-1,168,233,169,-1,234,147,167,-1,61,123,166,-1,127,172,164,-1,128,20,163,-1,101,151,150,-1,150,137,136,-1,159,109,160,-1,118,174,91,-1,143,142,112,-1,6,96,79,-1,157,62,148,-1,155,235,74,-1,154,236,152,-1,151,85,84,-1,18,198,149,-1,147,62,61,-1,51,106,52,-1,96,63,80,-1,140,150,84,-1,77,76,67,-1,187,144,146,-1,142,82,149,-1,141,185,139,-1,138,197,59,-1,71,70,104,-1,135,137,176,-1,53,52,134,-1,169,130,57,-1,127,165,125,-1,123,124,166,-1,184,76,22,-1,119,182,120,-1,87,217,115,-1,65,237,111,-1,151,191,85,-1,237,199,111,-1,117,230,118,-1,133,86,131,-1,102,27,207,-1,97,99,101,-1,98,25,99,-1,95,64,96,-1,94,231,92,-1,0,2,59,-1,110,89,91,-1,88,108,86,-1,85,190,83,-1,81,83,18,-1};
			return value;
		}

		/** Define subarray values using type int[] with $tupleSize=1 and $tupleSplitSize=1000 for subarray position()=2 */
		private int[] getr_nasal_geometry_5_22_coordIndex_2()
		{
			int[] value = {227,147,238,-1,100,150,136,-1,186,143,158,-1,184,68,76,-1,228,150,140,-1,66,68,239,-1,192,112,142,-1,121,201,119,-1,47,46,50,-1,52,53,50,-1,45,47,48,-1,44,129,42,-1,31,39,41,-1,38,220,36,-1,35,203,33,-1,31,32,240,-1,30,208,28,-1,179,46,45,-1,20,22,163,-1,19,178,17,-1,13,241,11,-1,10,242,8,-1,3,138,2,-1,54,214,242,-1,243,215,213,-1,215,243,244,-1,35,245,203,-1,246,245,35,-1,204,247,205,-1,248,247,204,-1,115,173,216,-1,115,217,173,-1,249,250,251,-1,249,209,250,-1,249,28,209,-1,241,202,249,-1,202,241,41,-1,240,34,33,-1,30,34,240,-1,133,164,172,-1,132,164,133,-1,50,222,51,-1,221,222,50,-1,236,235,252,-1,235,236,74,-1,111,198,17,-1,198,111,199,-1,102,188,103,-1,189,188,102,-1,183,162,49,-1,183,212,162,-1,253,227,238,-1,254,227,253,-1,78,144,175,-1,78,145,144,-1,219,95,6,-1,255,95,219,-1,206,98,256,-1,98,206,25,-1,225,140,139,-1,225,228,140,-1,75,56,226,-1,75,214,56,-1,12,196,257,-1,196,12,258,-1,72,8,218,-1,72,9,8,-1,177,185,158,-1,185,177,139,-1,253,243,259,-1,253,260,243,-1,61,145,80,-1,61,146,145,-1,49,43,45,-1,126,43,49,-1,261,92,260,-1,92,261,93,-1,104,170,105,-1,201,170,104,-1,252,152,236,-1,252,209,152,-1,262,224,11,-1,262,263,224,-1,188,239,68,-1,188,258,239,-1,226,180,76,-1,181,180,226,-1,197,57,59,-1,57,197,168,-1,209,193,250,-1,209,252,193,-1,260,238,261,-1,253,238,260,-1,223,55,70,-1,56,55,223,-1,127,212,172,-1,212,127,162,-1,264,233,168,-1,264,265,233,-1,233,165,169,-1,233,125,165,-1,263,157,156,-1,262,157,263,-1,258,189,196,-1,258,188,189,-1,257,153,152,-1,153,257,196,-1,77,214,75,-1,77,242,214,-1,225,137,228,-1,176,137,225,-1,177,256,98,-1,177,158,256,-1,255,114,95,-1,112,114,255,-1,254,148,227,-1,156,148,254,-1,58,160,0,-1,161,160,58,-1,216,118,230,-1,174,118,216,-1,120,49,48,-1,120,183,49,-1,32,12,257,-1,13,12,32,-1,262,229,157,-1,229,262,251,-1,36,30,29,-1,36,34,30,-1,13,41,241,-1,13,31,41,-1,11,251,262,-1,11,249,251,-1,241,249,11,-1,10,73,266,-1,10,9,73,-1,248,203,245,-1,248,204,203,-1,35,267,246,-1,267,35,220,-1,244,260,92,-1,244,243,260,-1,247,38,205,-1,247,268,38,-1,263,73,224,-1,263,269,73,-1,20,27,21,-1,232,27,20,-1,30,32,208,-1,240,32,30,-1,249,29,28,-1,29,249,202,-1,31,33,39,-1,240,33,31,-1,167,44,265,-1,167,129,44,-1,86,195,87,-1,195,86,133,-1,254,259,269,-1,253,259,254,-1,264,261,234,-1,264,93,261,-1,108,131,86,-1,130,131,108,-1,231,197,138,-1,197,231,94,-1,79,175,4,-1,79,78,175,-1,142,199,192,-1,142,149,199,-1,158,255,256,-1,158,112,255,-1,98,135,177,-1,135,98,97,-1,71,222,69,-1,71,51,222,-1,218,239,200,-1,239,218,66,-1,74,151,24,-1,151,74,191,-1,113,65,114,-1,237,65,113,-1,85,153,189,-1,153,85,154,-1,270,92,231,-1,244,92,270,-1,160,91,173,-1,160,109,91,-1,130,132,131,-1,130,169,132,-1,54,10,55,-1,54,242,10,-1,244,183,215,-1,270,183,244,-1,200,11,224,-1,11,200,12,-1,67,242,77,-1,242,67,8,-1,93,168,94,-1,264,168,93,-1,107,117,57,-1,88,117,107,-1,88,116,117,-1,234,238,147,-1,234,261,238,-1,258,200,239,-1,258,12,200,-1,7,235,155,-1,7,194,235,-1,55,266,213,-1,266,55,10,-1,259,213,266,-1,259,243,213,-1,178,80,63,-1,15,80,178,-1,99,151,101,-1,151,99,24,-1,20,16,232,-1,16,20,128,-1,124,16,128,-1,124,14,16,-1,43,125,44,-1,125,43,126,-1,265,125,233,-1,44,125,265,-1,118,161,57,-1,118,159,161,-1,118,90,159,-1,250,144,187,-1,193,144,250,-1,223,226,56,-1,226,223,181,-1,191,236,154,-1,191,74,236,-1,66,8,67,-1,66,218,8,-1,69,181,223,-1,69,222,181,-1,82,186,81,-1,186,82,143,-1,219,256,255,-1,256,219,206,-1,192,237,113,-1,192,199,237,-1,60,157,229,-1,60,62,157,-1,230,115,216,-1,230,116,115,-1,105,52,106,-1,105,134,52,-1};
			return value;
		}

		/** Define subarray values using type int[] with $tupleSize=1 and $tupleSplitSize=1000 for subarray position()=3 */
		private int[] getr_nasal_geometry_5_22_coordIndex_3()
		{
			int[] value = {19,102,207,-1,190,102,19,-1,187,251,250,-1,251,187,229,-1,210,231,3,-1,231,210,270,-1,50,179,221,-1,50,46,179,-1,208,257,152,-1,32,257,208,-1,156,269,263,-1,269,156,254,-1,265,234,167,-1,264,234,265,-1,202,36,29,-1,202,37,36,-1,39,205,40,-1,39,204,205,-1,219,155,206,-1,155,219,5,-1,207,232,15,-1,232,207,27,-1,252,194,193,-1,252,235,194,-1,269,266,73,-1,266,269,259,-1,195,3,211,-1,195,210,3,-1,211,87,195,-1,87,211,217,-1,248,268,247,-1,248,267,268,-1,245,267,248,-1,267,245,246,-1,220,268,267,-1,268,220,38,-1,270,212,183,-1,270,210,212,-1};
			return value;
		}
		/** Large attribute array: IndexedFaceSet DEF='r_nasal_geometry' coordIndex field, scene-graph level=5, element #22, 2152 total numbers.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFInt32 getr_nasal_geometry_5_22_coordIndex()
		{
			MFInt32 r_nasal_geometry_5_22_coordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getr_nasal_geometry_5_22_coordIndex_1()))
				.append(new MFInt32(getr_nasal_geometry_5_22_coordIndex_2()))
				.append(new MFInt32(getr_nasal_geometry_5_22_coordIndex_3()));
			return r_nasal_geometry_5_22_coordIndex;
		}
		/** Large attribute array: Coordinate DEF='r_nasal_coordinate' point field, scene-graph level=6, element #22, 813 total numbers made up of 271 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getr_nasal_coordinate_6_22_point()
		{
			MFVec3f r_nasal_coordinate_6_22_point = new MFVec3f(new double[] {-0.0046,1.6521,0.096,-0.0041,1.6533,0.0966,-0.0046,1.6524,0.0959,-0.0044,1.6551,0.0952,-0.0043,1.6649,0.0867,-0.0036,1.6672,0.0868,-0.0053,1.6672,0.0863,-0.0034,1.6661,0.087,0.0004,1.6618,0.0912,-0.0001,1.6618,0.0915,0.0,1.661,0.0924,-0.0018,1.6636,0.089,-0.0005,1.6644,0.0885,-0.0015,1.6641,0.0886,-0.0029,1.6631,0.0867,-0.0025,1.6642,0.0856,-0.0028,1.663,0.0867,-0.0026,1.6693,0.084,-0.0021,1.6689,0.0833,-0.0017,1.666,0.0842,-0.0021,1.6608,0.0898,-0.0016,1.6608,0.0891,-0.0018,1.6594,0.0916,-0.0001,1.6683,0.0865,0.0001,1.6684,0.0863,0.0001,1.6699,0.0854,-0.0008,1.6599,0.088,-0.0021,1.6632,0.0858,-0.0017,1.6645,0.0882,-0.0017,1.6644,0.0883,-0.0016,1.6644,0.0883,-0.0016,1.6641,0.0886,-0.0015,1.6643,0.0885,-0.0015,1.6642,0.0884,-0.0016,1.6643,0.0883,-0.0016,1.6644,0.088,-0.0017,1.6643,0.0882,-0.0019,1.664,0.0883,-0.0017,1.6642,0.088,-0.0016,1.6641,0.0885,-0.0017,1.664,0.0886,-0.0017,1.664,0.0886,-0.003,1.659,0.0922,-0.0027,1.6572,0.0945,-0.0031,1.6573,0.0943,-0.0018,1.6577,0.0949,-0.0004,1.6576,0.0952,-0.0004,1.657,0.0966,-0.0014,1.6569,0.0963,-0.0017,1.6567,0.096,0.001,1.6575,0.0955,0.0018,1.6571,0.0954,0.0013,1.6566,0.0965,0.0005,1.6567,0.0967,0.0011,1.6606,0.0928,0.0001,1.6601,0.0934,0.0012,1.6604,0.093,-0.0025,1.6544,0.0963,-0.0041,1.652,0.0955,-0.0042,1.6523,0.0954,-0.0041,1.6626,0.0871,-0.0031,1.663,0.0866,-0.0043,1.662,0.0875,-0.0033,1.6674,0.085,-0.0048,1.6679,0.0852,-0.0046,1.6682,0.0849,0.0002,1.6624,0.0894,0.0003,1.6616,0.0904,-0.0005,1.6601,0.0879,0.0022,1.6583,0.0951,0.001,1.6583,0.0956,0.0019,1.6577,0.0958,-0.0001,1.6623,0.0909,-0.002,1.6612,0.0911,-0.0002,1.6673,0.0872,0.0016,1.6601,0.0921,-0.0003,1.6601,0.0923,0.0009,1.6608,0.0916,-0.004,1.6644,0.0857,-0.004,1.6648,0.0856,-0.0032,1.6643,0.086,-0.0023,1.6712,0.0833,-0.0028,1.6711,0.0834,-0.0015,1.6687,0.0831,-0.0012,1.6688,0.0831,-0.0012,1.666,0.0842,-0.0026,1.654,0.0973,-0.0029,1.6536,0.0974,-0.0026,1.6537,0.0969,-0.0035,1.65,0.0973,-0.0034,1.6503,0.0973,-0.0037,1.6504,0.0974,-0.0043,1.6566,0.0939,-0.0042,1.6564,0.0933,-0.0042,1.6552,0.0941,-0.0056,1.6678,0.086,-0.0047,1.6675,0.0852,0.0017,1.6705,0.0847,0.0,1.6703,0.0853,0.0013,1.6701,0.0848,0.0018,1.6704,0.0843,0.0016,1.6701,0.0845,-0.0018,1.6639,0.085,-0.0018,1.6634,0.0857,0.001,1.6569,0.0972,0.0011,1.6562,0.0979,0.0014,1.6569,0.0973,-0.0025,1.6542,0.0967,-0.0025,1.6541,0.0969,-0.0038,1.6504,0.0971,-0.0036,1.65,0.0973,-0.0035,1.6694,0.0841,-0.0039,1.6693,0.0858,-0.0046,1.6694,0.0842,-0.0051,1.6682,0.0855,-0.0035,1.6525,0.0977,-0.0029,1.6524,0.097,-0.0029,1.6524,0.097,-0.003,1.6517,0.0971,-0.0001,1.6581,0.0959,-0.0016,1.6569,0.0967,-0.0005,1.6569,0.0969,0.0003,1.6565,0.097,-0.003,1.6631,0.0867,-0.0029,1.661,0.0905,-0.0027,1.6567,0.0952,-0.0024,1.6568,0.0953,-0.0018,1.6557,0.0965,-0.0027,1.6608,0.0905,-0.0032,1.659,0.0922,-0.0024,1.6543,0.0968,-0.0026,1.6542,0.0971,-0.0023,1.6545,0.097,-0.0025,1.6543,0.0972,0.0012,1.6561,0.097,0.0014,1.6706,0.0843,0.0015,1.6706,0.084,0.0006,1.6713,0.0829,-0.0046,1.655,0.095,-0.0001,1.6711,0.0833,0.0,1.6709,0.0829,-0.0019,1.6717,0.0828,-0.0037,1.6701,0.0841,-0.0028,1.6713,0.0838,-0.0041,1.6641,0.0872,-0.0039,1.664,0.0862,-0.0039,1.6631,0.0867,-0.0031,1.6607,0.0903,-0.0045,1.6603,0.0891,-0.0033,1.6701,0.0837,0.0007,1.6696,0.0836,0.0003,1.668,0.0854,0.0,1.6657,0.0876,-0.0001,1.6656,0.0869,0.0002,1.6664,0.0865,-0.002,1.6675,0.0872,-0.0047,1.6604,0.09,-0.0046,1.6621,0.0881,-0.0022,1.6699,0.0862,-0.0036,1.6503,0.097,-0.0045,1.6518,0.0962,-0.004,1.6518,0.0957,-0.0018,1.6564,0.0962,-0.0024,1.6592,0.0919,-0.0021,1.655,0.0969,-0.0021,1.6552,0.0966,-0.0031,1.6609,0.0905,-0.0035,1.6588,0.0921,-0.0031,1.6561,0.0948,-0.0022,1.6545,0.0968,0.0001,1.6565,0.0972,-0.0027,1.6548,0.0968,-0.002,1.6553,0.097,-0.0039,1.6527,0.0972,-0.0037,1.6518,0.0977,-0.0042,1.6646,0.0867,0.0005,1.6714,0.0833,-0.0002,1.6703,0.0849,-0.0025,1.6667,0.0847,-0.0003,1.6578,0.095,-0.0002,1.658,0.0949,0.0013,1.6582,0.0947,-0.0013,1.6576,0.096,-0.002,1.6566,0.0964,-0.0007,1.66,0.0879,-0.0021,1.6718,0.0831,-0.0024,1.6714,0.0838,-0.0044,1.6632,0.0874,-0.0016,1.6634,0.0857,-0.0016,1.664,0.085,-0.0015,1.666,0.0841,0.0,1.667,0.0861,-0.004,1.6697,0.0843,-0.0032,1.6648,0.0874,-0.0033,1.6654,0.0872,-0.003,1.6546,0.0968,-0.0005,1.665,0.0872,-0.0043,1.6549,0.0942,-0.0027,1.6695,0.0839,-0.0036,1.6698,0.0839,-0.0001,1.663,0.0899,0.0,1.657,0.0969,-0.0019,1.6641,0.0884,-0.0015,1.6643,0.088,-0.0015,1.6642,0.088,-0.0016,1.6641,0.088,-0.0021,1.6696,0.0868,-0.0021,1.6639,0.085,-0.0015,1.6645,0.0883,-0.0018,1.6649,0.0879,-0.0031,1.6559,0.0958,-0.0039,1.6536,0.0967,-0.002,1.6563,0.0965,-0.002,1.6592,0.0935,0.0015,1.6606,0.0926,-0.002,1.6574,0.0956,-0.0037,1.6521,0.0978,-0.0037,1.653,0.0972,0.0003,1.6625,0.0904,-0.0038,1.669,0.0864,-0.0017,1.6643,0.088,0.0012,1.6579,0.095,0.0019,1.6576,0.0948,0.0015,1.6589,0.0949,-0.0019,1.6622,0.0902,0.0003,1.6711,0.0833,0.0012,1.6599,0.0926,-0.0044,1.6597,0.0896,0.0004,1.6709,0.0829,-0.0045,1.6627,0.0876,-0.003,1.652,0.0971,-0.0045,1.6553,0.095,-0.0024,1.6632,0.0863,-0.0029,1.6565,0.0951,-0.0035,1.6587,0.092,-0.0019,1.6663,0.0874,0.0001,1.6665,0.0872,-0.0042,1.6694,0.0837,-0.0043,1.6591,0.0904,-0.0002,1.6629,0.0889,-0.0015,1.6643,0.0885,-0.0017,1.6639,0.0887,0.0008,1.6612,0.0921,-0.0033,1.6587,0.093,-0.0032,1.657,0.0947,-0.0015,1.6644,0.0878,-0.0016,1.6644,0.0879,-0.0016,1.6642,0.0877,-0.0015,1.6642,0.0878,-0.002,1.664,0.0884,-0.0032,1.664,0.0877,-0.0033,1.6634,0.0881,-0.0018,1.6657,0.0876,-0.0045,1.6592,0.0913,-0.0045,1.6598,0.0906,-0.004,1.6693,0.0862,-0.0022,1.6699,0.0867,-0.0004,1.6651,0.088,-0.0006,1.6643,0.0877,-0.0033,1.6597,0.0918,-0.0043,1.6583,0.0925,-0.0042,1.658,0.0918,-0.0033,1.6628,0.0887,-0.0033,1.6614,0.0901,-0.0034,1.6569,0.094,-0.0033,1.6571,0.0942,-0.002,1.6603,0.0922,-0.0017,1.6644,0.0879,-0.0017,1.6642,0.0878,-0.0033,1.6605,0.0909,-0.0032,1.6562,0.0955});
			return r_nasal_coordinate_6_22_point;
		}

	/** The initialized model object, created within initialize() method. */
	private X3D x3dModel;

	/** 
	 * Provide a 
	 * <a href="https://dzone.com/articles/java-copy-shallow-vs-deep-in-which-you-will-swim" target="_blank">shallow copy</a>
	 * of the X3D model.
	 * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html">X3D</a>
	 * @return r_nasal model
	 */
	public X3D getX3dModel()
	{	  
		return x3dModel;
	}
	   
    /** 
     * Default main() method provided for test purposes, uses CommandLine to set global ConfigurationProperties for this object.
     * @param args array of input parameters, provided as arguments
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#handleArguments-java.lang.String:A-">X3D.handleArguments(args)</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#validationReport--">X3D.validationReport()</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html">CommandLine</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE">CommandLine.USAGE</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html">ConfigurationProperties</a>
     */
    public static void main(String args[])
    {
        System.out.println("Build this X3D model, showing validation diagnostics...");
        X3D thisExampleX3dModel = new r_nasal().getX3dModel();
//      System.out.println("X3D model construction complete.");
	
        // next handle command line arguments
        boolean hasArguments = (args != null) && (args.length > 0);
        boolean validate = true; // default
        boolean argumentsLoadNewModel = false;
        String  fileName = new String();

        if (args != null)
        {
                for (String arg : args)
                {
                        if (arg.toLowerCase().startsWith("-v") || arg.toLowerCase().contains("validate"))
                        {
                                validate = true; // making sure
                        }
                        if (arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3D) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_CLASSICVRML) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3DB) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_VRML97) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_EXI) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_GZIP) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_ZIP) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_HTML) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_XHTML))
                        {
                                argumentsLoadNewModel = true;
                                fileName = arg;
                        }
                }
        }
        if      (argumentsLoadNewModel)
                System.out.println("WARNING: \"HumanoidAnimation.Skeleton.r_nasal\" model invocation is attempting to load file \"" + fileName + "\" instead of simply validating itself... file loading ignored.");
        else if (hasArguments) // if no arguments provided, this method produces usage warning
                thisExampleX3dModel.handleArguments(args);
	
        if (validate)
        {
            //  System.out.println("--- TODO fix duplicated outputs ---"); // omit when duplicated outputs problem is solved/refactored
		String validationResults = thisExampleX3dModel.validationReport();
            //  System.out.println("-----------------------------------"); // omit when duplicated outputs problem is solved/refactored
                System.out.print("HumanoidAnimation.Skeleton.r_nasal self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

                // experimental: test X3DJSAIL output files
                // Skeleton/r_nasal_JavaExport.* file validation is checked when building X3D Example Archives
                String filenameX3D  = "Skeleton/r_nasal_JavaExport.x3d"; 
                String filenameX3DV = "Skeleton/r_nasal_JavaExport.x3dv"; 
                String filenameJSON = "Skeleton/r_nasal_JavaExport.json";
                thisExampleX3dModel.toFileX3D        (filenameX3D);
                thisExampleX3dModel.toFileClassicVRML(filenameX3DV);
// TODO         thisExampleX3dModel.toFileJSON       (filenameJSON);
        }
    }
}
