<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package X3dForAdvancedModeling.GeometricShapes;

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

// Javadoc metadata annotations follow, see below for X3DJSAIL Java source code.
/**
 * &lt;p&gt; Icosahedron is a polyhedron with twenty faces, subdivided to level 2, where all 162 vertices and 320 faces produce regular (equilateral) triangles. &lt;/p&gt;
 &lt;p&gt; Related links: Catalog page &lt;a href="../../../GeometricShapes/IcosahedronSubdivisionLevel2Index.html" target="_blank"&gt;IcosahedronSubdivisionLevel2&lt;/a&gt;,  source &lt;a href="../../../GeometricShapes/IcosahedronSubdivisionLevel2.java"&gt;IcosahedronSubdivisionLevel2.java&lt;/a&gt;, &lt;a href="https://www.web3d.org/x3d/content/examples/X3dResources.html" target="_blank"&gt;X3D Resources&lt;/a&gt;, &lt;a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" target="_blank"&gt;X3D Scene Authoring Hints&lt;/a&gt;, and &lt;a href="https://www.web3d.org/x3d/content/X3dTooltips.html" target="_blank"&gt;X3D Tooltips&lt;/a&gt;. &lt;/p&gt;
	&lt;table style="color:black; border:0px solid; border-spacing:10px 0px;"&gt;
        &lt;caption&gt;Scene Meta Information&lt;/caption&gt;
		&lt;tr style="background-color:silver; border-color:silver;"&gt;
			&lt;td style="text-align:center; padding:10px 0px;"&gt;&lt;i&gt;meta tags&lt;/i&gt;&lt;/td&gt;
			&lt;td style="text-align:left;   padding:10px 0px;"&gt;&amp;nbsp; Document Metadata &lt;/td&gt;
		&lt;/tr&gt;

		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; title &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="../../../GeometricShapes/IcosahedronSubdivisionLevel2.x3d"&gt;IcosahedronSubdivisionLevel2.x3d&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; IcosahedronSubdivisionLevel2.ply &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; description &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; Icosahedron is a polyhedron with twenty faces, subdivided to level 2, where all 162 vertices and 320 faces produce regular (equilateral) triangles. &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; created &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; 13 September 2014 &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; modified &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; 20 October 2019 &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; creator &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; Don Brutzman &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="../../../GeometricShapes/Icosahedron.x3d"&gt;Icosahedron.x3d&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://en.wikipedia.org/wiki/Icosahedron" target="_blank"&gt;https://en.wikipedia.org/wiki/Icosahedron&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://en.wiktionary.org/wiki/icosahedron" target="_blank"&gt;https://en.wiktionary.org/wiki/icosahedron&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://en.wikipedia.org/wiki/Platonic_solid" target="_blank"&gt;https://en.wikipedia.org/wiki/Platonic_solid&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://en.wikipedia.org/wiki/Geodesic_grid" target="_blank"&gt;https://en.wikipedia.org/wiki/Geodesic_grid&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; identifier &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GeometricShapes/IcosahedronSubdivisionLevel2.x3d" target="_blank"&gt;https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GeometricShapes/IcosahedronSubdivisionLevel2.x3d&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; generator &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; Meshlab X3D Exported, &lt;a href="http://meshlab.sourceforge.net" target="_blank"&gt;http://meshlab.sourceforge.net&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; generator &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; X3D-Edit 3.3, &lt;a href="https://savage.nps.edu/X3D-Edit" target="_blank"&gt;https://savage.nps.edu/X3D-Edit&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; license &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="../../../GeometricShapes/../license.html"&gt;../license.html&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background-color:silver; border-color:silver;"&gt;
			&lt;td style="text-align:center;" colspan="2"&gt;  &amp;nbsp; &lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;

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

	* @author Don Brutzman
 */

