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 r_caninelr.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_caninelr&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_caninelr.x3d">r_caninelr.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/rcaninlr.x3d">originals/rcaninlr.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/r_caninelr.x3d" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skeleton/r_caninelr.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_caninelr
{
	/** Default constructor to create this object. */
	public r_caninelr ()
	{
	  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_caninelr.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/rcaninlr.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/r_caninelr.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 r_caninelr"))
    .addChild(new Transform("rcaninlr")
      .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("rcaninlr_geometry").setDEF("rcaninlr_geometry").setCreaseAngle(1.571).setCoordIndex(getrcaninlr_geometry_5_23_coordIndex())
          .setCoord(new Coordinate("rcaninlr_coordinate").setPoint(getrcaninlr_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[] getrcaninlr_geometry_5_23_coordIndex_1()
		{
			int[] value = {0,1,2,-1,3,4,5,-1,6,7,8,-1,9,10,11,-1,5,12,13,-1,14,15,16,-1,17,18,19,-1,20,21,22,-1,23,24,25,-1,26,27,28,-1,29,30,31,-1,32,33,34,-1,1,35,2,-1,36,37,0,-1,38,39,40,-1,37,36,41,-1,42,43,44,-1,15,45,16,-1,46,47,48,-1,49,50,51,-1,52,5,13,-1,53,54,46,-1,55,11,56,-1,57,55,58,-1,57,9,55,-1,10,59,11,-1,60,61,62,-1,63,64,65,-1,3,7,66,-1,33,67,68,-1,63,6,64,-1,61,51,62,-1,10,69,59,-1,55,56,70,-1,46,12,53,-1,13,71,52,-1,51,65,49,-1,59,62,72,-1,62,73,72,-1,46,48,17,-1,15,74,45,-1,42,44,23,-1,75,76,27,-1,75,77,76,-1,78,79,80,-1,32,38,40,-1,35,81,2,-1,38,32,34,-1,29,82,30,-1,26,75,27,-1,23,44,24,-1,20,83,21,-1,17,48,18,-1,14,16,83,-1,5,53,12,-1,9,11,55,-1,6,8,64,-1,3,5,52,-1,69,84,60,-1,69,85,84,-1,86,9,57,-1,9,86,87,-1,88,89,90,-1,88,91,89,-1,92,93,4,-1,93,92,94,-1,95,92,66,-1,96,92,95,-1,96,94,92,-1,97,94,96,-1,97,98,94,-1,97,99,98,-1,84,99,97,-1,84,91,99,-1,85,91,84,-1,100,91,85,-1,100,89,91,-1,87,89,100,-1,87,101,89,-1,86,101,87,-1,86,102,101,-1,103,104,105,-1,103,88,104,-1,51,63,65,-1,61,63,51,-1,58,106,57,-1,106,58,107,-1,107,108,109,-1,107,110,108,-1,105,46,54,-1,105,47,46,-1,111,65,64,-1,65,111,49,-1,72,11,59,-1,11,72,56,-1,14,70,56,-1,70,14,112,-1,108,113,114,-1,108,115,113,-1,12,17,116,-1,12,46,17,-1,117,111,118,-1,111,117,119,-1,120,121,122,-1,120,119,121,-1,123,112,20,-1,124,112,123,-1,125,113,126,-1,127,113,125,-1,128,117,129,-1,117,128,130,-1,121,131,132,-1,121,130,131,-1,16,133,134,-1,16,45,133,-1,135,136,137,-1,126,136,135,-1,138,139,140,-1,138,19,139,-1,43,141,44,-1,43,140,141,-1,142,143,144,-1,142,132,143,-1,21,26,82,-1,21,134,26,-1,145,146,137,-1,145,147,146,-1,148,146,149,-1,150,146,148,-1,141,151,152,-1,141,153,151,-1,77,154,76,-1,77,144,154,-1,31,155,156,-1,31,157,155,-1,148,158,159,-1,148,160,158,-1,24,161,162,-1,24,152,161,-1,163,154,164,-1,154,163,165,-1,166,28,167,-1,30,28,166,-1,168,169,170,-1,168,171,169,-1,172,173,174,-1,173,172,175,-1,176,177,178,-1,176,179,177,-1,35,180,81,-1,181,180,35,-1,1,182,35,-1,1,183,182,-1,39,184,40,-1,175,184,39,-1,185,176,186,-1,187,176,185,-1,41,188,189,-1,36,188,41,-1,190,191,192,-1,191,190,193,-1,193,172,191,-1,172,193,194,-1,195,187,185,-1,196,187,195,-1,197,79,186,-1,198,79,197,-1,79,198,80,-1,199,200,171,-1,199,162,200,-1,81,158,196,-1,180,158,81,-1,157,201,155,-1,201,157,34,-1,174,191,172,-1,174,165,191,-1,171,202,199,-1,171,168,202,-1,34,166,38,-1,166,34,157,-1,178,155,201,-1,155,178,177,-1,173,28,27,-1,28,173,167,-1,164,202,163,-1,164,203,202,-1,152,181,161,-1,152,151,181,-1,160,149,179,-1,148,149,160,-1,157,30,166,-1,31,30,157,-1,28,82,26,-1,82,28,30,-1,144,164,154,-1,144,143,164,-1,44,152,24,-1,44,141,152,-1,150,159,204,-1,150,148,159,-1,137,150,135,-1,137,146,150,-1,82,22,21,-1,22,82,29,-1,205,144,77,-1,205,142,144,-1,141,139,153,-1,140,139,141,-1,139,18,206,-1,19,18,139,-1,137,207,145,-1,136,207,137,-1,134,83,16,-1,83,134,21,-1,122,132,142,-1,122,121,132,-1,140,208,138,-1,208,140,43,-1,19,116,17,-1,116,19,138,-1,115,126,113,-1,115,136,126,-1,14,20,112,-1,14,83,20,-1,119,130,121,-1,119,117,130,-1,118,129,117,-1,118,71,129,-1,114,127,209,-1,114,113,127,-1,124,70,112,-1,210,70,124,-1,211,73,50,-1,73,211,74,-1,64,118,111,-1,64,8,118,-1,109,114,212,-1,109,108,114,-1,4,53,5,-1,4,93,53,-1,88,212,104,-1,88,90,212,-1,94,213,93,-1,213,94,98,-1,90,101,214,-1,90,89,101,-1,63,95,6,-1,63,96,95,-1,100,69,10,-1,69,100,85,-1};
			return value;
		}

		/** Define subarray values using type int[] with $tupleSize=1 and $tupleSplitSize=1000 for subarray position()=2 */
		private int[] getrcaninlr_geometry_5_23_coordIndex_2()
		{
			int[] value = {60,97,61,-1,60,84,97,-1,57,102,86,-1,57,106,102,-1,103,91,88,-1,103,99,91,-1,66,4,3,-1,4,66,92,-1,107,214,106,-1,214,107,109,-1,213,105,54,-1,213,103,105,-1,3,8,7,-1,3,52,8,-1,58,110,107,-1,58,210,110,-1,104,47,105,-1,104,209,47,-1,15,56,72,-1,56,15,14,-1,110,115,108,-1,110,215,115,-1,13,116,216,-1,13,12,116,-1,119,49,111,-1,49,119,120,-1,217,120,122,-1,211,120,217,-1,207,124,123,-1,215,124,207,-1,18,127,125,-1,48,127,18,-1,208,129,216,-1,129,208,128,-1,130,42,131,-1,130,128,42,-1,45,205,133,-1,45,217,205,-1,20,218,123,-1,20,22,218,-1,219,126,135,-1,125,126,219,-1,220,219,204,-1,206,219,220,-1,221,132,131,-1,132,221,143,-1,75,134,133,-1,134,75,26,-1,147,218,222,-1,145,218,147,-1,147,149,146,-1,147,223,149,-1,220,151,153,-1,220,224,151,-1,221,25,203,-1,221,23,25,-1,29,156,222,-1,29,31,156,-1,177,156,155,-1,223,156,177,-1,159,180,224,-1,159,158,180,-1,25,162,199,-1,25,24,162,-1,76,165,174,-1,76,154,165,-1,197,67,198,-1,67,197,68,-1,192,170,190,-1,192,168,170,-1,163,168,192,-1,163,202,168,-1,167,175,39,-1,167,173,175,-1,187,179,176,-1,160,179,187,-1,161,35,182,-1,161,181,35,-1,200,183,225,-1,182,183,200,-1,68,34,33,-1,68,201,34,-1,186,188,185,-1,186,79,188,-1,2,196,195,-1,2,81,196,-1,0,195,36,-1,0,2,195,-1,175,194,184,-1,175,172,194,-1,36,185,188,-1,185,36,195,-1,188,78,189,-1,188,79,78,-1,186,178,197,-1,186,176,178,-1,171,225,169,-1,200,225,171,-1,162,182,200,-1,162,161,182,-1,160,196,158,-1,160,187,196,-1,38,167,39,-1,166,167,38,-1,165,192,191,-1,165,163,192,-1,201,197,178,-1,201,68,197,-1,27,174,173,-1,27,76,174,-1,203,199,202,-1,203,25,199,-1,224,181,151,-1,224,180,181,-1,179,223,177,-1,149,223,179,-1,222,223,147,-1,222,156,223,-1,143,203,164,-1,143,221,203,-1,224,204,159,-1,220,204,224,-1,204,135,150,-1,219,135,204,-1,222,22,29,-1,218,22,222,-1,133,77,75,-1,133,205,77,-1,131,23,221,-1,131,42,23,-1,153,206,220,-1,139,206,153,-1,206,125,219,-1,18,125,206,-1,145,123,218,-1,207,123,145,-1,217,142,205,-1,217,122,142,-1,43,128,208,-1,128,43,42,-1,138,216,116,-1,216,138,208,-1,136,215,207,-1,115,215,136,-1,74,217,45,-1,74,211,217,-1,120,50,49,-1,50,120,211,-1,71,216,129,-1,71,13,216,-1,209,48,47,-1,209,127,48,-1,210,215,110,-1,210,124,215,-1,74,72,73,-1,72,74,15,-1,50,62,51,-1,62,50,73,-1,8,71,118,-1,8,52,71,-1,212,209,104,-1,212,114,209,-1,210,55,70,-1,58,55,210,-1,62,69,60,-1,69,62,59,-1,93,54,53,-1,93,213,54,-1,212,214,109,-1,90,214,212,-1,6,66,7,-1,6,95,66,-1,213,99,103,-1,213,98,99,-1,101,106,214,-1,106,101,102,-1,61,96,63,-1,61,97,96,-1,87,10,9,-1,10,87,100,-1};
			return value;
		}
		/** Large attribute array: IndexedFaceSet DEF='rcaninlr_geometry' coordIndex field, scene-graph level=5, element #23, 1720 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 getrcaninlr_geometry_5_23_coordIndex()
		{
			MFInt32 rcaninlr_geometry_5_23_coordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getrcaninlr_geometry_5_23_coordIndex_1()))
				.append(new MFInt32(getrcaninlr_geometry_5_23_coordIndex_2()));
			return rcaninlr_geometry_5_23_coordIndex;
		}
		/** Large attribute array: Coordinate DEF='rcaninlr_coordinate' point field, scene-graph level=6, element #23, 678 total numbers made up of 226 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 getrcaninlr_coordinate_6_23_point()
		{
			MFVec3f rcaninlr_coordinate_6_23_point = new MFVec3f(new double[] {-0.0113,1.5832,0.0889,-0.0121,1.5824,0.0889,-0.0113,1.583,0.0888,-0.0087,1.5671,0.0828,-0.0086,1.5671,0.0828,-0.0092,1.5673,0.0831,-0.0086,1.5671,0.0824,-0.0087,1.5671,0.0827,-0.0093,1.5674,0.0824,-0.0078,1.568,0.0818,-0.0079,1.5678,0.0817,-0.0082,1.5684,0.0814,-0.0101,1.5688,0.084,-0.0105,1.5687,0.0836,-0.0087,1.5718,0.0813,-0.009,1.5717,0.0812,-0.0091,1.5735,0.081,-0.0103,1.571,0.0852,-0.0102,1.5728,0.0856,-0.0107,1.5727,0.0859,-0.0086,1.5736,0.0816,-0.0088,1.5755,0.0811,-0.0085,1.5755,0.0815,-0.0129,1.5759,0.0855,-0.0129,1.5774,0.0864,-0.0133,1.5774,0.0857,-0.0094,1.5772,0.0807,-0.0104,1.5785,0.0808,-0.0095,1.5787,0.0807,-0.0084,1.5772,0.0815,-0.0087,1.5788,0.0812,-0.0085,1.5787,0.0818,-0.0094,1.5851,0.0819,-0.009,1.5851,0.0825,-0.0089,1.5831,0.0822,-0.0119,1.5817,0.0887,-0.0104,1.5853,0.0885,-0.0104,1.5852,0.0887,-0.0091,1.5832,0.0817,-0.0101,1.5831,0.0812,-0.0103,1.585,0.0813,-0.0103,1.5857,0.0886,-0.0123,1.5743,0.0849,-0.0122,1.5742,0.0856,-0.0126,1.5759,0.0861,-0.0098,1.5734,0.0813,-0.0097,1.569,0.0843,-0.0094,1.5692,0.0841,-0.0099,1.5711,0.0849,-0.0101,1.5692,0.0817,-0.0095,1.5694,0.0815,-0.0088,1.5679,0.0815,-0.0094,1.5673,0.0828,-0.0091,1.5675,0.0832,-0.0088,1.5677,0.0833,-0.0081,1.5685,0.0816,-0.0086,1.5699,0.0813,-0.0078,1.568,0.082,-0.0081,1.5685,0.0819,-0.0083,1.5683,0.0813,-0.0081,1.5676,0.0818,-0.0083,1.5673,0.0819,-0.0085,1.5681,0.0813,-0.0085,1.5671,0.0821,-0.0093,1.5674,0.082,-0.009,1.5677,0.0817,-0.0086,1.5671,0.0827,-0.0089,1.5854,0.0834,-0.0089,1.585,0.0833,-0.008,1.5677,0.0818,-0.0085,1.5699,0.0817,-0.0105,1.5688,0.0832,-0.0088,1.5698,0.0812,-0.0092,1.5697,0.0812,-0.0096,1.5716,0.0813,-0.0102,1.577,0.081,-0.0113,1.5783,0.0815,-0.0111,1.5768,0.0815,-0.0093,1.5862,0.0852,-0.0093,1.586,0.0852,-0.0092,1.5862,0.0851,-0.0112,1.5819,0.0884,-0.0087,1.5772,0.0811,-0.0087,1.5736,0.0812,-0.0081,1.5676,0.0819,-0.008,1.5677,0.0819,-0.0078,1.5679,0.082,-0.0078,1.5679,0.0819,-0.0081,1.5679,0.0828,-0.0079,1.5679,0.0826,-0.0079,1.568,0.0826,-0.008,1.5678,0.0828,-0.0085,1.5671,0.0828,-0.0085,1.5673,0.083,-0.0084,1.5673,0.0829,-0.0085,1.5671,0.0824,-0.0084,1.5672,0.0822,-0.0083,1.5673,0.082,-0.0084,1.5674,0.0829,-0.0082,1.5676,0.0829,-0.0079,1.5678,0.0819,-0.0078,1.5679,0.0823,-0.0078,1.5679,0.0821,-0.0083,1.5677,0.083,-0.0084,1.5681,0.0831,-0.0087,1.5679,0.0833,-0.0078,1.568,0.0821,-0.0081,1.5684,0.0821,-0.0086,1.5698,0.0827,-0.0081,1.5684,0.0824,-0.0085,1.5699,0.0823,-0.0104,1.5689,0.0823,-0.0086,1.5718,0.0817,-0.0089,1.5716,0.0837,-0.0087,1.5697,0.0832,-0.0087,1.5717,0.0829,-0.0109,1.5709,0.0849,-0.0113,1.5711,0.0833,-0.0105,1.5688,0.0828,-0.0112,1.5712,0.0827,-0.0108,1.5714,0.082,-0.0117,1.5729,0.083,-0.0113,1.5731,0.0822,-0.0086,1.5736,0.0821,-0.0086,1.5717,0.0821,-0.0095,1.5731,0.085,-0.009,1.5733,0.0842,-0.0093,1.5714,0.0844,-0.0118,1.5726,0.0844,-0.0113,1.571,0.0839,-0.0118,1.5728,0.0837,-0.0123,1.5744,0.0841,-0.0122,1.5745,0.0833,-0.01,1.5752,0.0812,-0.0092,1.5754,0.0809,-0.009,1.5751,0.0846,-0.0088,1.5735,0.0832,-0.0087,1.5753,0.0834,-0.0113,1.5726,0.0855,-0.0111,1.5744,0.0866,-0.0117,1.5743,0.0862,-0.012,1.5759,0.0868,-0.0117,1.5748,0.0822,-0.0127,1.5762,0.0836,-0.0121,1.5765,0.0823,-0.0086,1.5754,0.0827,-0.0086,1.577,0.0836,-0.0084,1.5771,0.0828,-0.0092,1.5783,0.0855,-0.0087,1.5785,0.0839,-0.0091,1.5768,0.0851,-0.0113,1.5774,0.0876,-0.0122,1.5774,0.0872,-0.0112,1.576,0.0873,-0.0125,1.578,0.0825,-0.0086,1.5807,0.0825,-0.0084,1.5786,0.0824,-0.0087,1.5808,0.0818,-0.0099,1.5799,0.0872,-0.0098,1.578,0.0866,-0.0092,1.5802,0.086,-0.0125,1.5794,0.0877,-0.0132,1.5794,0.087,-0.0134,1.5798,0.0843,-0.0131,1.5777,0.0838,-0.0128,1.5801,0.0828,-0.0089,1.5809,0.0813,-0.0098,1.5808,0.0809,-0.0139,1.5819,0.0856,-0.0142,1.5825,0.0867,-0.0143,1.583,0.086,-0.0139,1.5817,0.0866,-0.0118,1.5827,0.0821,-0.0105,1.5807,0.081,-0.0116,1.5804,0.0818,-0.0108,1.583,0.0814,-0.009,1.5827,0.0846,-0.0087,1.5806,0.0833,-0.0089,1.5829,0.0838,-0.0088,1.5805,0.0842,-0.0109,1.5796,0.0879,-0.0116,1.5795,0.0882,-0.0129,1.5816,0.0882,-0.0131,1.5822,0.0883,-0.0111,1.5845,0.0815,-0.0097,1.584,0.0867,-0.0092,1.5845,0.0849,-0.0094,1.5824,0.0865,-0.0098,1.5857,0.0871,-0.0098,1.587,0.0875,-0.0139,1.5837,0.0849,-0.0131,1.5823,0.0832,-0.0138,1.582,0.0847,-0.0135,1.584,0.0837,-0.0123,1.5842,0.0825,-0.0103,1.5835,0.0881,-0.0101,1.5821,0.0877,-0.0091,1.5848,0.0841,-0.009,1.5857,0.0842,-0.0136,1.5795,0.0861,-0.0135,1.5816,0.0875,-0.0088,1.583,0.0829,-0.0136,1.5796,0.0852,-0.0133,1.5776,0.0847,-0.0096,1.5765,0.0863,-0.0109,1.575,0.0817,-0.0105,1.5746,0.0863,-0.0087,1.5735,0.0827,-0.0117,1.5726,0.085,-0.009,1.5695,0.0837,-0.0085,1.5699,0.082,-0.0101,1.5715,0.0816,-0.0082,1.5683,0.0827,-0.0084,1.5675,0.0831,-0.0078,1.568,0.0823,-0.0087,1.5717,0.0825,-0.0113,1.5709,0.0844,-0.0105,1.5733,0.0816,-0.0085,1.5754,0.0821,-0.0096,1.5748,0.0857,-0.0105,1.5762,0.0869,-0.0129,1.5761,0.0845,-0.0084,1.5772,0.0822,-0.0085,1.5786,0.0831,-0.0106,1.5776,0.0873,-0.0137,1.5823,0.0876});
			return rcaninlr_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 r_caninelr 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_caninelr().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_caninelr\" 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_caninelr self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

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