package Savage.Submarines.SsnLosAngelesUnitedStates;

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

// Javadoc metadata annotations follow, see below for X3DJSAIL Java source code.
/**
 * <p> Manually constructed 688-class submarine, with original data from wrl (VRML97) file conversion. Meta Quest 3 XR screenshots by Jon Brewster. </p>
 <p> Related links: Catalog page <a href="../../../../Submarines/SsnLosAngelesUnitedStates/LosAngelesClass688Index.html" target="_blank">LosAngelesClass688</a>,  source <a href="../../../../Submarines/SsnLosAngelesUnitedStates/LosAngelesClass688.java">LosAngelesClass688.java</a>, <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;">&nbsp; Document Metadata </td>
		</tr>

		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> title </i> </td>
			<td> <a href="../../../../Submarines/SsnLosAngelesUnitedStates/LosAngelesClass688.x3d">LosAngelesClass688.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> description </i> </td>
			<td> Manually constructed 688-class submarine, with original data from wrl (VRML97) file conversion. Meta Quest 3 XR screenshots by Jon Brewster. </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> creator </i> </td>
			<td> Andrew Wiest </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> translator </i> </td>
			<td> X3d-Edit </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> created </i> </td>
			<td> 5 May 2001 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> modified </i> </td>
			<td> 24 October 2024 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> Image </i> </td>
			<td> <a href="../../../../Submarines/SsnLosAngelesUnitedStates/LosAngelesClass688X3domMetaQuest3Browsing.jpg">LosAngelesClass688X3domMetaQuest3Browsing.jpg</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> Image </i> </td>
			<td> <a href="../../../../Submarines/SsnLosAngelesUnitedStates/LosAngelesClass688X3domMetaQuest3Immersive.jpg">LosAngelesClass688X3domMetaQuest3Immersive.jpg</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="http://www.chinfo.navy.mil/navpalib/cno/n87/us-subs.html" target="_blank">http://www.chinfo.navy.mil/navpalib/cno/n87/us-subs.html</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> archive/la_class_sub.wrl </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> archive/la_class_sub_4.wrl </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> archive/la_class_sub_713.wrl </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="http://www.csp.navy.mil" target="_blank">http://www.csp.navy.mil</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/Savage/Submarines/SsnLosAngelesUnitedStates/LosAngelesClass688.x3d" target="_blank">https://www.web3d.org/x3d/content/examples/Savage/Submarines/SsnLosAngelesUnitedStates/LosAngelesClass688.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> generator </i> </td>
			<td> X3D-Edit 3.2, <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> license </i> </td>
			<td> <a href="../../../../Submarines/SsnLosAngelesUnitedStates/../../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 Andrew Wiest
 */

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

	/** Create and initialize the X3D model for this object. */
	public final void initialize()
	{
            try { // catch-all
  x3dModel = new X3D().setProfile(X3D.PROFILE_IMMERSIVE).setVersion(X3D.VERSION_3_0)
  .setHead(new head()
    .addMeta(new meta().setName(meta.NAME_TITLE      ).setContent("LosAngelesClass688.x3d"))
    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("Manually constructed 688-class submarine, with original data from wrl (VRML97) file conversion. Meta Quest 3 XR screenshots by Jon Brewster."))
    .addMeta(new meta().setName(meta.NAME_CREATOR    ).setContent("Andrew Wiest"))
    .addMeta(new meta().setName(meta.NAME_TRANSLATOR ).setContent("X3d-Edit"))
    .addMeta(new meta().setName(meta.NAME_CREATED    ).setContent("5 May 2001"))
    .addMeta(new meta().setName(meta.NAME_MODIFIED   ).setContent("24 October 2024"))
    .addMeta(new meta().setName(meta.NAME_IMAGE      ).setContent("LosAngelesClass688X3domMetaQuest3Browsing.jpg"))
    .addMeta(new meta().setName(meta.NAME_IMAGE      ).setContent("LosAngelesClass688X3domMetaQuest3Immersive.jpg"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("http://www.chinfo.navy.mil/navpalib/cno/n87/us-subs.html"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("archive/la_class_sub.wrl"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("archive/la_class_sub_4.wrl"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("archive/la_class_sub_713.wrl"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("http://www.csp.navy.mil"))
    .addMeta(new meta().setName(meta.NAME_IDENTIFIER ).setContent("https://www.web3d.org/x3d/content/examples/Savage/Submarines/SsnLosAngelesUnitedStates/LosAngelesClass688.x3d"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit"))
    .addMeta(new meta().setName(meta.NAME_LICENSE    ).setContent("../../license.html")))
  .setScene(new Scene()
    .addChild(new WorldInfo().setTitle("LosAngelesClass688.x3d"))
    .addChild(new Background().setSkyAngle(new double[] {1.57}).setSkyColor(new MFColor(new double[] {0.6,0.8,0.6,0.6,0.6,0.6})))
    .addChild(new Viewpoint("DefaultViewpoint").setDescription("688 starboard side 100m").setPosition(0.0,0.0,100.0))
    .addChild(new Viewpoint().setDescription("688 from forward port quarter").setOrientation(-0.123811,0.991215,0.0465201,0.72466).setPosition(70.0,10.0,80.0))
    .addChild(new Group()
      .addChild(new Collision().setEnabled(false)
        .addChild(new Transform("LA688TopTransform")
          .addChild(new Transform("RollTransform")
            .addChild(new Transform("PitchTransform")
              .addChild(new Transform("YawTransform")
                .addChild(new Transform("ScaleTransform")
                  .addChild(new Transform("FacingCorrectionTransform").setRotation(0.0,1.0,0.0,3.14159265359)
                    .addChild(new Transform("USS_LA").setRotation(0.577417,-0.577317,-0.577317,4.18889).setScale(0.31513220339,0.31513220339,0.31513220339).setScaleOrientation(-0.606233,-0.714056,-0.350152,0.794713).setTranslation(0.0,0.0,-1.11759E-7)
                      .addChild(new Shape()
                        .setAppearance(new Appearance()
                          .setMaterial(new Material("_688_Hull").setAmbientIntensity(0.1).setDiffuseColor(0.1,0.1,0.1).setSpecularColor(0.1,0.1,0.1)))
                        .setGeometry(new IndexedFaceSet().setCreaseAngle(1.57079).setSolid(false).setCoordIndex(getIndexedFaceSet_13_24_coordIndex())
                          .setCoord(new Coordinate().setPoint(getCoordinate_14_24_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 subarrays using type int[] */
		private int[] getIndexedFaceSet_13_24_coordIndex_1()
		{
			int[] value = {0,1,2,-1,0,3,1,-1,0,4,3,-1,0,5,4,-1,5,6,4,-1,5,7,6,-1,8,9,10,-1,9,11,10,-1,11,12,10,-1,10,12,13,-1,12,14,13,-1,14,15,13,-1,16,17,18,-1,19,20,21,-1,18,20,19,-1,22,23,24,-1,16,25,17,-1,17,26,20,-1,20,26,21,-1,21,27,19,-1,19,28,18,-1,18,29,16,-1,14,12,29,-1,12,26,25,-1,11,9,26,-1,6,22,4,-1,4,30,3,-1,3,23,1,-1,10,13,31,-1,31,32,33,-1,33,5,0,-1,34,35,36,-1,37,36,38,-1,39,37,40,-1,41,23,42,-1,43,42,44,-1,6,43,22,-1,45,46,47,-1,48,46,45,-1,49,50,48,-1,51,50,52,-1,53,52,54,-1,55,53,56,-1,57,55,46,-1,58,46,59,-1,60,59,50,-1,22,44,23,-1,51,57,58,-1,53,55,57,-1,60,51,58,-1,49,40,61,-1,48,40,49,-1,39,40,48,-1,45,39,48,-1,47,39,45,-1,62,39,47,-1,35,6,7,-1,35,43,6,-1,63,43,35,-1,63,41,43,-1,63,1,41,-1,63,2,1,-1,64,65,66,-1,64,67,65,-1,64,68,67,-1,64,69,68,-1,69,70,68,-1,69,71,70,-1,62,47,72,-1,47,73,72,-1,73,74,72,-1,72,74,75,-1,74,49,75,-1,49,61,75,-1,76,77,78,-1,79,80,81,-1,78,80,79,-1,82,83,84,-1,76,85,77,-1,77,86,80,-1,80,86,81,-1,81,56,79,-1,79,52,78,-1,78,50,76,-1,49,74,50,-1,74,86,85,-1,73,47,86,-1,70,82,68,-1,68,87,67,-1,67,83,65,-1,72,75,88,-1,88,89,90,-1,90,69,64,-1,91,92,93,-1,94,93,95,-1,96,94,97,-1,98,83,99,-1,100,99,101,-1,70,100,82,-1,102,103,9,-1,104,103,102,-1,14,29,104,-1,105,29,28,-1,106,28,107,-1,108,106,27,-1,109,108,103,-1,110,103,111,-1,112,111,29,-1,82,101,83,-1,105,109,110,-1,106,108,109,-1,112,105,110,-1,14,97,15,-1,104,97,14,-1,96,97,104,-1,102,96,104,-1,9,96,102,-1,8,96,9,-1,92,70,71,-1,92,100,70,-1,113,100,92,-1,113,98,100,-1,113,65,98,-1,113,66,65,-1,114,115,116,-1,114,116,117,-1,114,117,118,-1,114,118,119,-1,114,119,120,-1,115,121,116,-1,116,122,117,-1,117,123,118,-1,118,123,119,-1,119,124,120,-1,125,126,121,-1,121,127,122,-1,122,128,123,-1,123,129,124,-1,124,130,131,-1,126,132,127,-1,127,133,134,-1,134,135,128,-1,128,135,129,-1,129,136,130,-1,132,137,138,-1,138,139,133,-1,133,140,135,-1,135,140,141,-1,141,142,136,-1,137,143,144,-1,144,145,139,-1,139,146,140,-1,140,147,148,-1,148,149,142,-1,143,150,145,-1,145,151,152,-1,152,153,146,-1,146,153,147,-1,147,154,149,-1,155,156,150,-1,150,157,151,-1,151,158,153,-1,153,158,154,-1,154,159,160,-1,161,162,156,-1,156,163,157,-1,157,164,158,-1,158,164,159,-1,159,165,166,-1,167,168,162,-1,162,169,163,-1,163,170,164,-1,164,170,165,-1,165,171,172,-1,168,173,174,-1,174,175,169,-1,169,176,170,-1,170,177,178,-1,178,179,171,-1,180,181,182,-1,182,183,184,-1,184,185,186,-1,186,187,188,-1,188,189,190,-1,191,192,181,-1,181,193,183,-1,183,194,185,-1,185,195,187,-1,187,196,189,-1,197,198,192,-1,192,199,193,-1,193,200,194,-1,194,201,195,-1,195,202,196,-1,203,204,198,-1,198,205,199,-1,199,206,200,-1,200,207,201,-1,201,208,202,-1,209,210,204,-1,204,211,205,-1,205,212,206,-1,206,213,207,-1,207,214,208,-1,215,216,210,-1,210,217,211,-1,211,218,212,-1,212,219,213,-1,213,220,214,-1,216,221,217,-1,217,222,223,-1,223,224,218,-1,218,225,219,-1,219,226,220,-1,221,227,222,-1,222,228,229,-1,229,230,224,-1,224,231,225,-1,225,232,226,-1,227,233,228,-1,228,234,235,-1,235,236,230,-1,230,236,231,-1,231,237,232,-1,238,239,233,-1,233,239,234,-1,234,240,236,-1,236,241,237,-1,237,241,242,-1,243,10,239,-1,239,10,244,-1,244,33,240,-1,240,0,241,-1,241,0,245,-1,246,247,113,-1,248,113,91,-1,249,91,94,-1,250,249,96,-1,243,96,8,-1,251,252,246,-1,253,246,248,-1,254,248,249,-1,255,254,250,-1,238,250,243,-1,256,257,251,-1,258,256,253,-1,259,253,254,-1,260,254,255,-1,227,255,238,-1,261,257,256,-1};
			return value;
		}
		private int[] getIndexedFaceSet_13_24_coordIndex_2()
		{
			int[] value = {262,256,258,-1,263,258,259,-1,264,263,260,-1,221,264,227,-1,265,266,261,-1,267,261,262,-1,268,262,263,-1,269,268,264,-1,216,269,221,-1,270,271,265,-1,272,265,267,-1,273,267,268,-1,274,273,269,-1,215,274,216,-1,275,276,270,-1,277,270,272,-1,278,272,273,-1,279,273,274,-1,209,274,215,-1,280,281,275,-1,282,275,277,-1,283,277,278,-1,284,278,279,-1,203,279,209,-1,285,286,280,-1,287,280,282,-1,288,282,283,-1,289,283,284,-1,197,284,203,-1,290,291,285,-1,292,285,287,-1,293,287,288,-1,294,288,289,-1,191,289,197,-1,295,296,290,-1,297,290,292,-1,298,292,293,-1,299,293,294,-1,180,294,191,-1,300,301,302,-1,303,302,304,-1,305,304,306,-1,307,306,308,-1,168,308,309,-1,310,311,300,-1,312,310,303,-1,313,303,305,-1,314,305,307,-1,167,314,168,-1,315,316,310,-1,317,315,312,-1,318,312,313,-1,319,313,314,-1,161,314,167,-1,320,321,315,-1,322,320,317,-1,323,317,318,-1,324,318,319,-1,155,319,161,-1,325,326,320,-1,327,325,322,-1,328,322,323,-1,329,323,324,-1,143,324,155,-1,330,326,325,-1,331,325,327,-1,332,327,328,-1,333,332,329,-1,137,333,143,-1,334,335,330,-1,336,334,331,-1,337,331,332,-1,338,332,333,-1,132,338,137,-1,339,340,334,-1,341,339,336,-1,342,336,337,-1,343,337,338,-1,126,343,132,-1,344,345,339,-1,346,339,341,-1,347,341,342,-1,348,347,343,-1,125,348,126,-1,349,350,344,-1,351,349,346,-1,352,346,347,-1,353,347,348,-1,115,348,125,-1,114,350,349,-1,114,349,351,-1,114,351,352,-1,114,352,353,-1,114,353,115,-1,179,354,355,-1,356,357,354,-1,358,359,357,-1,360,361,359,-1,355,362,363,-1,354,364,362,-1,357,365,364,-1,357,366,365,-1,357,359,366,-1,359,367,366,-1,359,368,367,-1,363,369,370,-1,362,371,369,-1,364,372,371,-1,372,373,371,-1,373,374,371,-1,373,367,374,-1,367,375,374,-1,370,376,377,-1,369,378,376,-1,371,379,378,-1,374,380,379,-1,381,377,376,-1,381,376,378,-1,381,378,382,-1,382,378,379,-1,382,379,380,-1,383,367,384,-1,384,373,385,-1,385,372,386,-1,386,365,387,-1,387,366,388,-1,388,367,383,-1,389,384,390,-1,390,384,391,-1,391,385,392,-1,392,387,393,-1,393,388,394,-1,394,383,389,-1,390,394,389,-1,391,394,390,-1,391,392,393,-1,301,295,302,-1,302,297,304,-1,304,298,306,-1,306,299,308,-1,308,180,309,-1,309,182,173,-1,173,184,175,-1,175,186,176,-1,176,188,177,-1,177,356,179,-1,177,358,356,-1,177,188,358,-1,188,360,358,-1,188,190,360,-1,395,396,190,-1,395,397,396,-1,398,397,395,-1,398,399,397,-1,398,179,399,-1,400,395,401,-1,402,401,403,-1,404,403,405,-1,406,405,407,-1,408,407,409,-1,410,409,411,-1,412,411,413,-1,414,413,415,-1,301,415,416,-1,417,418,419,-1,417,420,418,-1,421,422,420,-1,420,423,424,-1,418,424,425,-1,419,425,426,-1,417,419,427,-1,421,417,428,-1,422,428,423,-1,424,429,430,-1,425,430,431,-1,426,431,432,-1,427,426,433,-1,428,427,434,-1,423,428,429,-1,382,380,435,-1,382,435,436,-1,381,382,436,-1,381,436,437,-1,381,437,377,-1,438,380,375,-1,439,435,438,-1,440,436,439,-1,370,437,440,-1,429,375,368,-1,434,438,429,-1,434,439,438,-1,433,439,434,-1,432,439,433,-1,441,439,432,-1,363,440,441,-1,442,368,361,-1,442,430,429,-1,443,430,442,-1,443,431,430,-1,443,432,431,-1,444,432,443,-1,355,441,444,-1,396,361,190,-1,397,442,396,-1,399,443,397,-1,179,444,399,-1,114,445,446,-1,114,446,447,-1,114,447,448,-1,114,448,449,-1,114,449,350,-1,445,450,446,-1,446,451,447,-1,447,452,448,-1,448,452,449,-1,449,453,350,-1,454,455,450,-1,450,456,451,-1,451,457,452,-1,452,458,453,-1,453,345,459,-1,455,460,456,-1,456,461,462,-1,462,463,457,-1,457,463,458,-1,458,340,345,-1,460,464,465,-1,465,466,461,-1,461,467,463,-1,463,467,468,-1,468,335,340,-1,464,469,470,-1,470,471,466,-1,466,472,467,-1,467,473,474,-1,474,326,335,-1,469,475,471,-1,471,476,477,-1,477,478,472,-1,472,478,473,-1,473,479,326,-1,480,481,475,-1,475,482,476,-1,476,483,478,-1,478,483,479,-1,479,484,321,-1,485,486,481,-1,481,487,482,-1,482,488,483,-1,483,488,484,-1};
			return value;
		}
		private int[] getIndexedFaceSet_13_24_coordIndex_3()
		{
			int[] value = {484,489,316,-1,490,491,486,-1,486,492,487,-1,487,493,488,-1,488,493,489,-1,489,311,494,-1,491,408,495,-1,495,410,492,-1,492,412,493,-1,493,414,496,-1,496,301,311,-1,407,497,409,-1,409,498,411,-1,411,499,413,-1,413,500,415,-1,415,296,416,-1,501,502,497,-1,497,503,498,-1,498,504,499,-1,499,505,500,-1,500,291,296,-1,506,507,502,-1,502,508,503,-1,503,509,504,-1,504,510,505,-1,505,286,291,-1,511,512,507,-1,507,513,508,-1,508,514,509,-1,509,515,510,-1,510,281,286,-1,516,517,512,-1,512,518,513,-1,513,519,514,-1,514,520,515,-1,515,276,281,-1,521,522,517,-1,517,523,518,-1,518,524,519,-1,519,525,520,-1,520,271,276,-1,522,526,523,-1,523,527,528,-1,528,529,524,-1,524,530,525,-1,525,266,271,-1,526,531,527,-1,527,532,533,-1,533,534,529,-1,529,535,530,-1,530,257,266,-1,531,536,532,-1,532,537,538,-1,538,539,534,-1,534,539,535,-1,535,540,257,-1,541,542,536,-1,536,542,537,-1,537,543,539,-1,539,544,540,-1,540,544,252,-1,545,72,542,-1,542,72,546,-1,546,90,543,-1,543,64,544,-1,544,64,247,-1,547,245,63,-1,548,63,34,-1,549,34,37,-1,550,549,39,-1,545,39,62,-1,551,242,547,-1,552,547,548,-1,553,548,549,-1,554,553,550,-1,541,550,545,-1,555,232,551,-1,556,555,552,-1,557,552,553,-1,558,553,554,-1,531,554,541,-1,559,232,555,-1,560,555,556,-1,561,556,557,-1,562,561,558,-1,526,562,531,-1,563,226,559,-1,564,559,560,-1,565,560,561,-1,566,565,562,-1,522,566,526,-1,567,220,563,-1,568,563,564,-1,569,564,565,-1,570,569,566,-1,521,570,522,-1,571,214,567,-1,572,567,568,-1,573,568,569,-1,574,569,570,-1,516,570,521,-1,575,208,571,-1,576,571,572,-1,577,572,573,-1,578,573,574,-1,511,574,516,-1,579,202,575,-1,580,575,576,-1,581,576,577,-1,582,577,578,-1,506,578,511,-1,583,196,579,-1,584,579,580,-1,585,580,581,-1,586,581,582,-1,501,582,506,-1,395,189,583,-1,401,583,584,-1,403,584,585,-1,405,585,586,-1,407,586,501,-1,587,179,398,-1,588,398,400,-1,589,400,402,-1,590,402,404,-1,491,404,406,-1,591,171,587,-1,592,591,588,-1,593,588,589,-1,594,589,590,-1,490,594,491,-1,595,166,591,-1,596,595,592,-1,597,592,593,-1,598,593,594,-1,485,594,490,-1,599,160,595,-1,600,599,596,-1,601,596,597,-1,602,597,598,-1,480,598,485,-1,603,149,599,-1,604,603,600,-1,605,600,601,-1,606,601,602,-1,469,602,480,-1,607,149,603,-1,608,603,604,-1,609,604,605,-1,610,609,606,-1,464,610,469,-1,611,142,607,-1,612,611,608,-1,613,608,609,-1,614,609,610,-1,460,614,464,-1,615,136,611,-1,616,615,612,-1,617,612,613,-1,618,613,614,-1,455,618,460,-1,619,130,615,-1,620,615,616,-1,621,616,617,-1,622,621,618,-1,454,622,455,-1,623,120,619,-1,624,623,620,-1,625,620,621,-1,626,621,622,-1,445,622,454,-1,114,120,623,-1,114,623,624,-1,114,624,625,-1,114,625,626,-1,114,626,445,-1,20,18,17,-1,24,23,30,-1,25,16,29,-1,26,17,25,-1,21,26,27,-1,19,27,28,-1,28,19,107,-1,29,18,28,-1,29,12,25,-1,26,12,11,-1,26,9,27,-1,4,22,24,-1,30,4,24,-1,23,3,30,-1,31,13,627,-1,32,31,627,-1,5,33,32,-1,35,34,63,-1,36,37,34,-1,40,37,38,-1,23,41,1,-1,42,43,41,-1,22,43,44,-1,47,46,56,-1,46,48,59,-1,48,50,59,-1,50,51,60,-1,52,53,51,-1,56,53,52,-1,46,55,56,-1,46,58,57,-1,59,60,58,-1,23,44,42,-1,57,51,53,-1,80,78,77,-1,84,83,87,-1,85,76,50,-1,86,77,85,-1,81,86,56,-1,79,56,52,-1,52,79,54,-1,50,78,52,-1,50,74,85,-1,86,74,73,-1,86,47,56,-1,68,82,84,-1,87,68,84,-1,83,67,87,-1,88,75,628,-1,89,88,628,-1,69,90,89,-1,92,91,113,-1,93,94,91,-1,97,94,95,-1,83,98,65,-1,99,100,98,-1,82,100,101,-1,9,103,27,-1,103,104,111,-1,104,29,111,-1,29,105,112,-1,28,106,105,-1,27,106,28,-1,103,108,27,-1,103,110,109,-1,111,112,110,-1,83,101,99,-1,109,105,106,-1,121,115,125,-1,122,116,121,-1,123,117,122,-1,119,123,124,-1,120,124,131,-1,121,126,127,-1};
			return value;
		}
		private int[] getIndexedFaceSet_13_24_coordIndex_4()
		{
			int[] value = {122,127,134,-1,128,122,134,-1,129,123,128,-1,130,124,129,-1,127,132,138,-1,133,127,138,-1,135,134,133,-1,129,135,141,-1,136,129,141,-1,138,137,144,-1,139,138,144,-1,140,133,139,-1,141,140,148,-1,142,141,148,-1,144,143,145,-1,139,145,152,-1,146,139,152,-1,147,140,146,-1,149,148,147,-1,150,143,155,-1,151,145,150,-1,153,152,151,-1,147,153,154,-1,149,154,160,-1,156,155,161,-1,157,150,156,-1,158,151,157,-1,154,158,159,-1,160,159,166,-1,162,161,167,-1,163,156,162,-1,164,157,163,-1,159,164,165,-1,166,165,172,-1,162,168,174,-1,169,162,174,-1,170,163,169,-1,165,170,178,-1,171,165,178,-1,173,168,309,-1,175,174,173,-1,176,169,175,-1,177,170,176,-1,179,178,177,-1,181,180,191,-1,183,182,181,-1,185,184,183,-1,187,186,185,-1,189,188,187,-1,192,191,197,-1,193,181,192,-1,194,183,193,-1,195,185,194,-1,196,187,195,-1,198,197,203,-1,199,192,198,-1,200,193,199,-1,201,194,200,-1,202,195,201,-1,204,203,209,-1,205,198,204,-1,206,199,205,-1,207,200,206,-1,208,201,207,-1,210,209,215,-1,211,204,210,-1,212,205,211,-1,213,206,212,-1,214,207,213,-1,210,216,217,-1,211,217,223,-1,218,211,223,-1,219,212,218,-1,220,213,219,-1,217,221,222,-1,223,222,229,-1,224,223,229,-1,225,218,224,-1,226,219,225,-1,222,227,228,-1,229,228,235,-1,230,229,235,-1,231,224,230,-1,232,225,231,-1,233,227,238,-1,234,228,233,-1,236,235,234,-1,231,236,237,-1,232,237,242,-1,239,238,243,-1,234,239,244,-1,240,234,244,-1,241,236,240,-1,242,241,245,-1,10,243,8,-1,244,10,31,-1,33,244,31,-1,0,240,33,-1,245,0,2,-1,113,247,66,-1,113,248,246,-1,91,249,248,-1,96,249,94,-1,96,243,250,-1,246,252,247,-1,246,253,251,-1,248,254,253,-1,250,254,249,-1,250,238,255,-1,251,257,252,-1,253,256,251,-1,253,259,258,-1,254,260,259,-1,255,227,260,-1,257,261,266,-1,256,262,261,-1,258,263,262,-1,260,263,259,-1,227,264,260,-1,266,265,271,-1,261,267,265,-1,262,268,267,-1,264,268,263,-1,221,269,264,-1,271,270,276,-1,265,272,270,-1,267,273,272,-1,269,273,268,-1,216,274,269,-1,276,275,281,-1,270,277,275,-1,272,278,277,-1,273,279,278,-1,274,209,279,-1,281,280,286,-1,275,282,280,-1,277,283,282,-1,278,284,283,-1,279,203,284,-1,286,285,291,-1,280,287,285,-1,282,288,287,-1,283,289,288,-1,284,197,289,-1,291,290,296,-1,285,292,290,-1,287,293,292,-1,288,294,293,-1,289,191,294,-1,296,295,416,-1,290,297,295,-1,292,298,297,-1,293,299,298,-1,294,180,299,-1,301,300,311,-1,302,303,300,-1,304,305,303,-1,306,307,305,-1,308,168,307,-1,311,310,494,-1,303,310,300,-1,303,313,312,-1,305,314,313,-1,168,314,307,-1,310,316,494,-1,312,315,310,-1,312,318,317,-1,313,319,318,-1,314,161,319,-1,315,321,316,-1,317,320,315,-1,317,323,322,-1,318,324,323,-1,319,155,324,-1,320,326,321,-1,322,325,320,-1,322,328,327,-1,323,329,328,-1,324,143,329,-1,326,330,335,-1,325,331,330,-1,327,332,331,-1,329,332,328,-1,143,333,329,-1,335,334,340,-1,331,334,330,-1,331,337,336,-1,332,338,337,-1,137,338,333,-1,340,339,345,-1,336,339,334,-1,336,342,341,-1,337,343,342,-1,132,343,338,-1,345,344,459,-1,339,346,344,-1,341,347,346,-1,343,347,342,-1,126,348,343,-1,344,350,459,-1,346,349,344,-1,346,352,351,-1,347,353,352,-1,348,115,353,-1,354,179,356,-1,357,356,358,-1,359,358,360,-1,361,360,190,-1,362,355,354,-1,364,354,357,-1,368,359,361,-1,369,363,362,-1,371,362,364,-1,375,367,368,-1,376,370,369,-1,378,369,371,-1,379,371,374,-1,380,374,375,-1,384,367,373,-1,385,373,372,-1,386,372,364,-1,365,386,364,-1,366,387,365,-1,367,388,366,-1,384,389,383,-1,391,384,385,-1,392,385,386,-1,387,392,386,-1,388,393,387,-1,383,394,388,-1,394,391,393,-1,295,301,416,-1,297,302,295,-1,298,304,297,-1,299,306,298,-1,180,308,299,-1,182,309,180,-1,184,173,182,-1,186,175,184,-1,188,176,186,-1,395,400,398,-1,401,402,400,-1,403,404,402,-1,405,406,404,-1,407,408,406,-1,409,410,408,-1,411,412,410,-1,413,414,412,-1,415,301,414,-1,420,417,421,-1};
			return value;
		}
		private int[] getIndexedFaceSet_13_24_coordIndex_5()
		{
			int[] value = {423,420,422,-1,424,418,420,-1,425,419,418,-1,427,419,426,-1,428,417,427,-1,428,422,421,-1,429,424,423,-1,430,425,424,-1,431,426,425,-1,433,426,432,-1,434,427,433,-1,429,428,434,-1,380,438,435,-1,435,439,436,-1,436,440,437,-1,437,370,377,-1,375,429,438,-1,439,441,440,-1,440,363,370,-1,368,442,429,-1,432,444,441,-1,441,355,363,-1,361,396,442,-1,442,397,443,-1,443,399,444,-1,444,179,355,-1,450,445,454,-1,451,446,450,-1,452,447,451,-1,449,452,453,-1,350,453,459,-1,450,455,456,-1,451,456,462,-1,457,451,462,-1,458,452,457,-1,345,453,458,-1,456,460,465,-1,461,456,465,-1,463,462,461,-1,458,463,468,-1,340,458,468,-1,465,464,470,-1,466,465,470,-1,467,461,466,-1,468,467,474,-1,335,468,474,-1,470,469,471,-1,466,471,477,-1,472,466,477,-1,473,467,472,-1,326,474,473,-1,475,469,480,-1,476,471,475,-1,478,477,476,-1,473,478,479,-1,326,479,321,-1,481,480,485,-1,482,475,481,-1,483,476,482,-1,479,483,484,-1,321,484,316,-1,486,485,490,-1,487,481,486,-1,488,482,487,-1,484,488,489,-1,316,489,494,-1,486,491,495,-1,492,486,495,-1,493,487,492,-1,489,493,496,-1,311,489,496,-1,408,491,406,-1,410,495,408,-1,412,492,410,-1,414,493,412,-1,301,496,414,-1,497,407,501,-1,498,409,497,-1,499,411,498,-1,500,413,499,-1,296,415,500,-1,502,501,506,-1,503,497,502,-1,504,498,503,-1,505,499,504,-1,291,500,505,-1,507,506,511,-1,508,502,507,-1,509,503,508,-1,510,504,509,-1,286,505,510,-1,512,511,516,-1,513,507,512,-1,514,508,513,-1,515,509,514,-1,281,510,515,-1,517,516,521,-1,518,512,517,-1,519,513,518,-1,520,514,519,-1,276,515,520,-1,517,522,523,-1,518,523,528,-1,524,518,528,-1,525,519,524,-1,271,520,525,-1,523,526,527,-1,528,527,533,-1,529,528,533,-1,530,524,529,-1,266,525,530,-1,527,531,532,-1,533,532,538,-1,534,533,538,-1,535,529,534,-1,257,530,535,-1,536,531,541,-1,537,532,536,-1,539,538,537,-1,535,539,540,-1,257,540,252,-1,542,541,545,-1,537,542,546,-1,543,537,546,-1,544,539,543,-1,252,544,247,-1,72,545,62,-1,546,72,88,-1,90,546,88,-1,64,543,90,-1,247,64,66,-1,63,245,2,-1,63,548,547,-1,34,549,548,-1,39,549,37,-1,39,545,550,-1,547,242,245,-1,547,552,551,-1,548,553,552,-1,550,553,549,-1,550,541,554,-1,551,232,242,-1,552,555,551,-1,552,557,556,-1,553,558,557,-1,554,531,558,-1,232,559,226,-1,555,560,559,-1,556,561,560,-1,558,561,557,-1,531,562,558,-1,226,563,220,-1,559,564,563,-1,560,565,564,-1,562,565,561,-1,526,566,562,-1,220,567,214,-1,563,568,567,-1,564,569,568,-1,566,569,565,-1,522,570,566,-1,214,571,208,-1,567,572,571,-1,568,573,572,-1,569,574,573,-1,570,516,574,-1,208,575,202,-1,571,576,575,-1,572,577,576,-1,573,578,577,-1,574,511,578,-1,202,579,196,-1,575,580,579,-1,576,581,580,-1,577,582,581,-1,578,506,582,-1,196,583,189,-1,579,584,583,-1,580,585,584,-1,581,586,585,-1,582,501,586,-1,189,395,190,-1,583,401,395,-1,584,403,401,-1,585,405,403,-1,586,407,405,-1,179,587,171,-1,398,588,587,-1,400,589,588,-1,402,590,589,-1,404,491,590,-1,171,591,172,-1,588,591,587,-1,588,593,592,-1,589,594,593,-1,491,594,590,-1,591,166,172,-1,592,595,591,-1,592,597,596,-1,593,598,597,-1,594,485,598,-1,595,160,166,-1,596,599,595,-1,596,601,600,-1,597,602,601,-1,598,480,602,-1,599,149,160,-1,600,603,599,-1,600,605,604,-1,601,606,605,-1,602,469,606,-1,149,607,142,-1,603,608,607,-1,604,609,608,-1,606,609,605,-1,469,610,606,-1,142,611,136,-1,608,611,607,-1,608,613,612,-1,609,614,613,-1,464,614,610,-1,136,615,130,-1,612,615,611,-1,612,617,616,-1,613,618,617,-1,460,618,614,-1,130,619,131,-1,615,620,619,-1,616,621,620,-1,618,621,617,-1,455,622,618,-1,619,120,131,-1,620,623,619,-1,620,625,624,-1,621,626,625,-1,622,445,626,-1};
			return value;
		}


		/** Define subarrays using type double[] */
		private double[] getCoordinate_14_24_point_1()
		{
			double[] value = {1.73,-160.0,5.33,0.0,-162.5,4.92,0.0,-160.0,5.6,0.25,-165.0,4.23,0.25,-167.5,3.55,0.46,-175.0,1.43,0.0,-172.5,2.18,0.0,-175.0,1.5,5.6,-160.0,0.0,4.95,-162.5,0.0,5.33,-160.0,1.73,4.23,-165.0,0.25,3.55,-167.5,0.25,1.43,-175.0,0.46,2.18,-172.5,0.0,1.5,-175.0,0.0,18.0,-172.5,10.0,17.8,-170.0,10.0,18.2,-170.0,10.0,18.2,-167.5,10.0,17.8,-167.5,10.0,18.0,-166.0,10.0,0.0,-172.5,15.0,0.0,-166.0,15.0,0.2,-170.0,15.0,17.8,-170.0,0.2,17.8,-167.5,0.2,18.0,-166.0,0.0,18.2,-170.0,0.0,18.0,-172.5,0.0,0.2,-167.5,15.0,4.53,-160.0,3.29,0.88,-175.0,1.21,3.29,-160.0,4.53,-3.29,-160.0,4.53,-0.46,-175.0,1.43,-0.88,-175.0,1.21,-4.53,-160.0,3.29,-1.21,-175.0,0.88,-5.33,-160.0,1.73,-1.43,-175.0,0.46,-0.25,-165.0,4.23,-0.2,-167.5,15.0,-0.25,-167.5,3.55,-0.2,-170.0,15.0,-4.23,-165.0,0.25,-17.8,-167.5,0.2,-4.95,-162.5,0.0,-3.55,-167.5,0.25,-2.18,-172.5,0.0,-18.0,-172.5,0.0,-18.2,-170.0,10.0,-18.2,-170.0,0.0,-18.2,-167.5,10.0,-18.2,-167.5,0.0,-18.0,-166.0,10.0,-18.0,-166.0,0.0,-17.8,-167.5,10.0,-17.8,-170.0,10.0,-17.8,-170.0,0.2,-18.0,-172.5,10.0,-1.5,-175.0,0.0,-5.6,-160.0,0.0,-1.73,-160.0,5.33,-1.73,-160.0,-5.33,0.0,-162.5,-4.92,0.0,-160.0,-5.6,-0.25,-165.0,-4.23,-0.25,-167.5,-3.55,-0.46,-175.0,-1.43,0.0,-172.5,-2.18,0.0,-175.0,-1.5,-5.33,-160.0,-1.73,-4.23,-165.0,-0.25,-3.55,-167.5,-0.25,-1.43,-175.0,-0.46,-18.0,-172.5,-10.0,-17.8,-170.0,-10.0,-18.2,-170.0,-10.0,-18.2,-167.5,-10.0,-17.8,-167.5,-10.0,-18.0,-166.0,-10.0,0.0,-172.5,-15.0,0.0,-166.0,-15.0,-0.2,-170.0,-15.0,-17.8,-170.0,-0.2,-17.8,-167.5,-0.2,-0.2,-167.5,-15.0,-4.53,-160.0,-3.29,-0.88,-175.0,-1.21,-3.29,-160.0,-4.53,3.29,-160.0,-4.53,0.46,-175.0,-1.43,0.88,-175.0,-1.21,4.53,-160.0,-3.29,1.21,-175.0,-0.88,5.33,-160.0,-1.73,1.43,-175.0,-0.46,0.25,-165.0,-4.23,0.2,-167.5,-15.0};
			return value;
		}
		private double[] getCoordinate_14_24_point_2()
		{
			double[] value = {0.25,-167.5,-3.55,0.2,-170.0,-15.0,4.23,-165.0,-0.25,17.8,-167.5,-0.2,3.55,-167.5,-0.25,18.2,-170.0,-10.0,18.2,-167.5,-10.0,18.2,-167.5,0.0,18.0,-166.0,-10.0,17.8,-167.5,-10.0,17.8,-170.0,-10.0,17.8,-170.0,-0.2,18.0,-172.5,-10.0,1.73,-160.0,-5.33,0.0,180.0,0.0,1.6,179.6,0.0,1.52,179.6,0.5,1.29,179.6,0.94,0.94,179.6,1.29,0.5,179.6,1.52,0.0,179.6,1.6,3.42,178.0,1.1,2.91,178.0,2.11,2.11,178.0,2.91,1.1,178.0,3.42,3.6,178.0,0.0,5.6,176.0,0.0,5.33,176.0,1.73,3.29,176.0,4.53,1.73,176.0,5.33,0.0,176.0,5.6,0.0,178.0,3.6,8.3,172.0,0.0,6.71,172.0,4.88,4.53,176.0,3.29,4.88,172.0,6.71,0.0,172.0,8.3,11.2,164.0,0.0,7.9,172.0,2.56,9.06,164.0,6.58,6.58,164.0,9.06,2.56,172.0,7.9,0.0,164.0,11.2,14.0,152.0,0.0,10.65,164.0,3.46,13.31,152.0,4.33,8.23,152.0,11.33,4.33,152.0,13.31,3.46,164.0,10.65,0.0,152.0,14.0,14.27,140.0,4.64,12.14,140.0,8.82,11.33,152.0,8.23,8.82,140.0,12.14,4.64,140.0,14.27,15.0,140.0,0.0,14.93,128.0,4.85,12.7,128.0,9.23,9.23,128.0,12.7,4.85,128.0,14.93,0.0,140.0,15.0,15.7,128.0,0.0,15.07,116.0,4.89,12.82,116.0,9.32,9.32,116.0,12.82,4.89,116.0,15.07,0.0,128.0,15.7,15.85,116.0,0.0,16.0,100.0,0.0,12.94,100.0,9.4,9.4,100.0,12.94,0.0,100.0,16.0,0.0,116.0,15.85,15.22,90.0,4.94,15.22,100.0,4.94,12.94,90.0,9.4,9.4,90.0,12.94,4.94,90.0,15.22,4.94,100.0,15.22,0.0,90.0,16.0,16.0,60.0,0.0,15.22,30.0,4.94,15.22,60.0,4.94,12.94,30.0,9.4,12.94,60.0,9.4,9.4,30.0,12.94,9.4,60.0,12.94,4.94,30.0,15.22,4.94,60.0,15.22,0.0,30.0,16.0,0.0,60.0,16.0,16.0,30.0,0.0,15.22,0.0,4.94,12.94,0.0,9.4,9.4,0.0,12.94,4.94,0.0,15.22,0.0,0.0,16.0,16.0,0.0,0.0,15.22,-30.0,4.94,12.94,-30.0,9.4};
			return value;
		}
		private double[] getCoordinate_14_24_point_3()
		{
			double[] value = {9.4,-30.0,12.94,4.94,-30.0,15.22,0.0,-30.0,16.0,16.0,-30.0,0.0,15.22,-60.0,4.94,12.94,-60.0,9.4,9.4,-60.0,12.94,4.94,-60.0,15.22,0.0,-60.0,16.0,16.0,-60.0,0.0,15.22,-80.0,4.94,12.94,-80.0,9.4,9.4,-80.0,12.94,4.94,-80.0,15.22,0.0,-80.0,16.0,16.0,-80.0,0.0,15.7,-90.0,0.0,14.93,-90.0,4.85,9.23,-90.0,12.7,4.85,-90.0,14.93,0.0,-90.0,15.7,15.0,-110.0,0.0,14.27,-110.0,4.64,12.7,-90.0,9.23,8.82,-110.0,12.14,4.64,-110.0,14.27,0.0,-110.0,15.0,14.0,-120.0,0.0,13.31,-120.0,4.33,12.14,-110.0,8.82,8.23,-120.0,11.33,4.33,-120.0,13.31,0.0,-120.0,14.0,10.65,-139.0,3.46,9.06,-139.0,6.58,11.33,-120.0,8.23,6.58,-139.0,9.06,3.46,-139.0,10.65,11.2,-139.0,0.0,7.9,-150.0,2.56,4.88,-150.0,6.71,2.56,-150.0,7.9,0.0,-139.0,11.2,8.3,-150.0,0.0,6.71,-150.0,4.88,0.0,-150.0,8.3,2.56,-150.0,-7.9,0.0,-150.0,-8.3,4.88,-150.0,-6.71,6.71,-150.0,-4.88,7.9,-150.0,-2.56,3.46,-139.0,-10.65,0.0,-139.0,-11.2,6.58,-139.0,-9.06,9.06,-139.0,-6.58,10.65,-139.0,-3.46,4.33,-120.0,-13.31,0.0,-120.0,-14.0,8.23,-120.0,-11.33,11.33,-120.0,-8.23,13.31,-120.0,-4.33,4.64,-110.0,-14.27,8.82,-110.0,-12.14,12.14,-110.0,-8.82,14.27,-110.0,-4.64,4.85,-90.0,-14.93,0.0,-110.0,-15.0,9.23,-90.0,-12.7,12.7,-90.0,-9.23,14.93,-90.0,-4.85,4.94,-80.0,-15.22,0.0,-90.0,-15.7,9.4,-80.0,-12.94,12.94,-80.0,-9.4,15.22,-80.0,-4.94,4.94,-60.0,-15.22,0.0,-80.0,-16.0,9.4,-60.0,-12.94,12.94,-60.0,-9.4,15.22,-60.0,-4.94,4.94,-30.0,-15.22,0.0,-60.0,-16.0,9.4,-30.0,-12.94,12.94,-30.0,-9.4,15.22,-30.0,-4.94,4.94,0.0,-15.22,0.0,-30.0,-16.0,9.4,0.0,-12.94,12.94,0.0,-9.4,15.22,0.0,-4.94,4.94,30.0,-15.22,0.0,0.0,-16.0,9.4,30.0,-12.94,12.94,30.0,-9.4,15.22,30.0,-4.94,4.94,60.0,-15.22,0.0,30.0,-16.0,9.4,60.0,-12.94,12.94,60.0,-9.4,15.22,60.0,-4.94};
			return value;
		}
		private double[] getCoordinate_14_24_point_4()
		{
			double[] value = {4.94,100.0,-15.22,0.0,90.0,-16.0,4.94,90.0,-15.22,9.4,100.0,-12.94,9.4,90.0,-12.94,12.94,100.0,-9.4,12.94,90.0,-9.4,15.22,100.0,-4.94,15.22,90.0,-4.94,16.0,90.0,0.0,4.89,116.0,-15.07,0.0,100.0,-16.0,9.32,116.0,-12.82,12.82,116.0,-9.32,15.07,116.0,-4.89,4.85,128.0,-14.93,0.0,128.0,-15.7,9.23,128.0,-12.7,12.7,128.0,-9.23,14.93,128.0,-4.85,4.64,140.0,-14.27,0.0,140.0,-15.0,8.82,140.0,-12.14,12.14,140.0,-8.82,14.27,140.0,-4.64,4.33,152.0,-13.31,0.0,152.0,-14.0,8.23,152.0,-11.33,11.33,152.0,-8.23,13.31,152.0,-4.33,3.46,164.0,-10.65,6.58,164.0,-9.06,9.06,164.0,-6.58,10.65,164.0,-3.46,2.56,172.0,-7.9,0.0,164.0,-11.2,4.88,172.0,-6.71,6.71,172.0,-4.88,7.9,172.0,-2.56,1.73,176.0,-5.33,0.0,172.0,-8.3,3.29,176.0,-4.53,4.53,176.0,-3.29,5.33,176.0,-1.73,1.1,178.0,-3.42,0.0,176.0,-5.6,2.11,178.0,-2.91,2.91,178.0,-2.11,3.42,178.0,-1.1,0.5,179.6,-1.52,0.0,179.6,-1.6,0.94,179.6,-1.29,1.29,179.6,-0.94,1.52,179.6,-0.5,1.0,89.0,21.0,0.0,90.0,21.0,1.0,89.0,16.0,3.0,83.0,21.0,3.0,83.0,16.0,3.0,71.0,21.0,3.0,71.0,16.0,0.0,60.0,21.0,1.0,89.0,25.0,0.0,90.0,25.0,3.0,83.0,25.0,3.0,82.0,24.0,3.0,77.0,24.0,3.0,71.0,25.0,0.0,60.0,25.0,1.0,89.0,29.0,0.0,90.0,29.0,3.0,83.0,29.0,3.0,81.0,26.0,3.0,77.0,26.0,3.0,71.0,29.0,0.0,60.0,29.0,1.0,89.0,34.0,0.0,90.0,34.0,3.0,83.0,34.0,3.0,71.0,34.0,0.0,60.0,34.0,0.0,86.0,36.0,0.0,81.0,36.0,9.0,71.0,25.0,9.0,75.0,26.0,9.0,79.0,26.0,9.0,81.0,25.0,9.0,80.0,24.3,9.0,75.0,24.3,15.0,71.0,25.0,15.0,75.0,26.0,15.0,77.0,26.0,15.0,79.0,25.0,15.0,78.0,24.6,15.0,75.0,24.6,-4.94,60.0,15.22,-3.0,71.0,16.0,-3.0,83.0,16.0,-4.94,90.0,15.22,-1.0,89.0,16.0};
			return value;
		}
		private double[] getCoordinate_14_24_point_5()
		{
			double[] value = {-9.4,90.0,12.94,-9.4,60.0,12.94,-12.94,90.0,9.4,-12.94,60.0,9.4,-15.22,90.0,4.94,-15.22,60.0,4.94,-16.0,90.0,0.0,-16.0,60.0,0.0,-15.22,90.0,-4.94,-15.22,60.0,-4.94,-12.94,90.0,-9.4,-12.94,60.0,-9.4,-9.4,90.0,-12.94,-9.4,60.0,-12.94,-4.94,90.0,-15.22,-4.94,60.0,-15.22,0.0,60.0,-16.0,-15.0,77.0,26.0,-15.0,78.0,24.6,-15.0,79.0,25.0,-15.0,75.0,24.6,-15.0,75.0,26.0,-15.0,71.0,25.0,-9.0,71.0,25.0,-9.0,75.0,24.3,-9.0,80.0,24.3,-9.0,81.0,25.0,-9.0,79.0,26.0,-9.0,75.0,26.0,-3.0,71.0,25.0,-3.0,77.0,24.0,-3.0,82.0,24.0,-3.0,83.0,25.0,-3.0,81.0,26.0,-3.0,77.0,26.0,-3.0,71.0,34.0,-3.0,83.0,34.0,-1.0,89.0,34.0,-3.0,71.0,29.0,-3.0,83.0,29.0,-1.0,89.0,29.0,-1.0,89.0,25.0,-3.0,71.0,21.0,-3.0,83.0,21.0,-1.0,89.0,21.0,-1.6,179.6,0.0,-1.52,179.6,-0.5,-1.29,179.6,-0.94,-0.94,179.6,-1.29,-0.5,179.6,-1.52,-3.42,178.0,-1.1,-2.91,178.0,-2.11,-2.11,178.0,-2.91,-1.1,178.0,-3.42,-3.6,178.0,0.0,-5.6,176.0,0.0,-5.33,176.0,-1.73,-3.29,176.0,-4.53,-1.73,176.0,-5.33,0.0,178.0,-3.6,-8.3,172.0,0.0,-6.71,172.0,-4.88,-4.53,176.0,-3.29,-4.88,172.0,-6.71,-11.2,164.0,0.0,-7.9,172.0,-2.56,-9.06,164.0,-6.58,-6.58,164.0,-9.06,-2.56,172.0,-7.9,-14.0,152.0,0.0,-10.65,164.0,-3.46,-13.31,152.0,-4.33,-8.23,152.0,-11.33,-4.33,152.0,-13.31,-3.46,164.0,-10.65,-14.27,140.0,-4.64,-12.14,140.0,-8.82,-11.33,152.0,-8.23,-8.82,140.0,-12.14,-4.64,140.0,-14.27,-15.0,140.0,0.0,-14.93,128.0,-4.85,-12.7,128.0,-9.23,-9.23,128.0,-12.7,-4.85,128.0,-14.93,-15.7,128.0,0.0,-15.07,116.0,-4.89,-12.82,116.0,-9.32,-9.32,116.0,-12.82,-4.89,116.0,-15.07,-15.85,116.0,0.0,-16.0,100.0,0.0,-12.94,100.0,-9.4,-9.4,100.0,-12.94,0.0,116.0,-15.85,-15.22,100.0,-4.94,-4.94,100.0,-15.22,-15.22,30.0,-4.94,-12.94,30.0,-9.4,-9.4,30.0,-12.94};
			return value;
		}
		private double[] getCoordinate_14_24_point_6()
		{
			double[] value = {-4.94,30.0,-15.22,-16.0,30.0,0.0,-15.22,0.0,-4.94,-12.94,0.0,-9.4,-9.4,0.0,-12.94,-4.94,0.0,-15.22,-16.0,0.0,0.0,-15.22,-30.0,-4.94,-12.94,-30.0,-9.4,-9.4,-30.0,-12.94,-4.94,-30.0,-15.22,-16.0,-30.0,0.0,-15.22,-60.0,-4.94,-12.94,-60.0,-9.4,-9.4,-60.0,-12.94,-4.94,-60.0,-15.22,-16.0,-60.0,0.0,-15.22,-80.0,-4.94,-12.94,-80.0,-9.4,-9.4,-80.0,-12.94,-4.94,-80.0,-15.22,-16.0,-80.0,0.0,-15.7,-90.0,0.0,-14.93,-90.0,-4.85,-9.23,-90.0,-12.7,-4.85,-90.0,-14.93,-15.0,-110.0,0.0,-14.27,-110.0,-4.64,-12.7,-90.0,-9.23,-8.82,-110.0,-12.14,-4.64,-110.0,-14.27,-14.0,-120.0,0.0,-13.31,-120.0,-4.33,-12.14,-110.0,-8.82,-8.23,-120.0,-11.33,-4.33,-120.0,-13.31,-10.65,-139.0,-3.46,-9.06,-139.0,-6.58,-11.33,-120.0,-8.23,-6.58,-139.0,-9.06,-3.46,-139.0,-10.65,-11.2,-139.0,0.0,-7.9,-150.0,-2.56,-4.88,-150.0,-6.71,-2.56,-150.0,-7.9,-8.3,-150.0,0.0,-6.71,-150.0,-4.88,-2.56,-150.0,7.9,-4.88,-150.0,6.71,-6.71,-150.0,4.88,-7.9,-150.0,2.56,-3.46,-139.0,10.65,-6.58,-139.0,9.06,-9.06,-139.0,6.58,-10.65,-139.0,3.46,-4.33,-120.0,13.31,-8.23,-120.0,11.33,-11.33,-120.0,8.23,-13.31,-120.0,4.33,-4.64,-110.0,14.27,-8.82,-110.0,12.14,-12.14,-110.0,8.82,-14.27,-110.0,4.64,-4.85,-90.0,14.93,-9.23,-90.0,12.7,-12.7,-90.0,9.23,-14.93,-90.0,4.85,-4.94,-80.0,15.22,-9.4,-80.0,12.94,-12.94,-80.0,9.4,-15.22,-80.0,4.94,-4.94,-60.0,15.22,-9.4,-60.0,12.94,-12.94,-60.0,9.4,-15.22,-60.0,4.94,-4.94,-30.0,15.22,-9.4,-30.0,12.94,-12.94,-30.0,9.4,-15.22,-30.0,4.94,-4.94,0.0,15.22,-9.4,0.0,12.94,-12.94,0.0,9.4,-15.22,0.0,4.94,-4.94,30.0,15.22,-9.4,30.0,12.94,-12.94,30.0,9.4,-15.22,30.0,4.94,-4.94,100.0,15.22,-9.4,100.0,12.94,-12.94,100.0,9.4,-15.22,100.0,4.94,-4.89,116.0,15.07,-9.32,116.0,12.82,-12.82,116.0,9.32,-15.07,116.0,4.89,-4.85,128.0,14.93,-9.23,128.0,12.7,-12.7,128.0,9.23,-14.93,128.0,4.85,-4.64,140.0,14.27};
			return value;
		}
		private double[] getCoordinate_14_24_point_7()
		{
			double[] value = {-8.82,140.0,12.14,-12.14,140.0,8.82,-14.27,140.0,4.64,-4.33,152.0,13.31,-8.23,152.0,11.33,-11.33,152.0,8.23,-13.31,152.0,4.33,-3.46,164.0,10.65,-6.58,164.0,9.06,-9.06,164.0,6.58,-10.65,164.0,3.46,-2.56,172.0,7.9,-4.88,172.0,6.71,-6.71,172.0,4.88,-7.9,172.0,2.56,-1.73,176.0,5.33,-3.29,176.0,4.53,-4.53,176.0,3.29,-5.33,176.0,1.73,-1.1,178.0,3.42,-2.11,178.0,2.91,-2.91,178.0,2.11,-3.42,178.0,1.1,-0.5,179.6,1.52,-0.94,179.6,1.29,-1.29,179.6,0.94,-1.52,179.6,0.5,1.21,-175.0,0.88,-1.21,-175.0,-0.88};
			return value;
		}

		/** Large attribute array: IndexedFaceSet coordIndex field, scene-graph level=13, element #24, 4944 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 getIndexedFaceSet_13_24_coordIndex()
		{
			MFInt32 IndexedFaceSet_13_24_coordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getIndexedFaceSet_13_24_coordIndex_1()))
				.append(new MFInt32(getIndexedFaceSet_13_24_coordIndex_2()))
				.append(new MFInt32(getIndexedFaceSet_13_24_coordIndex_3()))
				.append(new MFInt32(getIndexedFaceSet_13_24_coordIndex_4()))
				.append(new MFInt32(getIndexedFaceSet_13_24_coordIndex_5()));
			return IndexedFaceSet_13_24_coordIndex;
		}
		/** Large attribute array: Coordinate point field, scene-graph level=14, element #24, 1887 total numbers made up of 629 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 getCoordinate_14_24_point()
		{
			MFVec3f Coordinate_14_24_point = new MFVec3f()/*2.finalize*/
				.append(new MFVec3f(getCoordinate_14_24_point_1()))
				.append(new MFVec3f(getCoordinate_14_24_point_2()))
				.append(new MFVec3f(getCoordinate_14_24_point_3()))
				.append(new MFVec3f(getCoordinate_14_24_point_4()))
				.append(new MFVec3f(getCoordinate_14_24_point_5()))
				.append(new MFVec3f(getCoordinate_14_24_point_6()))
				.append(new MFVec3f(getCoordinate_14_24_point_7()));
			return Coordinate_14_24_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 LosAngelesClass688 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 LosAngelesClass688().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: \"Savage.Submarines.SsnLosAngelesUnitedStates.LosAngelesClass688\" 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("Savage.Submarines.SsnLosAngelesUnitedStates.LosAngelesClass688 self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

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