public class IcosahedronSubdivisionLevel2
{
	/** Default constructor to create this object. */
	public IcosahedronSubdivisionLevel2 ()
	{
	  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("IcosahedronSubdivisionLevel2.x3d"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("IcosahedronSubdivisionLevel2.ply"))
    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("Icosahedron is a polyhedron with twenty faces, subdivided to level 2, where all 162 vertices and 320 faces produce regular (equilateral) triangles."))
    .addMeta(new meta().setName(meta.NAME_CREATED    ).setContent("13 September 2014"))
    .addMeta(new meta().setName(meta.NAME_MODIFIED   ).setContent("20 October 2019"))
    .addMeta(new meta().setName(meta.NAME_CREATOR    ).setContent("Don Brutzman"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("Icosahedron.x3d"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://en.wikipedia.org/wiki/Icosahedron"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://en.wiktionary.org/wiki/icosahedron"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://en.wikipedia.org/wiki/Platonic_solid"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://en.wikipedia.org/wiki/Geodesic_grid"))
    .addMeta(new meta().setName(meta.NAME_IDENTIFIER ).setContent("https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GeometricShapes/IcosahedronSubdivisionLevel2.x3d"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("Meshlab X3D Exported, http://meshlab.sourceforge.net"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit"))
    .addMeta(new meta().setName(meta.NAME_LICENSE    ).setContent("../license.html")))
  .setScene(new Scene()
    .addChild(new WorldInfo().setTitle("IcosahedronSubdivisionLevel2.x3d"))
    .addChild(new Background().setSkyColor(new MFColor(new double[] {0.5,1.0,0.9})))
    .addChild(new Viewpoint().setDescription("Icosahedron, subdivision level 2").setPosition(0.0,0.0,6.0))
    .addChild(new Shape("IcosahedronSubdivisionLevel2")
      .setGeometry(new IndexedFaceSet().setSolid(false).setCoordIndex(getIndexedFaceSet_4_20_coordIndex())
        .setCoord(new Coordinate().setPoint(getCoordinate_5_20_point())))
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.2,0.5,0.8)))));
            }
            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_4_20_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,17,-1,18,19,20,-1,21,22,23,-1,24,25,26,-1,27,28,29,-1,30,31,32,-1,33,34,35,-1,36,37,38,-1,39,40,41,-1,42,43,44,-1,45,46,47,-1,48,49,50,-1,51,52,53,-1,54,55,56,-1,57,58,59,-1,60,2,61,-1,62,63,0,-1,1,64,65,-1,62,5,66,-1,60,67,3,-1,4,68,69,-1,70,8,71,-1,72,73,6,-1,7,74,75,-1,72,11,76,-1,70,77,9,-1,10,78,79,-1,80,14,81,-1,82,83,12,-1,13,84,85,-1,82,17,86,-1,80,87,15,-1,16,88,89,-1,90,20,91,-1,92,93,18,-1,19,94,95,-1,92,23,96,-1,90,97,21,-1,22,98,99,-1,100,26,101,-1,102,103,24,-1,25,104,105,-1,102,29,106,-1,100,107,27,-1,28,108,109,-1,110,32,111,-1,112,113,30,-1,31,114,115,-1,112,35,116,-1,110,117,33,-1,34,118,119,-1,108,38,63,-1,107,88,36,-1,37,87,64,-1,66,41,109,-1,69,91,39,-1,40,95,106,-1,61,44,115,-1,65,81,42,-1,43,85,111,-1,114,47,67,-1,113,98,45,-1,46,97,68,-1,71,50,105,-1,75,86,48,-1,49,89,101,-1,104,53,77,-1,103,94,51,-1,52,93,78,-1,118,56,73,-1,117,84,54,-1,55,83,74,-1,76,59,119,-1,79,96,57,-1,58,99,116,-1,120,0,2,-1,0,121,1,-1,2,1,122,-1,120,3,5,-1,3,123,4,-1,5,4,124,-1,125,6,8,-1,6,126,7,-1,8,7,127,-1,125,9,11,-1,9,128,10,-1,11,10,129,-1,130,12,14,-1,12,131,13,-1,14,13,132,-1,130,15,17,-1,15,133,16,-1,17,16,134,-1,135,18,20,-1,18,136,19,-1,20,19,137,-1,135,21,23,-1,21,138,22,-1,23,22,139,-1,140,24,26,-1,24,141,25,-1,26,25,142,-1,140,27,29,-1,27,143,28,-1,29,28,144,-1,145,30,32,-1,30,146,31,-1,32,31,147,-1,145,33,35,-1,33,148,34,-1,35,34,149,-1,143,36,38,-1,36,133,37,-1,38,37,121,-1,124,39,41,-1,39,137,40,-1,41,40,144,-1,122,42,44,-1,42,132,43,-1,44,43,147,-1,146,45,47,-1,45,138,46,-1,47,46,123,-1,127,48,50,-1,48,134,49,-1,50,49,142,-1,141,51,53,-1,51,136,52,-1,53,52,128,-1,148,54,56,-1,54,131,55,-1,56,55,126,-1,129,57,59,-1,57,139,58,-1,59,58,149,-1,150,60,61,-1,60,120,2,-1,61,2,122,-1,120,62,0,-1,62,151,63,-1,0,63,121,-1,122,1,65,-1,1,121,64,-1,65,64,152,-1,151,62,66,-1,62,120,5,-1,66,5,124,-1,120,60,3,-1,60,150,67,-1,3,67,123,-1,124,4,69,-1,4,123,68,-1,69,68,153,-1,154,70,71,-1,70,125,8,-1,71,8,127,-1,125,72,6,-1,72,155,73,-1,6,73,126,-1,127,7,75,-1,7,126,74,-1,75,74,156,-1,155,72,76,-1,72,125,11,-1,76,11,129,-1,125,70,9,-1,70,154,77,-1,9,77,128,-1,129,10,79,-1,10,128,78,-1,79,78,157,-1,152,80,81,-1,80,130,14,-1,81,14,132,-1,130,82,12,-1,82,156,83,-1,12,83,131,-1,132,13,85,-1,13,131,84,-1,85,84,158,-1,156,82,86,-1,82,130,17,-1,86,17,134,-1,130,80,15,-1,80,152,87,-1,15,87,133,-1,134,16,89,-1,16,133,88,-1,89,88,159,-1,153,90,91,-1,90,135,20,-1,91,20,137,-1,135,92,18,-1,92,157,93,-1,18,93,136,-1,137,19,95,-1,19,136,94,-1,95,94,160,-1,157,92,96,-1,92,135,23,-1,96,23,139,-1,135,90,21,-1,90,153,97,-1,21,97,138,-1,139,22,99,-1,22,138,98,-1,99,98,161,-1,159,100,101,-1,100,140,26,-1,101,26,142,-1,140,102,24,-1,102,160,103,-1,24,103,141,-1,142,25,105,-1,25,141,104,-1,105,104,154,-1,160,102,106,-1,102,140,29,-1,106,29,144,-1,140,100,27,-1,100,159,107,-1,27,107,143,-1,144,28,109,-1,28,143,108,-1,109,108,151,-1,158,110,111,-1,110,145,32,-1,111,32,147,-1,145,112,30,-1,112,161,113,-1,30,113,146,-1,147,31,115,-1,31,146,114,-1,115,114,150,-1,161,112,116,-1,112,145,35,-1,116,35,149,-1,145,110,33,-1,110,158,117,-1,33,117,148,-1,149,34,119,-1,34,148,118,-1,119,118,155,-1,151,108,63,-1,108,143,38,-1};
			return value;
		}
		private int[] getIndexedFaceSet_4_20_coordIndex_2()
		{
			int[] value = {63,38,121,-1,143,107,36,-1,107,159,88,-1,36,88,133,-1,121,37,64,-1,37,133,87,-1,64,87,152,-1,151,66,109,-1,66,124,41,-1,109,41,144,-1,124,69,39,-1,69,153,91,-1,39,91,137,-1,144,40,106,-1,40,137,95,-1,106,95,160,-1,150,61,115,-1,61,122,44,-1,115,44,147,-1,122,65,42,-1,65,152,81,-1,42,81,132,-1,147,43,111,-1,43,132,85,-1,111,85,158,-1,150,114,67,-1,114,146,47,-1,67,47,123,-1,146,113,45,-1,113,161,98,-1,45,98,138,-1,123,46,68,-1,46,138,97,-1,68,97,153,-1,154,71,105,-1,71,127,50,-1,105,50,142,-1,127,75,48,-1,75,156,86,-1,48,86,134,-1,142,49,101,-1,49,134,89,-1,101,89,159,-1,154,104,77,-1,104,141,53,-1,77,53,128,-1,141,103,51,-1,103,160,94,-1,51,94,136,-1,128,52,78,-1,52,136,93,-1,78,93,157,-1,155,118,73,-1,118,148,56,-1,73,56,126,-1,148,117,54,-1,117,158,84,-1,54,84,131,-1,126,55,74,-1,55,131,83,-1,74,83,156,-1,155,76,119,-1,76,129,59,-1,119,59,149,-1,129,79,57,-1,79,157,96,-1,57,96,139,-1,149,58,116,-1,58,139,99,-1,116,99,161,-1};
			return value;
		}


		/** Define subarrays using type double[] */
		private double[] getCoordinate_5_20_point_1()
		{
			double[] value = {0.262866,0.951057,0.16246,0.525731,0.850651,0.0,0.262866,0.951057,-0.16246,-0.262866,0.951057,-0.16246,-0.525731,0.850651,0.0,-0.262866,0.951057,0.16246,0.262866,-0.951057,-0.16246,0.525731,-0.850651,0.0,0.262866,-0.951057,0.16246,-0.262866,-0.951057,0.16246,-0.525731,-0.850651,0.0,-0.262866,-0.951057,-0.16246,0.951057,-0.16246,-0.262866,0.850651,0.0,-0.525731,0.951057,0.16246,-0.262866,0.951057,0.16246,0.262866,0.850651,0.0,0.525731,0.951057,-0.16246,0.262866,-0.951057,-0.16246,0.262866,-0.850651,0.0,0.525731,-0.951057,0.16246,0.262866,-0.951057,0.16246,-0.262866,-0.850651,0.0,-0.525731,-0.951057,-0.16246,-0.262866,-0.16246,-0.262866,0.951057,0.0,-0.525731,0.850651,0.16246,-0.262866,0.951057,0.16246,0.262866,0.951057,0.0,0.525731,0.850651,-0.16246,0.262866,0.951057,-0.16246,0.262866,-0.951057,0.0,0.525731,-0.850651,0.16246,0.262866,-0.951057,0.16246,-0.262866,-0.951057,0.0,-0.525731,-0.850651,-0.16246,-0.262866,-0.951057,0.587785,0.425325,0.688191,0.688191,0.587785,0.425325,0.425325,0.688191,0.587785,-0.688191,0.587785,0.425325,-0.587785,0.425325,0.688191,-0.425325,0.688191,0.587785,0.688191,0.587785,-0.425325,0.587785,0.425325,-0.688191,0.425325,0.688191,-0.587785,-0.587785,0.425325,-0.688191,-0.688191,0.587785,-0.425325,-0.425325,0.688191,-0.587785,0.688191,-0.587785,0.425325,0.587785,-0.425325,0.688191,0.425325,-0.688191,0.587785,-0.587785,-0.425325,0.688191,-0.688191,-0.587785,0.425325,-0.425325,-0.688191,0.587785,0.587785,-0.425325,-0.688191,0.688191,-0.587785,-0.425325,0.425325,-0.688191,-0.587785,-0.688191,-0.587785,-0.425325,-0.587785,-0.425325,-0.688191,-0.425325,-0.688191,-0.587785,0.0,0.961938,-0.273267,0.259892,0.862668,-0.433889,0.0,0.961938,0.273267,0.259892,0.862668,0.433889,0.702046,0.69378,0.160622,0.702046,0.69378,-0.160622,-0.259892,0.862668,0.433889,-0.259892,0.862668,-0.433889,-0.702046,0.69378,-0.160622,-0.702046,0.69378,0.160622,0.0,-0.961938,0.273267,0.259892,-0.862668,0.433889,0.0,-0.961938,-0.273267,0.259892,-0.862668,-0.433889,0.702046,-0.69378,-0.160622,0.702046,-0.69378,0.160622,-0.259892,-0.862668,-0.433889,-0.259892,-0.862668,0.433889,-0.702046,-0.69378,0.160622,-0.702046,-0.69378,-0.160622,0.961938,0.273267,0.0,0.862668,0.433889,-0.259892,0.961938,-0.273267,0.0,0.862668,-0.433889,-0.259892,0.69378,-0.160622,-0.702046,0.69378,0.160622,-0.702046,0.862668,-0.433889,0.259892,0.862668,0.433889,0.259892,0.69378,0.160622,0.702046,0.69378,-0.160622,0.702046,-0.961938,0.273267,0.0,-0.862668,0.433889,0.259892,-0.961938,-0.273267,0.0,-0.862668,-0.433889,0.259892,-0.69378,-0.160622,0.702046,-0.69378,0.160622,0.702046,-0.862668,-0.433889,-0.259892,-0.862668,0.433889,-0.259892,-0.69378,0.160622,-0.702046,-0.69378,-0.160622,-0.702046};
			return value;
		}
		private double[] getCoordinate_5_20_point_2()
		{
			double[] value = {0.273267,0.0,0.961938,0.433889,-0.259892,0.862668,-0.273267,0.0,0.961938,-0.433889,-0.259892,0.862668,-0.160622,-0.702046,0.69378,0.160622,-0.702046,0.69378,-0.433889,0.259892,0.862668,0.433889,0.259892,0.862668,0.160622,0.702046,0.69378,-0.160622,0.702046,0.69378,0.273267,0.0,-0.961938,0.433889,0.259892,-0.862668,-0.273267,0.0,-0.961938,-0.433889,0.259892,-0.862668,-0.160622,0.702046,-0.69378,0.160622,0.702046,-0.69378,-0.433889,-0.259892,-0.862668,0.433889,-0.259892,-0.862668,0.160622,-0.702046,-0.69378,-0.160622,-0.702046,-0.69378,0.0,1.0,0.0,0.5,0.809017,0.309017,0.5,0.809017,-0.309017,-0.5,0.809017,-0.309017,-0.5,0.809017,0.309017,0.0,-1.0,0.0,0.5,-0.809017,-0.309017,0.5,-0.809017,0.309017,-0.5,-0.809017,0.309017,-0.5,-0.809017,-0.309017,1.0,0.0,0.0,0.809017,-0.309017,-0.5,0.809017,0.309017,-0.5,0.809017,0.309017,0.5,0.809017,-0.309017,0.5,-1.0,0.0,0.0,-0.809017,-0.309017,0.5,-0.809017,0.309017,0.5,-0.809017,0.309017,-0.5,-0.809017,-0.309017,-0.5,0.0,0.0,1.0,-0.309017,-0.5,0.809017,0.309017,-0.5,0.809017,0.309017,0.5,0.809017,-0.309017,0.5,0.809017,0.0,0.0,-1.0,-0.309017,0.5,-0.809017,0.309017,0.5,-0.809017,0.309017,-0.5,-0.809017,-0.309017,-0.5,-0.809017,0.0,0.850651,-0.525731,0.0,0.850651,0.525731,0.850651,0.525731,0.0,-0.850651,0.525731,0.0,0.0,-0.850651,0.525731,0.0,-0.850651,-0.525731,0.850651,-0.525731,0.0,-0.850651,-0.525731,0.0,0.525731,0.0,-0.850651,0.525731,0.0,0.850651,-0.525731,0.0,0.850651,-0.525731,0.0,-0.850651};
			return value;
		}

		/** Large attribute array: IndexedFaceSet coordIndex field, scene-graph level=4, element #20, 1280 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_4_20_coordIndex()
		{
			MFInt32 IndexedFaceSet_4_20_coordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getIndexedFaceSet_4_20_coordIndex_1()))
				.append(new MFInt32(getIndexedFaceSet_4_20_coordIndex_2()));
			return IndexedFaceSet_4_20_coordIndex;
		}
		/** Large attribute array: Coordinate point field, scene-graph level=5, element #20, 486 total numbers made up of 162 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_5_20_point()
		{
			MFVec3f Coordinate_5_20_point = new MFVec3f()/*2.finalize*/
				.append(new MFVec3f(getCoordinate_5_20_point_1()))
				.append(new MFVec3f(getCoordinate_5_20_point_2()));
			return Coordinate_5_20_point;
		}

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

	/** 
	 * Provide a 
	 * &lt;a href="https://dzone.com/articles/java-copy-shallow-vs-deep-in-which-you-will-swim" target="_blank"&gt;shallow copy&lt;/a&gt;
	 * of the X3D model.
	 * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html"&gt;X3D&lt;/a&gt;
	 * @return IcosahedronSubdivisionLevel2 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 &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#handleArguments-java.lang.String:A-"&gt;X3D.handleArguments(args)&lt;/a&gt;
     * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#validationReport--"&gt;X3D.validationReport()&lt;/a&gt;
     * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html"&gt;CommandLine&lt;/a&gt;
     * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE"&gt;CommandLine.USAGE&lt;/a&gt;
     * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html"&gt;ConfigurationProperties&lt;/a&gt;
     */
    public static void main(String args[])
    {
        System.out.println("Build this X3D model, showing validation diagnostics...");
        X3D thisExampleX3dModel = new IcosahedronSubdivisionLevel2().getX3dModel();
//      System.out.println("X3D model construction complete.");
	
        // next handle command line arguments
        boolean hasArguments = (args != null) &amp;&amp; (args.length &gt; 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: \"X3dForAdvancedModeling.GeometricShapes.IcosahedronSubdivisionLevel2\" 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("X3dForAdvancedModeling.GeometricShapes.IcosahedronSubdivisionLevel2 self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

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