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> tooth (TODO fix name). </p>
 <p> Related links:  source lprem2lr.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.lprem2lr&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/lprem2lr.x3d">lprem2lr.x3d</a> </td>
		</tr>
		<tr style="color:burntorange">
			<td style="text-align:right; vertical-align: text-top;"> <i> warning </i> </td>
			<td> fix naming </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> description </i> </td>
			<td> tooth (TODO fix name) </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/lprem2lr.x3d">originals/lprem2lr.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> *enter reference citation or relative/online url here* </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/lprem2lr.x3d" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skeleton/lprem2lr.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 lprem2lr
{
	/** Default constructor to create this object. */
	public lprem2lr ()
	{
	  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("lprem2lr.x3d"))
    .addMeta(new meta().setName(meta.NAME_WARNING    ).setContent("fix naming"))
    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("tooth (TODO fix name)"))
    .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/lprem2lr.x3d"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("*enter reference citation or relative/online url here*"))
    .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/lprem2lr.x3d"))
    .addMeta(new meta().setName(meta.NAME_LICENSE    ).setContent("../license.html")))
  .setScene(new Scene()
    .addChild(new WorldInfo().setTitle("*TODO_add_title*"))
    .addChild(new TouchSensor().setDescription("tooth lprem2lr"))
    .addChild(new Transform("lprem2lr")
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material("ToothMaterial").setAmbientIntensity(0.4).setDiffuseColor(1.0,0.9843,0.9843).setShininess(0.05)))
        .setGeometry(new IndexedFaceSet("lprem2lr_geometry").setDEF("lprem2lr_geometry").setCreaseAngle(1.571).setCoordIndex(getlprem2lr_geometry_5_23_coordIndex())
          .setCoord(new Coordinate("lprem2lr_coordinate").setPoint(getlprem2lr_coordinate_6_23_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[] getlprem2lr_geometry_5_23_coordIndex_1()
		{
			int[] value = {0,1,2,-1,3,4,5,-1,6,7,8,-1,9,10,11,-1,12,13,14,-1,12,15,13,-1,16,17,18,-1,19,20,21,-1,22,23,24,-1,25,26,24,-1,27,28,29,-1,30,31,32,-1,33,34,35,-1,15,36,37,-1,10,18,38,-1,39,40,41,-1,4,14,42,-1,43,0,44,-1,8,45,46,-1,45,47,48,-1,49,44,0,-1,5,42,50,-1,50,51,5,-1,0,2,49,-1,45,52,47,-1,8,53,45,-1,43,11,0,-1,4,42,5,-1,39,35,40,-1,18,54,38,-1,15,37,13,-1,33,35,39,-1,30,55,31,-1,56,57,58,-1,56,59,57,-1,27,60,28,-1,26,22,24,-1,22,61,23,-1,19,62,20,-1,16,63,17,-1,10,38,11,-1,6,8,64,-1,3,5,65,-1,11,66,0,-1,11,38,66,-1,0,66,1,-1,67,68,69,-1,67,70,68,-1,71,72,73,-1,72,71,74,-1,75,49,2,-1,49,75,76,-1,77,78,79,-1,77,80,78,-1,81,82,47,-1,81,83,82,-1,84,85,86,-1,85,84,87,-1,51,88,89,-1,51,90,88,-1,86,91,92,-1,91,86,85,-1,65,93,94,-1,65,89,93,-1,49,95,44,-1,95,49,96,-1,77,46,97,-1,98,46,77,-1,99,81,100,-1,99,101,81,-1,41,45,53,-1,41,52,45,-1,102,54,103,-1,54,102,104,-1,44,37,43,-1,37,44,95,-1,105,106,94,-1,107,106,105,-1,108,99,109,-1,108,110,99,-1,111,40,35,-1,111,109,40,-1,18,103,54,-1,18,17,103,-1,107,112,106,-1,113,112,107,-1,114,115,116,-1,114,113,115,-1,117,35,34,-1,117,111,35,-1,20,6,21,-1,20,7,6,-1,118,119,120,-1,119,118,36,-1,121,122,123,-1,121,124,122,-1,125,126,123,-1,127,126,125,-1,128,129,130,-1,129,128,131,-1,132,133,134,-1,132,33,133,-1,135,136,137,-1,135,138,136,-1,139,135,140,-1,139,141,135,-1,142,143,144,-1,142,145,143,-1,146,147,148,-1,149,147,146,-1,150,151,152,-1,153,151,150,-1,154,62,19,-1,154,155,62,-1,138,141,156,-1,141,138,135,-1,141,157,158,-1,157,141,139,-1,159,144,31,-1,159,142,144,-1,160,149,161,-1,160,147,149,-1,162,153,57,-1,162,151,153,-1,163,154,164,-1,163,155,154,-1,165,166,167,-1,165,164,166,-1,158,168,169,-1,168,158,157,-1,31,170,159,-1,55,170,31,-1,171,161,172,-1,171,160,161,-1,173,57,59,-1,173,162,57,-1,174,30,175,-1,174,55,30,-1,176,177,178,-1,176,172,177,-1,179,56,180,-1,179,59,56,-1,181,167,182,-1,181,165,167,-1,169,183,184,-1,183,169,168,-1,185,55,174,-1,185,170,55,-1,186,187,175,-1,70,187,186,-1,188,189,178,-1,190,189,188,-1,191,192,180,-1,193,192,191,-1,23,182,194,-1,23,195,182,-1,196,183,197,-1,196,198,183,-1,196,73,199,-1,196,71,73,-1,200,201,202,-1,200,190,201,-1,189,200,203,-1,190,200,189,-1,204,25,198,-1,204,26,25,-1,28,205,29,-1,205,28,195,-1,206,84,207,-1,88,84,206,-1,88,87,84,-1,90,87,88,-1,90,208,87,-1,209,208,90,-1,209,210,208,-1,211,210,209,-1,211,83,210,-1,212,83,211,-1,212,82,83,-1,76,82,212,-1,76,213,82,-1,76,214,213,-1,75,214,76,-1,75,80,214,-1,215,80,75,-1,216,80,215,-1,216,78,80,-1,60,217,193,-1,60,27,217,-1,24,194,218,-1,24,23,194,-1,191,60,193,-1,60,191,219,-1,220,190,188,-1,201,190,220,-1,70,221,68,-1,70,186,221,-1,71,197,222,-1,71,196,197,-1,168,197,183,-1,197,168,223,-1,194,167,224,-1,194,182,167,-1,180,225,191,-1,180,56,225,-1,177,188,178,-1,188,177,226,-1,175,227,186,-1,175,30,227,-1,226,162,173,-1,226,228,162,-1,160,227,229,-1,171,227,160,-1,157,223,168,-1,223,157,230,-1,166,224,167,-1,224,166,231,-1,154,166,164,-1,166,154,232,-1,57,233,58,-1,57,153,233,-1,234,161,149,-1,235,161,234,-1,31,236,32,-1,31,144,236,-1,139,230,157,-1,230,139,237,-1,232,231,166,-1,231,232,238,-1,19,232,154,-1,232,19,239,-1,233,150,132,-1,233,153,150,-1,146,234,149,-1,234,146,130,-1,144,126,236,-1,144,143,126,-1,140,237,139,-1,237,140,240,-1,140,137,120,-1,140,135,137,-1,239,21,63,-1,239,19,21,-1,34,132,150,-1,132,34,33,-1,128,146,116,-1,130,146,128,-1,123,143,121,-1,126,143,123,-1,241,124,121,-1};
			return value;
		}

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

		/** Define subarray values using type int[] with $tupleSize=1 and $tupleSplitSize=1000 for subarray position()=3 */
		private int[] getlprem2lr_geometry_5_23_coordIndex_3()
		{
			int[] value = {109,99,100,-1,100,47,52,-1,100,81,47,-1,251,66,104,-1,66,251,1,-1,249,42,247,-1,42,249,50,-1,94,254,105,-1,94,93,254,-1,85,110,91,-1,110,85,250,-1,93,207,254,-1,93,206,207,-1,208,101,250,-1,101,208,210,-1,48,214,97,-1,48,213,214,-1,251,215,1,-1,251,216,215,-1,212,249,96,-1,249,212,211,-1,252,187,253,-1,252,248,187,-1};
			return value;
		}
		/** Large attribute array: IndexedFaceSet DEF='lprem2lr_geometry' coordIndex field, scene-graph level=5, element #23, 2092 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 getlprem2lr_geometry_5_23_coordIndex()
		{
			MFInt32 lprem2lr_geometry_5_23_coordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getlprem2lr_geometry_5_23_coordIndex_1()))
				.append(new MFInt32(getlprem2lr_geometry_5_23_coordIndex_2()))
				.append(new MFInt32(getlprem2lr_geometry_5_23_coordIndex_3()));
			return lprem2lr_geometry_5_23_coordIndex;
		}
		/** Large attribute array: Coordinate DEF='lprem2lr_coordinate' point field, scene-graph level=6, element #23, 819 total numbers made up of 273 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 getlprem2lr_coordinate_6_23_point()
		{
			MFVec3f lprem2lr_coordinate_6_23_point = new MFVec3f(new double[] {0.0193,1.5726,0.0696,0.0195,1.5725,0.0693,0.0195,1.5724,0.0695,0.0206,1.5729,0.0707,0.0205,1.5729,0.0708,0.0203,1.5725,0.0703,0.0182,1.5752,0.0688,0.0184,1.5752,0.0686,0.0191,1.5734,0.0685,0.0182,1.5748,0.0706,0.018,1.5749,0.0701,0.0189,1.5732,0.0698,0.0203,1.5745,0.0717,0.0198,1.573,0.0707,0.0201,1.5729,0.0708,0.0198,1.5745,0.0717,0.0173,1.5771,0.07,0.018,1.5751,0.0692,0.0179,1.575,0.0696,0.0175,1.579,0.0692,0.0181,1.5773,0.0687,0.0177,1.5773,0.0689,0.0166,1.5885,0.073,0.0165,1.5873,0.0715,0.0165,1.5872,0.0725,0.0169,1.5871,0.0736,0.0172,1.5884,0.074,0.0178,1.5887,0.07,0.0171,1.5873,0.0701,0.0172,1.5887,0.0704,0.0224,1.5838,0.0749,0.0218,1.5822,0.0746,0.0222,1.5822,0.0744,0.0188,1.5773,0.0686,0.0192,1.5773,0.0687,0.0193,1.5751,0.0685,0.0192,1.5746,0.0714,0.0195,1.573,0.0705,0.0189,1.5732,0.0695,0.0191,1.5751,0.0684,0.0197,1.5734,0.0685,0.0195,1.5734,0.0684,0.0201,1.5725,0.0704,0.0193,1.5731,0.0703,0.0195,1.5726,0.07,0.0196,1.5728,0.0685,0.0195,1.5728,0.0687,0.0198,1.5726,0.0687,0.0197,1.5726,0.0687,0.0196,1.5724,0.0698,0.0201,1.5723,0.0702,0.0202,1.5723,0.0701,0.0197,1.5728,0.0685,0.0193,1.5734,0.0684,0.0189,1.5733,0.0692,0.022,1.5838,0.0752,0.0189,1.5845,0.0695,0.0195,1.5827,0.0696,0.019,1.5827,0.0693,0.0195,1.5844,0.0697,0.0177,1.5873,0.0698,0.0165,1.5887,0.0719,0.0179,1.579,0.0689,0.0174,1.5772,0.0694,0.019,1.5734,0.0687,0.0204,1.5725,0.0702,0.0193,1.5726,0.0693,0.0235,1.5876,0.0749,0.0235,1.5866,0.0734,0.0237,1.588,0.0736,0.0233,1.5865,0.0746,0.0203,1.5866,0.076,0.0216,1.5875,0.0764,0.0205,1.5877,0.0764,0.0215,1.5865,0.076,0.0196,1.5724,0.0694,0.0197,1.5723,0.0697,0.0195,1.5725,0.0689,0.0196,1.5725,0.069,0.0195,1.5725,0.0689,0.0196,1.5725,0.069,0.0199,1.5726,0.0687,0.0198,1.5725,0.0688,0.0199,1.5725,0.0689,0.0203,1.5724,0.0693,0.0203,1.5725,0.0692,0.0204,1.5724,0.0693,0.0202,1.5724,0.0692,0.0202,1.5723,0.0698,0.0203,1.5723,0.07,0.0202,1.5723,0.0699,0.0204,1.5727,0.0691,0.0205,1.5727,0.0693,0.0205,1.5723,0.0698,0.0206,1.5725,0.0699,0.0197,1.5726,0.0702,0.0197,1.5724,0.07,0.0196,1.5726,0.0688,0.0194,1.5727,0.0688,0.02,1.5728,0.0687,0.0198,1.5728,0.0686,0.02,1.5725,0.0689,0.0194,1.5727,0.0689,0.0189,1.5734,0.0689,0.0193,1.5727,0.069,0.0207,1.5726,0.0696,0.0209,1.573,0.0703,0.021,1.5731,0.0699,0.0203,1.5733,0.0688,0.02,1.5733,0.0686,0.0202,1.5727,0.0689,0.0199,1.575,0.0688,0.0215,1.5746,0.0711,0.0216,1.5747,0.0704,0.022,1.5767,0.0711,0.0213,1.5748,0.0699,0.0218,1.5768,0.0705,0.0199,1.5772,0.069,0.0187,1.5746,0.0712,0.0191,1.5765,0.0723,0.0184,1.5766,0.0718,0.0211,1.5764,0.0726,0.0211,1.5745,0.0716,0.0215,1.5764,0.0724,0.0208,1.5745,0.0717,0.0219,1.5765,0.072,0.0218,1.5786,0.0733,0.0223,1.5786,0.0727,0.0214,1.5769,0.07,0.0209,1.5789,0.0701,0.0216,1.5788,0.0705,0.0207,1.577,0.0696,0.0189,1.5791,0.0689,0.0184,1.5774,0.0685,0.0184,1.5791,0.0688,0.0175,1.5788,0.0718,0.0174,1.577,0.0706,0.0177,1.5768,0.0712,0.0171,1.5789,0.0711,0.0182,1.5801,0.0729,0.0182,1.5787,0.0725,0.0175,1.5802,0.0721,0.0209,1.58,0.0741,0.0215,1.5786,0.0734,0.0216,1.58,0.0739,0.0208,1.5786,0.0736,0.0221,1.5788,0.0711,0.0225,1.5801,0.0723,0.0224,1.5787,0.0718,0.0223,1.5801,0.0715,0.0194,1.5791,0.0691,0.02,1.5804,0.0696,0.02,1.579,0.0694,0.0194,1.5804,0.0692,0.0175,1.5804,0.0694,0.018,1.5804,0.0691,0.0171,1.5803,0.0712,0.0182,1.5824,0.0735,0.0172,1.5825,0.0726,0.0212,1.5822,0.0749,0.0229,1.5824,0.0728,0.0225,1.5825,0.072,0.0201,1.5827,0.07,0.0179,1.5828,0.0694,0.0174,1.5828,0.0696,0.0171,1.5845,0.0698,0.017,1.5827,0.0702,0.0167,1.5845,0.0704,0.0181,1.5841,0.0741,0.017,1.5842,0.073,0.0213,1.5839,0.0756,0.0231,1.5839,0.0731,0.0227,1.584,0.0722,0.0201,1.5844,0.0701,0.0222,1.5854,0.0756,0.0226,1.5854,0.0752,0.023,1.5856,0.0723,0.0222,1.5841,0.0715,0.0225,1.5857,0.0717,0.0196,1.586,0.0697,0.0189,1.5861,0.0696,0.017,1.5862,0.0699,0.0166,1.5862,0.0706,0.018,1.5858,0.0745,0.0168,1.586,0.0734,0.0214,1.5854,0.0759,0.0232,1.5854,0.0745,0.0226,1.5865,0.0754,0.0216,1.5858,0.0712,0.0225,1.5868,0.0718,0.0216,1.5869,0.0713,0.0183,1.5862,0.0694,0.019,1.5872,0.0697,0.0184,1.5873,0.0696,0.0165,1.5861,0.0714,0.0167,1.5873,0.0707,0.0192,1.5868,0.0754,0.0191,1.5857,0.0753,0.0181,1.5869,0.0747,0.0193,1.5881,0.0758,0.0218,1.5882,0.0716,0.0203,1.5871,0.0704,0.0206,1.5885,0.0706,0.0228,1.5881,0.0722,0.0181,1.5882,0.0749,0.0167,1.5887,0.071,0.0203,1.5723,0.0697,0.0204,1.5723,0.0695,0.0201,1.5724,0.0691,0.0201,1.5723,0.07,0.02,1.5725,0.069,0.0199,1.5723,0.0699,0.0198,1.5723,0.0698,0.0197,1.5725,0.0688,0.0197,1.5725,0.0689,0.0196,1.5724,0.0693,0.0196,1.5725,0.069,0.0183,1.5887,0.0698,0.0164,1.5861,0.0723,0.0177,1.5862,0.0697,0.0203,1.5859,0.0703,0.0234,1.5855,0.0733,0.0203,1.5855,0.0759,0.019,1.584,0.0748,0.0166,1.5844,0.0711,0.0183,1.5845,0.0694,0.0214,1.5842,0.071,0.023,1.5838,0.0742,0.0212,1.5826,0.0708,0.0228,1.5823,0.0739,0.0191,1.5823,0.0742,0.0169,1.5827,0.0708,0.0172,1.5804,0.0698,0.019,1.5804,0.0691,0.0218,1.5802,0.0709,0.022,1.5825,0.0713,0.022,1.58,0.0737,0.0191,1.58,0.0735,0.0171,1.5804,0.0705,0.0172,1.579,0.0697,0.0191,1.5787,0.0731,0.0206,1.5764,0.0727,0.0204,1.575,0.0691,0.0187,1.5752,0.0684,0.0206,1.5733,0.0691,0.021,1.5749,0.0696,0.0208,1.5732,0.0694,0.0198,1.5725,0.0703,0.0222,1.5865,0.0757,0.0199,1.5723,0.0701,0.0202,1.5725,0.069,0.0195,1.5725,0.069,0.0223,1.5874,0.076,0.0228,1.5874,0.0756,0.0205,1.5724,0.0696,0.0198,1.5764,0.0726,0.02,1.5787,0.0735,0.0171,1.579,0.0704,0.02,1.58,0.074,0.0224,1.58,0.0732,0.0211,1.5803,0.0703,0.0185,1.5804,0.069,0.0169,1.5826,0.0717,0.0201,1.5822,0.0749,0.0184,1.5827,0.0692,0.0177,1.5845,0.0696,0.0166,1.5843,0.072,0.0201,1.5839,0.0755,0.0231,1.5867,0.0725,0.0197,1.5871,0.0699,0.0199,1.5885,0.0701,0.0191,1.5887,0.0699,0.0234,1.588,0.0728});
			return lprem2lr_coordinate_6_23_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 lprem2lr 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 lprem2lr().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.lprem2lr\" 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.lprem2lr self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

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