package Savage.Locations.MontereyBayCalifornia;

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.Navigation.*;
import org.web3d.x3d.jsail.Rendering.*;
import org.web3d.x3d.jsail.Shape.*;
import org.web3d.x3d.jsail.Texturing.*;

// Javadoc metadata annotations follow, see below for X3DJSAIL Java source code.
/**
 * <p> Simple view of Monterey Bay shoreline and canyon using merged overhead imagery. </p>
 <p> Related links: Catalog page <a href="../../../../Locations/MontereyBayCalifornia/MontereyBayAreaIndex.html" target="_blank">MontereyBayArea</a>,  source <a href="../../../../Locations/MontereyBayCalifornia/MontereyBayArea.java">MontereyBayArea.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="../../../../Locations/MontereyBayCalifornia/MontereyBayArea.x3d">MontereyBayArea.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> description </i> </td>
			<td> Simple view of Monterey Bay shoreline and canyon using merged overhead imagery. </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> creator </i> </td>
			<td> Jeff Weekley </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> created </i> </td>
			<td> 1 January 2007 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> translated </i> </td>
			<td> 8 March 2007 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> modified </i> </td>
			<td> 20 October 2019 </td>
		</tr>
		<tr style="color:burntorange">
			<td style="text-align:right; vertical-align: text-top;"> <i> warning </i> </td>
			<td> not geospatially referenced </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> Image </i> </td>
			<td> <a href="../../../../Locations/MontereyBayCalifornia/MontereyPhotoMerge.gif">MontereyPhotoMerge.gif</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> subject </i> </td>
			<td> Monterey Bay, Monterey Canyon </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/Locations/MontereyBayCalifornia/MontereyBayArea.x3d" target="_blank">https://www.web3d.org/x3d/content/examples/Savage/Locations/MontereyBayCalifornia/MontereyBayArea.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="../../../../Locations/MontereyBayCalifornia/../../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 Jeff Weekley
 */

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

	/** Create and initialize the X3D model for this object. */
	public final void initialize()
	{
            try { // catch-all
  x3dModel = new X3D().setProfile(X3D.PROFILE_INTERCHANGE).setVersion(X3D.VERSION_3_1)
  .setHead(new head()
    .addMeta(new meta().setName(meta.NAME_TITLE      ).setContent("MontereyBayArea.x3d"))
    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("Simple view of Monterey Bay shoreline and canyon using merged overhead imagery."))
    .addMeta(new meta().setName(meta.NAME_CREATOR    ).setContent("Jeff Weekley"))
    .addMeta(new meta().setName(meta.NAME_CREATED    ).setContent("1 January 2007"))
    .addMeta(new meta().setName(meta.NAME_TRANSLATED ).setContent("8 March 2007"))
    .addMeta(new meta().setName(meta.NAME_MODIFIED   ).setContent("20 October 2019"))
    .addMeta(new meta().setName(meta.NAME_WARNING    ).setContent("not geospatially referenced"))
    .addMeta(new meta().setName(meta.NAME_IMAGE      ).setContent("MontereyPhotoMerge.gif"))
    .addMeta(new meta().setName(meta.NAME_SUBJECT    ).setContent("Monterey Bay, Monterey Canyon"))
    .addMeta(new meta().setName(meta.NAME_IDENTIFIER ).setContent("https://www.web3d.org/x3d/content/examples/Savage/Locations/MontereyBayCalifornia/MontereyBayArea.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("MontereyBayArea.x3d"))
    .addChild(new NavigationInfo().setSpeed(100))
    .addChild(new Transform("MontereyBay").setScale(150.0,100.0,150.0)
      .addChild(new Shape("lambert2SG")
        .setAppearance(new Appearance()
          .setMaterial(new Material("material0_mat").setAmbientIntensity(0.018).setDiffuseColor(1.0,1.0,1.0).setShininess(0.0))
          .setTexture(new ImageTexture("MontereyPhotoMerge").setUrl(new String[] {"MontereyPhotoMerge.png","MontereyPhotoMerge.jpg","MontereyPhotoMerge.gif","https://www.web3d.org/x3d/content/examples/Savage/Locations/MontereyBayCalifornia/MontereyPhotoMerge.png","https://www.web3d.org/x3d/content/examples/Savage/Locations/MontereyBayCalifornia/MontereyPhotoMerge.jpg","https://www.web3d.org/x3d/content/examples/Savage/Locations/MontereyBayCalifornia/MontereyPhotoMerge.gif"})))
        .setGeometry(new IndexedFaceSet().setCreaseAngle(3.14).setCoordIndex(getIndexedFaceSet_5_19_coordIndex()).setTexCoordIndex(getIndexedFaceSet_5_19_texCoordIndex())
          .setCoord(new Coordinate().setPoint(getCoordinate_6_19_point()))
          .setTexCoord(new TextureCoordinate().setPoint(getTextureCoordinate_6_20_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_5_19_coordIndex_1()
		{
			int[] value = {0,1,2,-1,3,4,5,-1,6,7,8,-1,9,10,11,-1,12,13,14,-1,15,16,12,-1,17,18,19,-1,20,15,17,-1,21,20,19,-1,22,19,23,-1,24,25,14,-1,23,18,25,-1,26,23,24,-1,27,24,28,-1,13,9,11,-1,29,30,11,-1,28,14,30,-1,31,28,29,-1,32,29,33,-1,34,35,36,-1,37,38,39,-1,40,41,42,-1,43,44,45,-1,42,41,44,-1,13,42,43,-1,9,43,46,-1,38,47,48,-1,41,39,49,-1,45,44,49,-1,47,6,48,-1,49,48,8,-1,50,8,51,-1,52,53,54,-1,55,56,57,-1,34,10,56,-1,35,34,55,-1,55,58,59,-1,57,53,52,-1,60,61,52,-1,59,58,61,-1,62,63,60,-1,64,59,63,-1,65,64,62,-1,66,62,67,-1,68,69,70,-1,67,60,69,-1,71,67,68,-1,72,68,73,-1,74,75,76,-1,70,52,77,-1,73,70,78,-1,79,76,75,-1,80,78,76,-1,81,80,79,-1,82,79,83,-1,84,85,86,-1,87,57,56,-1,88,89,90,-1,91,92,45,-1,7,88,51,-1,93,51,90,-1,94,90,95,-1,96,92,91,-1,89,84,95,-1,91,95,86,-1,97,86,98,-1,99,100,101,-1,102,103,104,-1,57,87,105,-1,106,96,102,-1,87,106,104,-1,105,104,107,-1,108,109,110,-1,111,112,113,-1,53,114,115,-1,116,54,115,-1,113,112,109,-1,115,113,108,-1,117,108,118,-1,107,103,100,-1,111,107,99,-1,109,112,99,-1,119,120,121,-1,103,102,122,-1,85,119,98,-1,123,98,121,-1,122,121,124,-1,125,126,127,-1,128,129,126,-1,103,128,125,-1,100,125,130,-1,120,3,124,-1,129,124,5,-1,126,5,131,-1,132,133,134,-1,135,136,137,-1,138,139,140,-1,37,138,141,-1,38,141,142,-1,143,135,144,-1,141,144,137,-1,142,137,145,-1,146,147,148,-1,149,150,151,-1,152,146,149,-1,139,152,151,-1,140,151,153,-1,154,134,133,-1,153,150,134,-1,143,153,154,-1,135,154,155,-1,156,157,158,-1,159,160,161,-1,162,163,164,-1,165,166,163,-1,167,168,162,-1,169,165,168,-1,7,169,167,-1,88,167,170,-1,171,172,173,-1,170,162,172,-1,89,170,171,-1,84,171,174,-1,145,136,175,-1,166,145,161,-1,163,161,160,-1,176,177,178,-1,164,179,180,-1,181,182,183,-1,174,173,184,-1,85,174,185,-1,120,119,185,-1,186,184,181,-1,185,186,183,-1,187,183,188,-1,189,190,191,-1,188,182,190,-1,120,192,189,-1,3,189,193,-1,180,179,177,-1,182,180,176,-1,190,176,194,-1,195,196,197,-1,164,160,198,-1,159,199,195,-1,160,159,197,-1,198,197,200,-1,201,158,157,-1,202,203,158,-1,179,202,201,-1,177,201,204,-1,205,206,207,-1,208,207,206,-1,155,133,207,-1,136,155,208,-1,175,208,209,-1,210,2,1,-1,209,206,2,-1,199,209,210,-1,196,210,211,-1,206,205,0,-1,2,206,0,-1,4,131,5,-1,7,51,8,-1,10,34,11,-1,25,18,12,-1,12,14,25,-1,12,18,17,-1,17,15,12,-1,18,23,19,-1,17,19,20,-1,19,22,21,-1,23,26,22,-1,14,28,24,-1,25,24,23,-1,24,27,26,-1,28,31,27,-1,30,14,13,-1,13,11,30,-1,11,33,29,-1,30,29,28,-1,29,32,31,-1,33,36,32,-1,33,11,34,-1,34,36,33,-1,41,40,37,-1,39,41,37,-1,12,16,40,-1,42,12,40,-1,12,42,13,-1,45,46,43,-1,44,43,42,-1,43,9,13,-1,46,10,9,-1,49,39,38,-1,48,49,38,-1,49,44,41,-1,50,93,45,-1,45,49,50,-1,6,8,48,-1,8,50,49,-1,51,93,50,-1,54,116,74,-1,54,74,77,-1,54,77,52,-1,57,58,55,-1,56,55,34,-1,55,212,35,-1,64,65,212,-1,59,64,55,-1,212,55,64,-1,61,58,57,-1,57,52,61,-1,52,70,69,-1,69,60,52,-1,61,60,63,-1,63,59,61,-1,60,67,62,-1,63,62,64,-1,62,66,65,-1,67,71,66,-1,70,73,68,-1,69,68,67,-1,68,72,71,-1,73,213,72,-1,78,77,74,-1,76,78,74,-1,77,78,70,-1,80,81,213,-1,78,213,73,-1,213,78,80,-1,75,83,79,-1,76,79,80,-1,79,82,81,-1,83,214,82,-1,85,98,86,-1,56,10,46,-1,92,96,106,-1,56,106,87,-1,106,56,92,-1,46,45,92,-1,92,56,46,-1,89,95,90,-1,45,93,94,-1,94,91,45,-1,88,90,51,-1,90,94,93,-1,95,91,94,-1,97,123,96,-1,96,91,97,-1};
			return value;
		}
		private int[] getIndexedFaceSet_5_19_coordIndex_2()
		{
			int[] value = {84,86,95,-1,86,97,91,-1,98,123,97,-1,215,101,100,-1,103,107,104,-1,105,111,114,-1,114,53,57,-1,57,105,114,-1,102,104,106,-1,104,105,87,-1,107,111,105,-1,110,118,108,-1,115,114,111,-1,113,115,111,-1,115,54,53,-1,117,216,116,-1,116,115,117,-1,109,108,113,-1,108,117,115,-1,118,216,117,-1,100,99,107,-1,99,112,111,-1,99,101,110,-1,99,110,109,-1,120,124,121,-1,96,123,122,-1,122,129,128,-1,128,103,122,-1,122,102,96,-1,119,121,98,-1,121,122,123,-1,124,129,122,-1,127,130,125,-1,126,125,128,-1,125,100,103,-1,130,215,100,-1,3,5,124,-1,5,126,129,-1,131,127,126,-1,150,148,132,-1,134,150,132,-1,136,145,137,-1,144,141,138,-1,140,144,138,-1,144,140,143,-1,141,38,37,-1,169,7,6,-1,142,166,165,-1,142,165,47,-1,142,47,38,-1,6,47,165,-1,6,165,169,-1,135,137,144,-1,137,142,141,-1,145,166,142,-1,148,150,149,-1,149,146,148,-1,150,153,151,-1,149,151,152,-1,151,140,139,-1,153,143,140,-1,133,155,154,-1,134,154,153,-1,154,135,143,-1,155,136,135,-1,158,203,200,-1,200,196,156,-1,158,200,156,-1,161,175,199,-1,161,199,159,-1,164,173,172,-1,172,162,164,-1,163,162,168,-1,168,165,163,-1,162,170,167,-1,168,167,169,-1,167,88,7,-1,170,89,88,-1,173,174,171,-1,172,171,170,-1,171,84,89,-1,174,85,84,-1,175,161,145,-1,161,163,166,-1,160,164,163,-1,178,194,176,-1,180,182,181,-1,184,173,164,-1,180,184,164,-1,181,184,180,-1,182,188,183,-1,186,185,174,-1,174,184,186,-1,185,119,85,-1,187,192,120,-1,120,185,187,-1,181,183,186,-1,183,187,185,-1,188,192,187,-1,191,193,189,-1,190,189,192,-1,190,192,188,-1,189,3,120,-1,193,4,3,-1,177,176,180,-1,176,190,182,-1,194,191,190,-1,196,200,197,-1,198,203,202,-1,202,179,164,-1,164,198,202,-1,195,197,159,-1,197,198,160,-1,200,203,198,-1,157,204,201,-1,158,201,202,-1,201,177,179,-1,204,178,177,-1,133,132,205,-1,207,133,205,-1,206,209,208,-1,207,208,155,-1,208,175,136,-1,209,199,175,-1,1,211,210,-1,2,210,209,-1,210,196,195,-1,195,199,210,-1,211,156,196,-1};
			return value;
		}


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


		/** Define subarrays using type double[] */
		private double[] getCoordinate_6_19_point_1()
		{
			double[] value = {150.0,0.0,-111.42944,105.40018,-2.68503,-111.42944,105.40018,-6.24714,-75.56763,-22.80069,-64.2244,-93.15956,-22.80069,-60.32548,-111.42944,-32.83292,-52.9618,-93.13241,-22.80069,0.33263,10.4065,-22.80069,-4.28372,-2.40951,-32.83292,3.67563,10.43601,-106.12448,15.87071,23.22338,-106.12448,14.37069,-2.41587,-128.06224,18.72408,23.22338,-106.12448,18.82104,74.43131,-106.12448,16.8809,48.86263,-128.06224,22.33596,48.86263,-128.06224,28.68122,100.0,-106.12448,25.04456,100.0,-128.06224,29.14449,87.21566,-128.06224,27.60487,74.43131,-139.03113,32.11784,87.21566,-139.03113,29.25853,100.0,-150.0,29.34239,100.0,-150.0,32.44064,87.21566,-139.03113,31.15279,74.43131,-139.03113,27.99901,61.64697,-128.06224,25.01715,61.64697,-150.0,31.20427,74.43131,-150.0,27.45954,61.64697,-139.03113,24.29193,48.86263,-139.03113,21.26367,36.043,-128.06224,20.25924,36.043,-150.0,23.03249,48.86263,-150.0,19.31787,36.043,-139.03113,18.94881,23.22338,-128.06224,16.3997,-2.41587,-150.0,12.61057,-2.41587,-150.0,16.43672,23.22338,-22.80069,22.52525,100.0,-22.80069,8.31691,48.86263,-42.86516,9.23745,48.86263,-62.92963,21.70941,100.0,-62.92963,12.30405,48.86263,-84.52705,14.63663,48.86263,-84.52705,11.26321,23.22338,-62.92963,7.62818,23.22652,-62.92963,3.41676,-2.3923,-84.52705,8.12691,-2.41587,-22.80069,3.60674,23.22423,-32.83292,5.36617,23.23335,-42.86516,5.9891,23.24683,-42.86516,4.54152,10.47958,-32.83292,1.59983,-2.34109,-128.06224,7.98358,-75.56763,-106.12448,4.93702,-75.56763,-106.12448,3.72523,-93.16209,-128.06224,14.03209,-26.77556,-106.12448,11.84875,-26.77556,-106.12448,8.46594,-51.13525,-128.06224,10.97357,-51.13525,-139.03113,10.22297,-51.13525,-139.03113,8.828,-63.35144,-128.06224,9.22477,-63.35144,-144.51556,9.38098,-57.24334,-139.03113,9.47885,-57.24334,-144.51556,9.74749,-51.13525,-150.0,10.84528,-51.13525,-150.0,11.1832,-57.24334,-144.51556,9.11563,-63.35144,-144.51556,9.03451,-69.45953,-139.03113,8.38308,-69.45953,-139.03113,8.25677,-75.56763,-150.0,11.64403,-63.35144,-150.0,12.21773,-69.45953,-144.51556,9.22068,-75.56763,-128.06224,9.84965,-111.42944,-139.03113,13.19087,-111.42944,-139.03113,10.91611,-99.27018,-128.06224,7.95639,-93.16209,-139.03113,9.41061,-93.16209,-144.51556,12.21351,-99.27018,-144.51556,10.72712,-93.16209,-150.0,14.51557,-93.16209,-150.0,15.44028,-99.27018,-144.51556,14.29944,-111.42944,-22.80069,-36.62036,-38.93605,-22.80069,-44.45915,-51.11613,-32.83292,-14.18962,-38.72793,-84.52705,3.8907,-51.13525,-22.80069,-14.94406,-14.58442,-22.80069,-21.9078,-26.75938,-32.83292,-1.01303,-14.46297,-42.86516,-1.13518,-26.32836,-62.92963,0.82945,-26.71561,-42.86516,3.00096,-2.24007,-42.86516,1.24522,-14.28362,-32.83292,-4.57218,-26.58534,-62.92963,-3.62488,-51.0644,-42.86516,-4.49519,-38.42061,-32.83292,-27.70577,-50.91044,-73.72834,-12.08171,-93.16207};
			return value;
		}
		private double[] getCoordinate_6_19_point_2()
		{
			double[] value = {-62.92963,-30.72745,-93.15273,-73.72834,-23.1519,-111.42944,-62.92963,-7.86243,-63.29681,-62.92963,-21.39131,-75.53678,-73.72834,-1.10236,-63.35137,-84.52705,2.41514,-63.35144,-73.72834,0.98102,-51.13517,-73.72834,-5.09423,-75.56759,-89.92641,-1.82263,-99.27018,-84.52705,-5.71944,-99.27018,-84.52705,-8.58222,-111.42944,-84.52705,0.1603,-75.56763,-84.52705,-3.34757,-93.16209,-89.92641,-0.63621,-93.16209,-95.32577,2.69707,-75.56763,-95.32577,1.27829,-93.16209,-106.12448,3.25875,-111.42944,-95.32577,0.72259,-99.27018,-89.92641,-3.10053,-111.42944,-22.80069,-53.08821,-63.33669,-22.80069,-59.59127,-75.5593,-32.83292,-35.72144,-63.1781,-42.86516,-22.58331,-62.94392,-42.86516,-16.28297,-50.60671,-32.83292,-45.28265,-75.46975,-52.8974,-42.16319,-93.11228,-42.86516,-45.48888,-93.09232,-42.86516,-55.98507,-111.42944,-52.8974,-26.44189,-75.40337,-42.86516,-30.4102,-75.33752,-52.8974,-50.79551,-111.42944,-32.83292,-58.52624,-111.42944,150.0,11.61455,-2.41587,105.40018,9.48005,-2.41587,105.40018,14.24104,23.22338,63.06142,6.48843,23.47041,63.06142,0.57965,-2.0883,41.61838,4.03802,25.05069,20.17534,22.52525,100.0,63.06142,23.63958,100.0,63.06142,15.54269,74.4423,20.17534,8.01801,48.86979,20.17534,2.67312,23.2435,63.06142,9.83423,48.95054,41.61838,9.03696,49.51288,41.61838,-8.38027,0.0072,105.40018,21.60059,100.0,150.0,23.08274,100.0,150.0,18.24096,48.86263,105.40018,18.59973,74.43131,105.40018,17.31404,48.86263,84.2308,17.35875,74.43131,84.2308,21.30852,100.0,84.2308,14.79635,48.86263,84.2308,11.54087,23.22338,84.2308,6.38905,-2.41587,63.06142,-39.59958,-111.42944,41.61838,-47.909,-111.42944,41.61838,-52.56603,-93.15322,52.3399,-36.22333,-50.6918,41.61838,-40.75661,-50.56788,41.61838,-25.09615,-25.11002,-1.31268,-30.32264,-26.77556,20.17534,-26.7266,-26.75721,20.17534,-54.55927,-51.129,-1.31268,-8.02913,-2.41587,20.17534,-6.00524,-2.38918,-12.05668,-17.72008,-14.59571,-1.31268,-15.06426,-14.59571,-12.05668,-9.36021,-2.41587,-12.05668,-34.28587,-26.77556,-12.05668,-43.83516,-38.9554,-1.31268,-39.07941,-38.9554,-1.31268,-47.88947,-51.13525,-12.05668,-52.42542,-51.13525,63.06142,-14.47271,-26.5504,9.43133,-67.12315,-93.16209,20.17534,-64.16691,-93.16199,20.17534,-66.04249,-111.42944,20.17534,-59.06237,-75.56684,9.43133,-61.44237,-75.56763,-1.31268,-59.86783,-69.45953,-1.31268,-63.12039,-75.56763,-6.68468,-61.74474,-69.45953,-1.31268,-56.17615,-63.35144,-12.05668,-59.25939,-63.35144,-6.68468,-58.631,-63.35144,-12.05668,-61.95382,-69.45953,-6.68468,-64.38832,-75.56763,-12.05668,-67.11935,-93.16209,-1.31268,-67.89417,-93.16209,-1.31268,-69.66943,-111.42944,-12.05668,-64.16348,-75.56763,-12.05668,-68.10871,-111.42944,9.43133,-69.29426,-111.42944,63.06142,-32.15695,-63.31908,63.06142,-34.94442,-75.55804,52.3399,-41.12686,-63.16436,41.61838,-47.53106,-63.11208,63.06142,-28.38278,-51.05855};
			return value;
		}
		private double[] getCoordinate_6_19_point_3()
		{
			double[] value = {52.3399,-44.05003,-75.51219,30.89686,-58.67361,-93.15926,30.89686,-55.40272,-75.54501,41.61838,-51.95379,-75.4967,30.89686,-58.24783,-111.42944,150.0,4.31782,-51.13525,105.40018,0.14526,-51.13525,105.40018,4.3708,-26.77556,84.2308,-0.7414,-26.77556,84.2308,-13.29478,-51.13525,84.2308,-24.17213,-75.56763,84.2308,-27.83414,-111.42944,-150.0,10.78757,-26.77556,-150.0,12.89425,-75.56763,-150.0,16.42764,-111.42944,-62.92963,-43.6665,-111.42944,-95.32577,0.29876,-111.42944};
			return value;
		}


		/** Define subarrays using type double[] */
		private double[] getTextureCoordinate_6_20_point_1()
		{
			double[] value = {1.0,1.0,0.851,1.0,0.851,0.878,0.424,0.939,0.424,1.0,0.391,0.939,0.424,0.448,0.424,0.512,0.391,0.448,0.146,0.384,0.146,0.512,0.073,0.384,0.146,0.128,0.146,0.256,0.073,0.256,0.073,0.0,0.146,0.0,0.073,0.064,0.073,0.128,0.037,0.064,0.037,0.0,0.0,0.0,0.0,0.064,0.037,0.128,0.037,0.192,0.073,0.192,0.0,0.128,0.0,0.192,0.037,0.256,0.037,0.32,0.073,0.32,0.0,0.256,0.0,0.32,0.037,0.384,0.073,0.512,0.0,0.512,0.0,0.384,0.424,0.0,0.424,0.256,0.357,0.256,0.29,0.0,0.29,0.256,0.218,0.256,0.218,0.384,0.29,0.384,0.29,0.512,0.218,0.512,0.424,0.384,0.391,0.384,0.357,0.384,0.357,0.448,0.391,0.512,0.073,0.878,0.146,0.878,0.146,0.939,0.073,0.634,0.146,0.634,0.146,0.756,0.073,0.756,0.037,0.756,0.037,0.817,0.073,0.817,0.018,0.786,0.037,0.786,0.018,0.756,0.0,0.756,0.0,0.786,0.018,0.817,0.018,0.847,0.037,0.847,0.037,0.878,0.0,0.817,0.0,0.847,0.018,0.878,0.073,1.0,0.037,1.0,0.037,0.969,0.073,0.939,0.037,0.939,0.018,0.969,0.018,0.939,0.0,0.939,0.0,0.969,0.018,1.0,0.424,0.695,0.424,0.756,0.391,0.695,0.218,0.756,0.424,0.573,0.424,0.634,0.391,0.573,0.357,0.634,0.29,0.634,0.357,0.512,0.357,0.573,0.391,0.634,0.29,0.756,0.357,0.695,0.391,0.756,0.254,0.939};
			return value;
		}
		private double[] getTextureCoordinate_6_20_point_2()
		{
			double[] value = {0.29,0.939,0.254,1.0,0.29,0.817,0.29,0.878,0.254,0.817,0.218,0.817,0.254,0.756,0.254,0.878,0.2,0.969,0.218,0.969,0.218,1.0,0.218,0.878,0.218,0.939,0.2,0.939,0.182,0.878,0.182,0.939,0.146,1.0,0.182,0.969,0.2,1.0,0.424,0.817,0.424,0.878,0.391,0.817,0.357,0.817,0.357,0.756,0.391,0.878,0.324,0.939,0.357,0.939,0.357,1.0,0.324,0.878,0.357,0.878,0.324,1.0,0.391,1.0,1.0,0.512,0.851,0.512,0.851,0.384,0.71,0.384,0.71,0.512,0.639,0.384,0.567,0.0,0.71,0.0,0.71,0.128,0.567,0.256,0.567,0.384,0.71,0.256,0.639,0.256,0.639,0.512,0.851,0.0,1.0,0.0,1.0,0.256,0.851,0.128,0.851,0.256,0.781,0.128,0.781,0.0,0.781,0.256,0.781,0.384,0.781,0.512,0.71,1.0,0.639,1.0,0.639,0.939,0.674,0.756,0.639,0.756,0.639,0.634,0.496,0.634,0.567,0.634,0.567,0.756,0.496,0.512,0.567,0.512,0.46,0.573,0.496,0.573,0.46,0.512,0.46,0.634,0.46,0.695,0.496,0.695,0.496,0.756,0.46,0.756,0.71,0.634,0.531,0.939,0.567,0.939,0.567,1.0,0.567,0.878,0.531,0.878,0.496,0.847,0.496,0.878,0.478,0.847,0.496,0.817,0.46,0.817,0.478,0.817,0.46,0.847,0.478,0.878,0.46,0.939,0.496,0.939,0.496,1.0,0.46,0.878,0.46,1.0,0.531,1.0,0.71,0.817,0.71,0.878,0.674,0.817,0.639,0.817,0.71,0.756};
			return value;
		}
		private double[] getTextureCoordinate_6_20_point_3()
		{
			double[] value = {0.674,0.878,0.603,0.939,0.603,0.878,0.639,0.878,0.603,1.0,1.0,0.756,0.851,0.756,0.851,0.634,0.781,0.634,0.781,0.756,0.781,0.878,0.781,1.0,0.0,0.634,0.0,0.878,0.0,1.0,0.29,1.0,0.182,1.0};
			return value;
		}

		/** Large attribute array: IndexedFaceSet coordIndex field, scene-graph level=5, element #19, 1516 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_5_19_coordIndex()
		{
			MFInt32 IndexedFaceSet_5_19_coordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getIndexedFaceSet_5_19_coordIndex_1()))
				.append(new MFInt32(getIndexedFaceSet_5_19_coordIndex_2()));
			return IndexedFaceSet_5_19_coordIndex;
		}
		/** Large attribute array: IndexedFaceSet texCoordIndex field, scene-graph level=5, element #19, 1516 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_5_19_texCoordIndex()
		{
			MFInt32 IndexedFaceSet_5_19_texCoordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getIndexedFaceSet_5_19_texCoordIndex_1()))
				.append(new MFInt32(getIndexedFaceSet_5_19_texCoordIndex_2()));
			return IndexedFaceSet_5_19_texCoordIndex;
		}
		/** Large attribute array: Coordinate point field, scene-graph level=6, element #19, 651 total numbers made up of 217 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_6_19_point()
		{
			MFVec3f Coordinate_6_19_point = new MFVec3f()/*2.finalize*/
				.append(new MFVec3f(getCoordinate_6_19_point_1()))
				.append(new MFVec3f(getCoordinate_6_19_point_2()))
				.append(new MFVec3f(getCoordinate_6_19_point_3()));
			return Coordinate_6_19_point;
		}
		/** Large attribute array: TextureCoordinate point field, scene-graph level=6, element #20, 434 total numbers made up of 217 2-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 MFVec2f getTextureCoordinate_6_20_point()
		{
			MFVec2f TextureCoordinate_6_20_point = new MFVec2f()/*2.finalize*/
				.append(new MFVec2f(getTextureCoordinate_6_20_point_1()))
				.append(new MFVec2f(getTextureCoordinate_6_20_point_2()))
				.append(new MFVec2f(getTextureCoordinate_6_20_point_3()));
			return TextureCoordinate_6_20_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 MontereyBayArea 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 MontereyBayArea().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.Locations.MontereyBayCalifornia.MontereyBayArea\" 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.Locations.MontereyBayCalifornia.MontereyBayArea self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

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