This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Hands on tropical geometry ====== This is a minimal tutorial for 3d-printing tropical surfaces and tropical curves. The resulting digital models can also be used for high quality renders. For questions on or beyond the tutorial, visit the polymake forums:\\ https://forum.polymake.org/ ===== Basic preperations for this notebook ===== <html><font color='red'></html>//This code cell should run before any of the others//<html></font></html> <code perl> > script("files/3d_printing_with_x3d/3d_printing_helping_subs.pl"); # loading helper scripts > # needs to be done before > application "tropical"; > > $x3d_dir="/tmp/x3ds/"; # designated folder for x3d files (leave empty for current folder) > if (!-d $x3d_dir) { mkdir $x3d_dir; } # create the folder if it does not exist </code> ===== Tropical surfaces ===== ==== A: creating tropical surfaces in polymake ==== A tropical surface in euclidean 3-space is also a tropical hypersurface, and the simplest way to create a tropical hypersurface is by specifying a tropical polynomial which cuts it out. This can be done through a suitable string. Note that **the polynomial needs to be homogeneous** and that the first coordinate will be set to 1 for the affine picture. To control which variable comes first, one can supplement an array of variable names. <code perl> > $quadric = toTropicalPolynomial("min(1+2*w, 1+2*x, 1+2*y, 1+2*z, w+x, w+y, w+z, x+y, x+z, y+z)", qw( w x y z )); > $TQuadric = new Hypersurface<Min>(POLYNOMIAL=>$quadric); > $TQuadric->VISUAL; </code> <HTML> <div class="threejs_output"><!-- polymake for knusper Thu Apr 30 10:10:52 2020 TQuadric --> <html> <head> <title>TQuadric</title> <style> /* // COMMON_CODE_BLOCK_BEGIN */ html{overflow: scroll;} .threejs_output { font-family: Arial, Helvetica, sans-serif} strong{font-size: 18px;} canvas { z-index: 8; } input[type='range'] {} input[type='radio'] {margin-left:0;} input[type='checkbox'] {margin-right:7px; margin-left: 0px; padding-left:0px;} .group{padding-bottom: 40px;} .settings * {z-index: 11; } .settings{z-index: 10; margin-left: 30px; display: none; width: 14em; height: 90%; border: solid 1px silver; padding: 2px; overflow-y: scroll; background-color: white } .indented{margin-left: 20px; margin-top: 15px; padding-bottom: 0px;} .shownObjectsList{overflow: auto; max-width: 150px; max-height: 150px;} .showSettingsButton{display: block; z-index: 12; position: absolute } .hideSettingsButton{display: none; z-index: 12; position: absolute; opacity: 0.5} .resetButton{margin-top: 20px;} button{margin-left: 0;} img{cursor: pointer;} .suboption{padding-top: 30px;} .transparency{display: none;} .labelsCheckbox{margin-top: 10px;} input[type=range] { -webkit-appearance: none; padding:0; width:90%; margin-left: auto; margin-right: auto; margin-top: 20px; display: block; } input[type=range]:focus { outline: none; } input[type=range]::-webkit-slider-runnable-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-webkit-slider-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; -webkit-appearance: none; margin-top: -5px; } input[type=range]:focus::-webkit-slider-runnable-track { background: #E3E3E3; } input[type=range]::-moz-range-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-moz-range-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]::-ms-track { height: 4px; cursor: pointer; animate: 0.2s; background: transparent; border-color: transparent; color: transparent; } input[type=range]::-ms-fill-lower { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-fill-upper { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]:focus::-ms-fill-lower { background: #E3E3E3; } input[type=range]:focus::-ms-fill-upper { background: #E3E3E3; } /* // COMMON_CODE_BLOCK_END */ </style> </head> <body> <div id='settings_0' class='settings'> <div class=group id='explode_0'> <strong>Explode</strong> <input id='explodeRange_0' type='range' min=0 max=6 step=0.01 value=0> <div class=indented><input id='explodeCheckbox_0' type='checkbox'>Automatic explosion</div> <div class=suboption>Exploding speed</div> <input id='explodingSpeedRange_0' type='range' min=0 max=0.5 step=0.001 value=0.05> </div> <div class=group id='transparency_0' class='transparency'> <strong>Transparency</strong> <input id='transparencyRange_0' type='range' min=0 max=1 step=0.01 value=0> </div> <div class=group id='rotation_0'> <strong>Rotation</strong> <div class=indented> <div><input type='checkbox' id='changeRotationX_0'> x-axis</div> <div><input type='checkbox' id='changeRotationY_0'> y-axis</div> <div><input type='checkbox' id='changeRotationZ_0'> z-axis</div> <button id='resetButton_0' class='resetButton' >Reset</button> </div> <div class=suboption>Rotation speed</div> <input id='rotationSpeedRange_0' type='range' min=0 max=5 step=0.01 value=2> </div> <div class=group id='display_0'> <strong>Display</strong> <div class=indented> <div id='shownObjectsList_0' class='shownObjectsList'></div> <div class='labelsCheckbox'><input type='checkbox' id='labelsCheckboxInput_0' checked>Labels</div> </div> </div> <div class=group id='svg_0'> <strong>SVG</strong> <div class=indented> <form> <input type="radio" name='screenshotMode' value='download' id='download_0' checked> Download<br> <input type="radio" name='screenshotMode' value='tab' id='tab_0' > New tab<br> </form> <button id='takeScreenshot_0'>Screenshot</button> </div> </div> </div> <!-- end of settings --> <img id='hideSettingsButton_0' style="display: none" class='hideSettingsButton' src='/kernelspecs/polymake/close.svg' width=20px"> <img id='showSettingsButton_0' class='showSettingsButton' src='/kernelspecs/polymake/menu.svg' width=20px"> <div id="model2689393128"></div> <script> requirejs.config({ paths: { three: '/kernelspecs/polymake/three', Detector: '/kernelspecs/polymake/Detector', SVGRenderer: '/kernelspecs/polymake/SVGRenderer', CanvasRenderer: '/kernelspecs/polymake/CanvasRenderer', Projector: '/kernelspecs/polymake/Projector', TrackballControls: '/kernelspecs/polymake/TrackballControls' }, shim: { 'three': { exports: 'THREE' }, 'Detector': { deps: [ 'three' ], exports: 'Detector' }, 'SVGRenderer': { deps: [ 'three' ], exports: 'THREE.SVGRenderer' }, 'CanvasRenderer': { deps: [ 'three' ], exports: 'THREE.CanvasRenderer' }, 'Projector': { deps: [ 'three' ], exports: 'THREE.Projector' }, 'TrackballControls': { deps: [ 'three' ], exports: 'THREE.TrackballControls' } } }); require(['three'],function(THREE){ window.THREE = THREE; require(['Detector','SVGRenderer','CanvasRenderer','Projector','TrackballControls'],function(Detector,SVGRenderer,CanvasRenderer,Projector,TrackballControls){ THREE.SVGRenderer = SVGRenderer; THREE.CanvasRenderer = CanvasRenderer; THREE.Projector = Projector; THREE.TrackballControls = TrackballControls; // COMMON_CODE_BLOCK_BEGIN var foldable = false; var container = document.getElementById( 'model2689393128' ); var renderer = Detector.webgl? new THREE.WebGLRenderer({antialias: true}): new THREE.CanvasRenderer({antialias: true}); var svgRenderer = new THREE.SVGRenderer({antialias: true}); var box = document.getElementsByClassName( 'threejs_output' )[0]; var width = box.clientWidth; var height = box.clientHeight; renderer.setSize(width, height); svgRenderer.setSize(width, height); renderer.setClearColor(0xFFFFFF, 1); svgRenderer.setClearColor(0xFFFFFF, 1); container.appendChild(renderer.domElement); var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, width/height, 0.1, 1000); var renderid; camera.position.set(0, 0, 5); camera.lookAt(0, 0, 0); camera.up.set(0, 1, 0); // class to allow move points together with labels and spheres var PMPoint = function (x,y,z) { this.vector = new THREE.Vector3(x,y,z); this.sprite = null; this.sphere = null; } PMPoint.prototype.makelabel = function(label) { this.sprite = textSprite( label ); this.sprite.position.copy(this.vector); } PMPoint.prototype.makesphere = function(radius,material) { this.sphere = new THREE.Mesh(new THREE.SphereGeometry(radius), material); this.sphere.position.copy(this.vector); } PMPoint.prototype.setX = function(x) { this.vector.setX(x); if (this.sprite) { this.sprite.position.setX(x); } if (this.sphere) { this.sphere.position.setX(x); } }; PMPoint.prototype.setY = function(y) { this.vector.setY(y); if (this.sprite) { this.sprite.position.setY(y); } if (this.sphere) { this.sphere.position.setY(y); } }; PMPoint.prototype.setZ = function(z) { this.vector.setZ(z); if (this.sprite) { this.sprite.position.setZ(z); } if (this.sphere) { this.sphere.position.setZ(z); } }; PMPoint.prototype.set = function(x,y,z) { this.vector.set(x,y,z); if (this.sprite) { this.sprite.position.set(x,y,z); } if (this.sphere) { this.sphere.position.set(x,y,z); } }; PMPoint.prototype.add = function(o) { if (this.sprite) { o.add(this.sprite); } if (this.sphere) { o.add(this.sphere); } }; var controls = new THREE.TrackballControls(camera, container); controls.zoomSpeed = 0.2; controls.rotateSpeed = 4; var all_objects = []; var centroids = []; // select the target node var target = document.querySelector('#model2689393128'); // create an observer instance var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.removedNodes && mutation.removedNodes.length > 0) { cancelAnimationFrame(renderId); observer.disconnect(); console.log("cancelled frame "+renderId); } }); }); // configuration of the observer: var config = { childList: true, characterData: true } // pass in the target node, as well as the observer options while (target) { if (target.className=="output") { observer.observe(target, config); break; } target = target.parentNode; } // COMMON_CODE_BLOCK_END var objectnames = ["unnamed__1","unnamed__2","unnamed__3","unnamed__4","unnamed__5","unnamed__6","unnamed__7","unnamed__8","unnamed__9","unnamed__10","unnamed__11","unnamed__12","unnamed__13","unnamed__14","unnamed__15","unnamed__16","unnamed__17","unnamed__18","unnamed__19","unnamed__20","unnamed__21","unnamed__22","unnamed__23","unnamed__24"]; var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -2, -2)); allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(-1, -2, -1)); allpoints.push(new PMPoint(0, -1, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, -1)); allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(2, 0, -1)); allpoints.push(new PMPoint(2, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -1, 0)); allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(2, -1, 0)); allpoints.push(new PMPoint(2, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -1, 0)); allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(0, -1, 2)); allpoints.push(new PMPoint(0, 0, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(2, 0, 0)); allpoints.push(new PMPoint(1, 1, 1)); allpoints.push(new PMPoint(2, 1, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -1, -1)); allpoints.push(new PMPoint(-2, -1, 2)); allpoints.push(new PMPoint(-1, 0, 0)); allpoints.push(new PMPoint(-1, 0, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 1, 1)); allpoints.push(new PMPoint(2, 1, 1)); allpoints.push(new PMPoint(1, 2, 1)); allpoints.push(new PMPoint(2, 2, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 1, 1)); allpoints.push(new PMPoint(2, 1, 1)); allpoints.push(new PMPoint(1, 1, 2)); allpoints.push(new PMPoint(2, 1, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -2, -2)); allpoints.push(new PMPoint(-1, -1, -2)); allpoints.push(new PMPoint(0, 0, -1)); allpoints.push(new PMPoint(0, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -2, -2)); allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(-2, -1, -1)); allpoints.push(new PMPoint(-1, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, -1)); allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(0, 2, -1)); allpoints.push(new PMPoint(0, 2, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -1, -1)); allpoints.push(new PMPoint(-2, 2, -1)); allpoints.push(new PMPoint(-1, 0, 0)); allpoints.push(new PMPoint(-1, 2, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -2, -1)); allpoints.push(new PMPoint(2, -2, -1)); allpoints.push(new PMPoint(0, -1, 0)); allpoints.push(new PMPoint(2, -1, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -2, -1)); allpoints.push(new PMPoint(-1, -2, 2)); allpoints.push(new PMPoint(0, -1, 0)); allpoints.push(new PMPoint(0, -1, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -1, 0)); allpoints.push(new PMPoint(2, -1, 0)); allpoints.push(new PMPoint(0, -1, 2)); allpoints.push(new PMPoint(2, -1, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -1, -2)); allpoints.push(new PMPoint(2, -1, -2)); allpoints.push(new PMPoint(0, 0, -1)); allpoints.push(new PMPoint(2, 0, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, -1)); allpoints.push(new PMPoint(2, 0, -1)); allpoints.push(new PMPoint(0, 2, -1)); allpoints.push(new PMPoint(2, 2, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -1, -2)); allpoints.push(new PMPoint(-1, 2, -2)); allpoints.push(new PMPoint(0, 0, -1)); allpoints.push(new PMPoint(0, 2, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 0, 0)); allpoints.push(new PMPoint(-1, 0, 2)); allpoints.push(new PMPoint(0, 0, 2)); allpoints.push(new PMPoint(0, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(0, 2, 0)); allpoints.push(new PMPoint(1, 1, 1)); allpoints.push(new PMPoint(1, 2, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(1, 1, 1)); allpoints.push(new PMPoint(1, 1, 2)); allpoints.push(new PMPoint(0, 0, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 0, 0)); allpoints.push(new PMPoint(-1, 0, 2)); allpoints.push(new PMPoint(-1, 2, 2)); allpoints.push(new PMPoint(-1, 2, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 1, 1)); allpoints.push(new PMPoint(1, 1, 2)); allpoints.push(new PMPoint(1, 2, 2)); allpoints.push(new PMPoint(1, 2, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 0, 0)); allpoints.push(new PMPoint(-1, 2, 0)); allpoints.push(new PMPoint(0, 2, 0)); allpoints.push(new PMPoint(0, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); // COMMON_CODE_BLOCK_BEGIN var xRotationEnabled = false; var yRotationEnabled = false; var zRotationEnabled = false; var rotationSpeedFactor = 1; var settingsShown = false; var labelsShown = true; var intervals = []; var timeouts = []; var explodingSpeed = 0.05; var explodeScale = 0; var XMLS = new XMLSerializer(); var svgElement; var renderId; var render = function () { renderId = requestAnimationFrame(render); // comment in for automatic explosion // explode(updateFactor()); var phi = 0.02 * rotationSpeedFactor; if (xRotationEnabled){ scene.rotation.x += phi; } if(yRotationEnabled){ scene.rotation.y += phi; } if(zRotationEnabled){ scene.rotation.z += phi; } controls.update(); renderer.render(scene, camera); }; render(); function computeCentroid(geom) { centroid = new THREE.Vector3(); geom.vertices.forEach(function(v) { centroid.add(v); }); centroid.divideScalar(geom.vertices.length); return centroid; } function changeTransparency(event){ var opacity = 1-Number(event.currentTarget.value); for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ if (all_objects[i].children[j].material.type == "MultiMaterial") { for (var k=0; k<all_objects[i].children[j].material.materials.length; k++){ all_objects[i].children[j].material.materials[k].opacity = opacity; all_objects[i].children[j].material.materials[k].depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.materials[k].depthTest = opacity < 0.5 ? false : true; } } else if (all_objects[i].children[j].material.transparent && all_objects[i].children[j].material.type == "MeshBasicMaterial" && all_objects[i].children[j].geometry.type == "Geometry"){ all_objects[i].children[j].material.opacity = opacity; all_objects[i].children[j].material.depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.depthTest = opacity < 0.5 ? false : true; } } } } function changeRotationX(event){ xRotationEnabled = event.currentTarget.checked; } function changeRotationY(event){ yRotationEnabled = event.currentTarget.checked; } function changeRotationZ(event){ zRotationEnabled = event.currentTarget.checked; } function changeRotationSpeedFactor(event){ rotationSpeedFactor = Number(event.currentTarget.value); } function resetScene(){ scene.rotation.set(0,0,0); camera.position.set(0,0,5); camera.up.set(0,1,0); } function showSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_0').style.position = 'absolute'; document.getElementById('settings_0').style.display = 'block'; document.getElementById('showSettingsButton_0').style.display = 'none'; document.getElementById('hideSettingsButton_0').style.display = 'block'; settingsShown = true; } function hideSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_0').style.display = 'none'; document.getElementById('hideSettingsButton_0').style.display = 'none'; document.getElementById('showSettingsButton_0').style.display = 'block'; settingsShown = false; } var pos = 150* Math.PI; function updateFactor() { pos++; return Math.sin(.01*pos)+1; } function makelabel(message, x, y, z, params) { var spritey = textSprite( message, params ); spritey.position.set(x, y, z); obj.add(spritey); } function textSprite(message, parameters) { if ( parameters === undefined ) parameters = {}; var fontface = "Helvetica"; var fontsize = parameters.hasOwnProperty("fontsize") ? parameters["fontsize"] : 18; fontsize = fontsize*10; var canvas = document.createElement('canvas'); var size = 1024; canvas.width = size; canvas.height = size; var context = canvas.getContext('2d'); context.font = fontsize + "px " + fontface; // text color context.fillStyle = "rgba(0, 0, 0, 1.0)"; context.fillText(message, size/2, size/2); // canvas contents will be used for a texture var texture = new THREE.Texture(canvas); texture.needsUpdate = true; var spriteMaterial = new THREE.SpriteMaterial( {map: texture, useScreenCoordinates: false}); var sprite = new THREE.Sprite(spriteMaterial); return sprite; } function takeSvgScreenshot(){ if (labelsShown){ hideLabels(); } svgRenderer.render(scene,camera); svgElement = XMLS.serializeToString(svgRenderer.domElement); if (labelsShown){ displayLabels(); } if (document.getElementById('tab_0').checked){ //show in new tab var myWindow = window.open("",""); myWindow.document.body.innerHTML = svgElement; } else{ // download svg file download("screenshot.svg", svgElement); } } function showOrHideObject(event){ var nr = Number(event.currentTarget.name); all_objects[nr].visible = event.currentTarget.checked; } function displayOrHideOptionsRecursive( obj ) { for (var j=0; j<obj.children.length; j++) { var child = obj.children[j]; if (child.material===undefined && child) { displayOrHideOptionsRecursive( child ); } else { if (child.material.type == "MultiMaterial") { for (var k=0; k<child.material.materials.length; k++) { if (child.material.materials[k].transparent) { document.getElementById('transparency_0').style.display = 'block'; document.getElementById('transparencyRange_0').value = 1 - child.material.materials[k].opacity; return; } } } else if ( child.material.transparent && child.material.type == "MeshBasicMaterial" && child.geometry.type == "Geometry"){ document.getElementById('transparency_0').style.display = 'block'; return; } } } } function displayOrHideOptions() { for (var i=0; i<all_objects.length; i++) { var obj = all_objects[i]; displayOrHideOptionsRecursive( obj ); } } displayOrHideOptions() // ---------------------- EXPLOSION ------------------------------------------------ // --------------------------------------------------------------------------------- function explode(factor) { var obj, c; var c0 = centroids[0]; for (var i = 0; i<centroids.length; ++i) { c = centroids[i]; obj = all_objects[all_objects.length - centroids.length + i]; obj.position.set(c.x*factor, c.y*factor, c.z*factor); } } function triggerExplode(event){ explodeScale = Number(event.currentTarget.value); explode(explodeScale); } function setExplodingSpeed(event){ explodingSpeed = Number(event.currentTarget.value); } function triggerAutomaticExplode(event){ if (event.currentTarget.checked){ startExploding(); } else { clearIntervals(); } } function startExploding(){ intervals.push(setInterval(explodingInterval, 25)); } function explodingInterval(){ explodeScale += explodingSpeed; if (explodeScale <= 6){ explode(explodeScale); } else{ explode(6); explodeScale = 6; clearIntervals(); timeouts.push(setTimeout(startUnexploding, 3000)); } document.getElementById('explodeRange_0').value = explodeScale; } function startUnexploding(){ intervals.push(setInterval(unexplodingInterval, 25)); } function unexplodingInterval(){ explodeScale -= explodingSpeed; if (explodeScale >= 0){ explode(explodeScale); } else { explode(0); explodeScale = 0; clearIntervals(); timeouts.push(setTimeout(startExploding, 3000)); } document.getElementById('explodeRange_0').value = explodeScale; } function clearIntervals(){ intervals.forEach(function(interval){ clearInterval(interval); }); intervals = []; timeouts.forEach(function(timeout){ clearTimeout(timeout); }); timeouts = []; } // append checkboxes for displaying or hiding objects var shownObjectsList = document.getElementById('shownObjectsList_0'); for (var i=0; i<all_objects.length; i++){ var objNode = document.createElement('span'); objNode.innerHTML = objectnames[i] + '<br>'; var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = true; checkbox.name = String(i); checkbox.onchange = showOrHideObject; shownObjectsList.appendChild(checkbox); shownObjectsList.appendChild(objNode); } function displayLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = true; } } } } function hideLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = false; } } } } function displayOrHideLabels(event){ if (event.currentTarget.checked){ displayLabels(); labelsShown = true; } else { hideLabels(); labelsShown = false; } } function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } var tempobj; tempobj = document.getElementById('explodeRange_0'); if (tempobj) { tempobj.oninput = triggerExplode; document.getElementById('explodeCheckbox_0').onchange = triggerAutomaticExplode; document.getElementById('explodingSpeedRange_0').oninput = setExplodingSpeed; } tempobj = document.getElementById('foldRange_0'); if (tempobj) { tempobj.oninput = fold; } document.getElementById('transparencyRange_0').oninput = changeTransparency; document.getElementById('changeRotationX_0').onchange = changeRotationX; document.getElementById('changeRotationY_0').onchange = changeRotationY; document.getElementById('changeRotationZ_0').onchange = changeRotationZ; document.getElementById('resetButton_0').onclick = resetScene; document.getElementById('rotationSpeedRange_0').oninput = changeRotationSpeedFactor; document.getElementById('labelsCheckboxInput_0').onchange = displayOrHideLabels; document.getElementById('takeScreenshot_0').onclick = takeSvgScreenshot; document.getElementById('showSettingsButton_0').onclick = showSettings; document.getElementById('hideSettingsButton_0').onclick = hideSettings; // ------------------ SHORTCUTS -------------------------------------------- // ------------------------------------------------------------------------- /** * http://www.openjs.com/scripts/events/keyboard_shortcuts/ * Version : 2.01.B * By Binny V A * License : BSD */ shortcut = { 'all_shortcuts':{},//All the shortcuts are stored in this array 'add': function(shortcut_combination,callback,opt) { //Provide a set of default options var default_options = { 'type':'keydown', 'propagate':false, 'disable_in_input':false, 'target':document, 'keycode':false } if(!opt) opt = default_options; else { for(var dfo in default_options) { if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo]; } } var ele = opt.target; if(typeof opt.target == 'string') ele = document.getElementById(opt.target); var ths = this; shortcut_combination = shortcut_combination.toLowerCase(); //The function to be called at keypress var func = function(e) { e = e || window.event; if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields var element; if(e.target) element=e.target; else if(e.srcElement) element=e.srcElement; if(element.nodeType==3) element=element.parentNode; if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return; } //Find Which key is pressed if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which; var character = String.fromCharCode(code).toLowerCase(); if(code == 188) character=","; //If the user presses , when the type is onkeydown if(code == 190) character="."; //If the user presses , when the type is onkeydown var keys = shortcut_combination.split("+"); //Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked var kp = 0; //Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken var shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", ".":">", "/":"?", "\\":"|" } //Special Keys - and their codes var special_keys = { 'esc':27, 'escape':27, 'tab':9, 'space':32, 'return':13, 'enter':13, 'backspace':8, 'scrolllock':145, 'scroll_lock':145, 'scroll':145, 'capslock':20, 'caps_lock':20, 'caps':20, 'numlock':144, 'num_lock':144, 'num':144, 'pause':19, 'break':19, 'insert':45, 'home':36, 'delete':46, 'end':35, 'pageup':33, 'page_up':33, 'pu':33, 'pagedown':34, 'page_down':34, 'pd':34, 'left':37, 'up':38, 'right':39, 'down':40, 'f1':112, 'f2':113, 'f3':114, 'f4':115, 'f5':116, 'f6':117, 'f7':118, 'f8':119, 'f9':120, 'f10':121, 'f11':122, 'f12':123 } var modifiers = { shift: { wanted:false, pressed:false}, ctrl : { wanted:false, pressed:false}, alt : { wanted:false, pressed:false}, meta : { wanted:false, pressed:false} //Meta is Mac specific }; if(e.ctrlKey) modifiers.ctrl.pressed = true; if(e.shiftKey) modifiers.shift.pressed = true; if(e.altKey) modifiers.alt.pressed = true; if(e.metaKey) modifiers.meta.pressed = true; for(var i=0; k=keys[i],i<keys.length; i++) { //Modifiers if(k == 'ctrl' || k == 'control') { kp++; modifiers.ctrl.wanted = true; } else if(k == 'shift') { kp++; modifiers.shift.wanted = true; } else if(k == 'alt') { kp++; modifiers.alt.wanted = true; } else if(k == 'meta') { kp++; modifiers.meta.wanted = true; } else if(k.length > 1) { //If it is a special key if(special_keys[k] == code) kp++; } else if(opt['keycode']) { if(opt['keycode'] == code) kp++; } else { //The special keys did not match if(character == k) kp++; else { if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase character = shift_nums[character]; if(character == k) kp++; } } } } if(kp == keys.length && modifiers.ctrl.pressed == modifiers.ctrl.wanted && modifiers.shift.pressed == modifiers.shift.wanted && modifiers.alt.pressed == modifiers.alt.wanted && modifiers.meta.pressed == modifiers.meta.wanted) { callback(e); if(!opt['propagate']) { //Stop the event //e.cancelBubble is supported by IE - this will kill the bubbling process. e.cancelBubble = true; e.returnValue = false; //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } return false; } } } this.all_shortcuts[shortcut_combination] = { 'callback':func, 'target':ele, 'event': opt['type'] }; //Attach the function with the event if(ele.addEventListener) ele.addEventListener(opt['type'], func, false); else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func); else ele['on'+opt['type']] = func; }, //Remove the shortcut - just specify the shortcut and I will remove the binding 'remove':function(shortcut_combination) { shortcut_combination = shortcut_combination.toLowerCase(); var binding = this.all_shortcuts[shortcut_combination]; delete(this.all_shortcuts[shortcut_combination]) if(!binding) return; var type = binding['event']; var ele = binding['target']; var callback = binding['callback']; if(ele.detachEvent) ele.detachEvent('on'+type, callback); else if(ele.removeEventListener) ele.removeEventListener(type, callback, false); else ele['on'+type] = false; } } shortcut.add("Alt+Left",function() { var event = new Event('click'); if (settingsShown){ document.getElementById('hideSettingsButton_0').dispatchEvent(event); } else{ document.getElementById('showSettingsButton_0').dispatchEvent(event); } }); if (foldable) moveToBaryCenter(); });}); // COMMON_CODE_BLOCK_END </script> </body> </html> </div> </HTML> Alternatively, one can specify the polynomial through an exponent matrix and a coefficient vector. <code perl> > $mQuadric = [ [2,0,0,0], [0,2,0,0], [0,0,2,0], [0,0,0,2], > [1,1,0,0], [1,0,1,0], [1,0,0,1], > [0,1,1,0], [0,1,0,1], [0,0,1,1]]; > $cQuadric = [1,1,1,1,0,0,0,0,0,0]; > $TQuadric = new Hypersurface<Min>(MONOMIALS=>$mQuadric, COEFFICIENTS=>$cQuadric); > $TQuadric->VISUAL; </code> <HTML> <div class="threejs_output"><!-- polymake for knusper Thu Apr 30 10:10:53 2020 TQuadric --> <html> <head> <title>TQuadric</title> <style> /* // COMMON_CODE_BLOCK_BEGIN */ html{overflow: scroll;} .threejs_output { font-family: Arial, Helvetica, sans-serif} strong{font-size: 18px;} canvas { z-index: 8; } input[type='range'] {} input[type='radio'] {margin-left:0;} input[type='checkbox'] {margin-right:7px; margin-left: 0px; padding-left:0px;} .group{padding-bottom: 40px;} .settings * {z-index: 11; } .settings{z-index: 10; margin-left: 30px; display: none; width: 14em; height: 90%; border: solid 1px silver; padding: 2px; overflow-y: scroll; background-color: white } .indented{margin-left: 20px; margin-top: 15px; padding-bottom: 0px;} .shownObjectsList{overflow: auto; max-width: 150px; max-height: 150px;} .showSettingsButton{display: block; z-index: 12; position: absolute } .hideSettingsButton{display: none; z-index: 12; position: absolute; opacity: 0.5} .resetButton{margin-top: 20px;} button{margin-left: 0;} img{cursor: pointer;} .suboption{padding-top: 30px;} .transparency{display: none;} .labelsCheckbox{margin-top: 10px;} input[type=range] { -webkit-appearance: none; padding:0; width:90%; margin-left: auto; margin-right: auto; margin-top: 20px; display: block; } input[type=range]:focus { outline: none; } input[type=range]::-webkit-slider-runnable-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-webkit-slider-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; -webkit-appearance: none; margin-top: -5px; } input[type=range]:focus::-webkit-slider-runnable-track { background: #E3E3E3; } input[type=range]::-moz-range-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-moz-range-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]::-ms-track { height: 4px; cursor: pointer; animate: 0.2s; background: transparent; border-color: transparent; color: transparent; } input[type=range]::-ms-fill-lower { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-fill-upper { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]:focus::-ms-fill-lower { background: #E3E3E3; } input[type=range]:focus::-ms-fill-upper { background: #E3E3E3; } /* // COMMON_CODE_BLOCK_END */ </style> </head> <body> <div id='settings_1' class='settings'> <div class=group id='explode_1'> <strong>Explode</strong> <input id='explodeRange_1' type='range' min=0 max=6 step=0.01 value=0> <div class=indented><input id='explodeCheckbox_1' type='checkbox'>Automatic explosion</div> <div class=suboption>Exploding speed</div> <input id='explodingSpeedRange_1' type='range' min=0 max=0.5 step=0.001 value=0.05> </div> <div class=group id='transparency_1' class='transparency'> <strong>Transparency</strong> <input id='transparencyRange_1' type='range' min=0 max=1 step=0.01 value=0> </div> <div class=group id='rotation_1'> <strong>Rotation</strong> <div class=indented> <div><input type='checkbox' id='changeRotationX_1'> x-axis</div> <div><input type='checkbox' id='changeRotationY_1'> y-axis</div> <div><input type='checkbox' id='changeRotationZ_1'> z-axis</div> <button id='resetButton_1' class='resetButton' >Reset</button> </div> <div class=suboption>Rotation speed</div> <input id='rotationSpeedRange_1' type='range' min=0 max=5 step=0.01 value=2> </div> <div class=group id='display_1'> <strong>Display</strong> <div class=indented> <div id='shownObjectsList_1' class='shownObjectsList'></div> <div class='labelsCheckbox'><input type='checkbox' id='labelsCheckboxInput_1' checked>Labels</div> </div> </div> <div class=group id='svg_1'> <strong>SVG</strong> <div class=indented> <form> <input type="radio" name='screenshotMode' value='download' id='download_1' checked> Download<br> <input type="radio" name='screenshotMode' value='tab' id='tab_1' > New tab<br> </form> <button id='takeScreenshot_1'>Screenshot</button> </div> </div> </div> <!-- end of settings --> <img id='hideSettingsButton_1' style="display: none" class='hideSettingsButton' src='/kernelspecs/polymake/close.svg' width=20px"> <img id='showSettingsButton_1' class='showSettingsButton' src='/kernelspecs/polymake/menu.svg' width=20px"> <div id="model22227422995"></div> <script> requirejs.config({ paths: { three: '/kernelspecs/polymake/three', Detector: '/kernelspecs/polymake/Detector', SVGRenderer: '/kernelspecs/polymake/SVGRenderer', CanvasRenderer: '/kernelspecs/polymake/CanvasRenderer', Projector: '/kernelspecs/polymake/Projector', TrackballControls: '/kernelspecs/polymake/TrackballControls' }, shim: { 'three': { exports: 'THREE' }, 'Detector': { deps: [ 'three' ], exports: 'Detector' }, 'SVGRenderer': { deps: [ 'three' ], exports: 'THREE.SVGRenderer' }, 'CanvasRenderer': { deps: [ 'three' ], exports: 'THREE.CanvasRenderer' }, 'Projector': { deps: [ 'three' ], exports: 'THREE.Projector' }, 'TrackballControls': { deps: [ 'three' ], exports: 'THREE.TrackballControls' } } }); require(['three'],function(THREE){ window.THREE = THREE; require(['Detector','SVGRenderer','CanvasRenderer','Projector','TrackballControls'],function(Detector,SVGRenderer,CanvasRenderer,Projector,TrackballControls){ THREE.SVGRenderer = SVGRenderer; THREE.CanvasRenderer = CanvasRenderer; THREE.Projector = Projector; THREE.TrackballControls = TrackballControls; // COMMON_CODE_BLOCK_BEGIN var foldable = false; var container = document.getElementById( 'model22227422995' ); var renderer = Detector.webgl? new THREE.WebGLRenderer({antialias: true}): new THREE.CanvasRenderer({antialias: true}); var svgRenderer = new THREE.SVGRenderer({antialias: true}); var box = document.getElementsByClassName( 'threejs_output' )[0]; var width = box.clientWidth; var height = box.clientHeight; renderer.setSize(width, height); svgRenderer.setSize(width, height); renderer.setClearColor(0xFFFFFF, 1); svgRenderer.setClearColor(0xFFFFFF, 1); container.appendChild(renderer.domElement); var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, width/height, 0.1, 1000); var renderid; camera.position.set(0, 0, 5); camera.lookAt(0, 0, 0); camera.up.set(0, 1, 0); // class to allow move points together with labels and spheres var PMPoint = function (x,y,z) { this.vector = new THREE.Vector3(x,y,z); this.sprite = null; this.sphere = null; } PMPoint.prototype.makelabel = function(label) { this.sprite = textSprite( label ); this.sprite.position.copy(this.vector); } PMPoint.prototype.makesphere = function(radius,material) { this.sphere = new THREE.Mesh(new THREE.SphereGeometry(radius), material); this.sphere.position.copy(this.vector); } PMPoint.prototype.setX = function(x) { this.vector.setX(x); if (this.sprite) { this.sprite.position.setX(x); } if (this.sphere) { this.sphere.position.setX(x); } }; PMPoint.prototype.setY = function(y) { this.vector.setY(y); if (this.sprite) { this.sprite.position.setY(y); } if (this.sphere) { this.sphere.position.setY(y); } }; PMPoint.prototype.setZ = function(z) { this.vector.setZ(z); if (this.sprite) { this.sprite.position.setZ(z); } if (this.sphere) { this.sphere.position.setZ(z); } }; PMPoint.prototype.set = function(x,y,z) { this.vector.set(x,y,z); if (this.sprite) { this.sprite.position.set(x,y,z); } if (this.sphere) { this.sphere.position.set(x,y,z); } }; PMPoint.prototype.add = function(o) { if (this.sprite) { o.add(this.sprite); } if (this.sphere) { o.add(this.sphere); } }; var controls = new THREE.TrackballControls(camera, container); controls.zoomSpeed = 0.2; controls.rotateSpeed = 4; var all_objects = []; var centroids = []; // select the target node var target = document.querySelector('#model22227422995'); // create an observer instance var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.removedNodes && mutation.removedNodes.length > 0) { cancelAnimationFrame(renderId); observer.disconnect(); console.log("cancelled frame "+renderId); } }); }); // configuration of the observer: var config = { childList: true, characterData: true } // pass in the target node, as well as the observer options while (target) { if (target.className=="output") { observer.observe(target, config); break; } target = target.parentNode; } // COMMON_CODE_BLOCK_END var objectnames = ["unnamed__1","unnamed__2","unnamed__3","unnamed__4","unnamed__5","unnamed__6","unnamed__7","unnamed__8","unnamed__9","unnamed__10","unnamed__11","unnamed__12","unnamed__13","unnamed__14","unnamed__15","unnamed__16","unnamed__17","unnamed__18","unnamed__19","unnamed__20","unnamed__21","unnamed__22","unnamed__23","unnamed__24"]; var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 1, 1)); allpoints.push(new PMPoint(1, 2, 1)); allpoints.push(new PMPoint(1, 1, 2)); allpoints.push(new PMPoint(1, 2, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 0, 0)); allpoints.push(new PMPoint(-1, 0, 2)); allpoints.push(new PMPoint(-1, 2, 2)); allpoints.push(new PMPoint(-1, 2, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 1, 1)); allpoints.push(new PMPoint(1, 1, 2)); allpoints.push(new PMPoint(2, 1, 2)); allpoints.push(new PMPoint(2, 1, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -1, 0)); allpoints.push(new PMPoint(0, -1, 2)); allpoints.push(new PMPoint(2, -1, 2)); allpoints.push(new PMPoint(2, -1, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(0, 0, 2)); allpoints.push(new PMPoint(1, 1, 1)); allpoints.push(new PMPoint(1, 1, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 1, 1)); allpoints.push(new PMPoint(1, 2, 1)); allpoints.push(new PMPoint(2, 2, 1)); allpoints.push(new PMPoint(2, 1, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, -1)); allpoints.push(new PMPoint(0, 2, -1)); allpoints.push(new PMPoint(2, 2, -1)); allpoints.push(new PMPoint(2, 0, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(0, 2, 0)); allpoints.push(new PMPoint(1, 1, 1)); allpoints.push(new PMPoint(1, 2, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(1, 1, 1)); allpoints.push(new PMPoint(2, 1, 1)); allpoints.push(new PMPoint(2, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -1, -1)); allpoints.push(new PMPoint(-2, -1, 2)); allpoints.push(new PMPoint(-1, 0, 0)); allpoints.push(new PMPoint(-1, 0, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -2, -1)); allpoints.push(new PMPoint(-1, -2, 2)); allpoints.push(new PMPoint(0, -1, 0)); allpoints.push(new PMPoint(0, -1, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 0, 0)); allpoints.push(new PMPoint(-1, 0, 2)); allpoints.push(new PMPoint(0, 0, 2)); allpoints.push(new PMPoint(0, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -1, 0)); allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(0, -1, 2)); allpoints.push(new PMPoint(0, 0, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -1, -1)); allpoints.push(new PMPoint(-2, 2, -1)); allpoints.push(new PMPoint(-1, 0, 0)); allpoints.push(new PMPoint(-1, 2, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -1, -2)); allpoints.push(new PMPoint(-1, 2, -2)); allpoints.push(new PMPoint(0, 0, -1)); allpoints.push(new PMPoint(0, 2, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 0, 0)); allpoints.push(new PMPoint(-1, 2, 0)); allpoints.push(new PMPoint(0, 2, 0)); allpoints.push(new PMPoint(0, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, -1)); allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(0, 2, -1)); allpoints.push(new PMPoint(0, 2, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -2, -2)); allpoints.push(new PMPoint(-2, -1, -1)); allpoints.push(new PMPoint(-1, 0, 0)); allpoints.push(new PMPoint(0, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -2, -1)); allpoints.push(new PMPoint(2, -2, -1)); allpoints.push(new PMPoint(0, -1, 0)); allpoints.push(new PMPoint(2, -1, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -1, -2)); allpoints.push(new PMPoint(2, -1, -2)); allpoints.push(new PMPoint(0, 0, -1)); allpoints.push(new PMPoint(2, 0, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -1, 0)); allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(2, -1, 0)); allpoints.push(new PMPoint(2, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, -1)); allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(2, 0, -1)); allpoints.push(new PMPoint(2, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -2, -2)); allpoints.push(new PMPoint(0, 0, 0)); allpoints.push(new PMPoint(-1, -2, -1)); allpoints.push(new PMPoint(0, -1, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -2, -2)); allpoints.push(new PMPoint(-1, -1, -2)); allpoints.push(new PMPoint(0, 0, -1)); allpoints.push(new PMPoint(0, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); allpoints[2].makesphere(0.002,points_material); allpoints[3].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); line.vertices.push(allpoints[3].vector); line.vertices.push(allpoints[2].vector); line.vertices.push(allpoints[1].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); // COMMON_CODE_BLOCK_BEGIN var xRotationEnabled = false; var yRotationEnabled = false; var zRotationEnabled = false; var rotationSpeedFactor = 1; var settingsShown = false; var labelsShown = true; var intervals = []; var timeouts = []; var explodingSpeed = 0.05; var explodeScale = 0; var XMLS = new XMLSerializer(); var svgElement; var renderId; var render = function () { renderId = requestAnimationFrame(render); // comment in for automatic explosion // explode(updateFactor()); var phi = 0.02 * rotationSpeedFactor; if (xRotationEnabled){ scene.rotation.x += phi; } if(yRotationEnabled){ scene.rotation.y += phi; } if(zRotationEnabled){ scene.rotation.z += phi; } controls.update(); renderer.render(scene, camera); }; render(); function computeCentroid(geom) { centroid = new THREE.Vector3(); geom.vertices.forEach(function(v) { centroid.add(v); }); centroid.divideScalar(geom.vertices.length); return centroid; } function changeTransparency(event){ var opacity = 1-Number(event.currentTarget.value); for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ if (all_objects[i].children[j].material.type == "MultiMaterial") { for (var k=0; k<all_objects[i].children[j].material.materials.length; k++){ all_objects[i].children[j].material.materials[k].opacity = opacity; all_objects[i].children[j].material.materials[k].depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.materials[k].depthTest = opacity < 0.5 ? false : true; } } else if (all_objects[i].children[j].material.transparent && all_objects[i].children[j].material.type == "MeshBasicMaterial" && all_objects[i].children[j].geometry.type == "Geometry"){ all_objects[i].children[j].material.opacity = opacity; all_objects[i].children[j].material.depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.depthTest = opacity < 0.5 ? false : true; } } } } function changeRotationX(event){ xRotationEnabled = event.currentTarget.checked; } function changeRotationY(event){ yRotationEnabled = event.currentTarget.checked; } function changeRotationZ(event){ zRotationEnabled = event.currentTarget.checked; } function changeRotationSpeedFactor(event){ rotationSpeedFactor = Number(event.currentTarget.value); } function resetScene(){ scene.rotation.set(0,0,0); camera.position.set(0,0,5); camera.up.set(0,1,0); } function showSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_1').style.position = 'absolute'; document.getElementById('settings_1').style.display = 'block'; document.getElementById('showSettingsButton_1').style.display = 'none'; document.getElementById('hideSettingsButton_1').style.display = 'block'; settingsShown = true; } function hideSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_1').style.display = 'none'; document.getElementById('hideSettingsButton_1').style.display = 'none'; document.getElementById('showSettingsButton_1').style.display = 'block'; settingsShown = false; } var pos = 150* Math.PI; function updateFactor() { pos++; return Math.sin(.01*pos)+1; } function makelabel(message, x, y, z, params) { var spritey = textSprite( message, params ); spritey.position.set(x, y, z); obj.add(spritey); } function textSprite(message, parameters) { if ( parameters === undefined ) parameters = {}; var fontface = "Helvetica"; var fontsize = parameters.hasOwnProperty("fontsize") ? parameters["fontsize"] : 18; fontsize = fontsize*10; var canvas = document.createElement('canvas'); var size = 1024; canvas.width = size; canvas.height = size; var context = canvas.getContext('2d'); context.font = fontsize + "px " + fontface; // text color context.fillStyle = "rgba(0, 0, 0, 1.0)"; context.fillText(message, size/2, size/2); // canvas contents will be used for a texture var texture = new THREE.Texture(canvas); texture.needsUpdate = true; var spriteMaterial = new THREE.SpriteMaterial( {map: texture, useScreenCoordinates: false}); var sprite = new THREE.Sprite(spriteMaterial); return sprite; } function takeSvgScreenshot(){ if (labelsShown){ hideLabels(); } svgRenderer.render(scene,camera); svgElement = XMLS.serializeToString(svgRenderer.domElement); if (labelsShown){ displayLabels(); } if (document.getElementById('tab_1').checked){ //show in new tab var myWindow = window.open("",""); myWindow.document.body.innerHTML = svgElement; } else{ // download svg file download("screenshot.svg", svgElement); } } function showOrHideObject(event){ var nr = Number(event.currentTarget.name); all_objects[nr].visible = event.currentTarget.checked; } function displayOrHideOptionsRecursive( obj ) { for (var j=0; j<obj.children.length; j++) { var child = obj.children[j]; if (child.material===undefined && child) { displayOrHideOptionsRecursive( child ); } else { if (child.material.type == "MultiMaterial") { for (var k=0; k<child.material.materials.length; k++) { if (child.material.materials[k].transparent) { document.getElementById('transparency_1').style.display = 'block'; document.getElementById('transparencyRange_1').value = 1 - child.material.materials[k].opacity; return; } } } else if ( child.material.transparent && child.material.type == "MeshBasicMaterial" && child.geometry.type == "Geometry"){ document.getElementById('transparency_1').style.display = 'block'; return; } } } } function displayOrHideOptions() { for (var i=0; i<all_objects.length; i++) { var obj = all_objects[i]; displayOrHideOptionsRecursive( obj ); } } displayOrHideOptions() // ---------------------- EXPLOSION ------------------------------------------------ // --------------------------------------------------------------------------------- function explode(factor) { var obj, c; var c0 = centroids[0]; for (var i = 0; i<centroids.length; ++i) { c = centroids[i]; obj = all_objects[all_objects.length - centroids.length + i]; obj.position.set(c.x*factor, c.y*factor, c.z*factor); } } function triggerExplode(event){ explodeScale = Number(event.currentTarget.value); explode(explodeScale); } function setExplodingSpeed(event){ explodingSpeed = Number(event.currentTarget.value); } function triggerAutomaticExplode(event){ if (event.currentTarget.checked){ startExploding(); } else { clearIntervals(); } } function startExploding(){ intervals.push(setInterval(explodingInterval, 25)); } function explodingInterval(){ explodeScale += explodingSpeed; if (explodeScale <= 6){ explode(explodeScale); } else{ explode(6); explodeScale = 6; clearIntervals(); timeouts.push(setTimeout(startUnexploding, 3000)); } document.getElementById('explodeRange_1').value = explodeScale; } function startUnexploding(){ intervals.push(setInterval(unexplodingInterval, 25)); } function unexplodingInterval(){ explodeScale -= explodingSpeed; if (explodeScale >= 0){ explode(explodeScale); } else { explode(0); explodeScale = 0; clearIntervals(); timeouts.push(setTimeout(startExploding, 3000)); } document.getElementById('explodeRange_1').value = explodeScale; } function clearIntervals(){ intervals.forEach(function(interval){ clearInterval(interval); }); intervals = []; timeouts.forEach(function(timeout){ clearTimeout(timeout); }); timeouts = []; } // append checkboxes for displaying or hiding objects var shownObjectsList = document.getElementById('shownObjectsList_1'); for (var i=0; i<all_objects.length; i++){ var objNode = document.createElement('span'); objNode.innerHTML = objectnames[i] + '<br>'; var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = true; checkbox.name = String(i); checkbox.onchange = showOrHideObject; shownObjectsList.appendChild(checkbox); shownObjectsList.appendChild(objNode); } function displayLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = true; } } } } function hideLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = false; } } } } function displayOrHideLabels(event){ if (event.currentTarget.checked){ displayLabels(); labelsShown = true; } else { hideLabels(); labelsShown = false; } } function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } var tempobj; tempobj = document.getElementById('explodeRange_1'); if (tempobj) { tempobj.oninput = triggerExplode; document.getElementById('explodeCheckbox_1').onchange = triggerAutomaticExplode; document.getElementById('explodingSpeedRange_1').oninput = setExplodingSpeed; } tempobj = document.getElementById('foldRange_1'); if (tempobj) { tempobj.oninput = fold; } document.getElementById('transparencyRange_1').oninput = changeTransparency; document.getElementById('changeRotationX_1').onchange = changeRotationX; document.getElementById('changeRotationY_1').onchange = changeRotationY; document.getElementById('changeRotationZ_1').onchange = changeRotationZ; document.getElementById('resetButton_1').onclick = resetScene; document.getElementById('rotationSpeedRange_1').oninput = changeRotationSpeedFactor; document.getElementById('labelsCheckboxInput_1').onchange = displayOrHideLabels; document.getElementById('takeScreenshot_1').onclick = takeSvgScreenshot; document.getElementById('showSettingsButton_1').onclick = showSettings; document.getElementById('hideSettingsButton_1').onclick = hideSettings; // ------------------ SHORTCUTS -------------------------------------------- // ------------------------------------------------------------------------- /** * http://www.openjs.com/scripts/events/keyboard_shortcuts/ * Version : 2.01.B * By Binny V A * License : BSD */ shortcut = { 'all_shortcuts':{},//All the shortcuts are stored in this array 'add': function(shortcut_combination,callback,opt) { //Provide a set of default options var default_options = { 'type':'keydown', 'propagate':false, 'disable_in_input':false, 'target':document, 'keycode':false } if(!opt) opt = default_options; else { for(var dfo in default_options) { if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo]; } } var ele = opt.target; if(typeof opt.target == 'string') ele = document.getElementById(opt.target); var ths = this; shortcut_combination = shortcut_combination.toLowerCase(); //The function to be called at keypress var func = function(e) { e = e || window.event; if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields var element; if(e.target) element=e.target; else if(e.srcElement) element=e.srcElement; if(element.nodeType==3) element=element.parentNode; if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return; } //Find Which key is pressed if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which; var character = String.fromCharCode(code).toLowerCase(); if(code == 188) character=","; //If the user presses , when the type is onkeydown if(code == 190) character="."; //If the user presses , when the type is onkeydown var keys = shortcut_combination.split("+"); //Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked var kp = 0; //Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken var shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", ".":">", "/":"?", "\\":"|" } //Special Keys - and their codes var special_keys = { 'esc':27, 'escape':27, 'tab':9, 'space':32, 'return':13, 'enter':13, 'backspace':8, 'scrolllock':145, 'scroll_lock':145, 'scroll':145, 'capslock':20, 'caps_lock':20, 'caps':20, 'numlock':144, 'num_lock':144, 'num':144, 'pause':19, 'break':19, 'insert':45, 'home':36, 'delete':46, 'end':35, 'pageup':33, 'page_up':33, 'pu':33, 'pagedown':34, 'page_down':34, 'pd':34, 'left':37, 'up':38, 'right':39, 'down':40, 'f1':112, 'f2':113, 'f3':114, 'f4':115, 'f5':116, 'f6':117, 'f7':118, 'f8':119, 'f9':120, 'f10':121, 'f11':122, 'f12':123 } var modifiers = { shift: { wanted:false, pressed:false}, ctrl : { wanted:false, pressed:false}, alt : { wanted:false, pressed:false}, meta : { wanted:false, pressed:false} //Meta is Mac specific }; if(e.ctrlKey) modifiers.ctrl.pressed = true; if(e.shiftKey) modifiers.shift.pressed = true; if(e.altKey) modifiers.alt.pressed = true; if(e.metaKey) modifiers.meta.pressed = true; for(var i=0; k=keys[i],i<keys.length; i++) { //Modifiers if(k == 'ctrl' || k == 'control') { kp++; modifiers.ctrl.wanted = true; } else if(k == 'shift') { kp++; modifiers.shift.wanted = true; } else if(k == 'alt') { kp++; modifiers.alt.wanted = true; } else if(k == 'meta') { kp++; modifiers.meta.wanted = true; } else if(k.length > 1) { //If it is a special key if(special_keys[k] == code) kp++; } else if(opt['keycode']) { if(opt['keycode'] == code) kp++; } else { //The special keys did not match if(character == k) kp++; else { if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase character = shift_nums[character]; if(character == k) kp++; } } } } if(kp == keys.length && modifiers.ctrl.pressed == modifiers.ctrl.wanted && modifiers.shift.pressed == modifiers.shift.wanted && modifiers.alt.pressed == modifiers.alt.wanted && modifiers.meta.pressed == modifiers.meta.wanted) { callback(e); if(!opt['propagate']) { //Stop the event //e.cancelBubble is supported by IE - this will kill the bubbling process. e.cancelBubble = true; e.returnValue = false; //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } return false; } } } this.all_shortcuts[shortcut_combination] = { 'callback':func, 'target':ele, 'event': opt['type'] }; //Attach the function with the event if(ele.addEventListener) ele.addEventListener(opt['type'], func, false); else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func); else ele['on'+opt['type']] = func; }, //Remove the shortcut - just specify the shortcut and I will remove the binding 'remove':function(shortcut_combination) { shortcut_combination = shortcut_combination.toLowerCase(); var binding = this.all_shortcuts[shortcut_combination]; delete(this.all_shortcuts[shortcut_combination]) if(!binding) return; var type = binding['event']; var ele = binding['target']; var callback = binding['callback']; if(ele.detachEvent) ele.detachEvent('on'+type, callback); else if(ele.removeEventListener) ele.removeEventListener(type, callback, false); else ele['on'+type] = false; } } shortcut.add("Alt+Left",function() { var event = new Event('click'); if (settingsShown){ document.getElementById('hideSettingsButton_1').dispatchEvent(event); } else{ document.getElementById('showSettingsButton_1').dispatchEvent(event); } }); if (foldable) moveToBaryCenter(); });}); // COMMON_CODE_BLOCK_END </script> </body> </html> </div> </HTML> ==== B: exporting tropical surfaces from polymake ==== There are many options one can pass to a VISUAL routine in Polymake in order to customize the look of the exported 3d-model. Some of them are useful for 3d printing, others should rather stay hidden. The most basic configuration is the following, which tells polymake not to visualize the vertices and edges. <code perl> > $surface_opts = {VertexStyle=>'hidden', EdgeStyle=>'hidden'}; > x3d($TQuadric->VISUAL($surface_opts), File=>$x3d_dir."filename.x3d"); </code> One can also explicitely specify the bounding box of the model. This is very useful when creating one model from multiple objects, e.g., a tropical curve on a tropical surface. The first line below creates a bounding box around the vertices of the tropical surface: <code perl> > $bFacets = polytope::bounding_box_facets($TQuadric->affine_chart->VERTICES,offset=>1,surplus_k=>0.4, make_cube=>1); > x3d($TQuadric->VISUAL($surface_opts,BoundingFacets=>$bFacets),File=>$x3d_dir."TQuadric.x3d"); </code> For more options, please see the polymake tutorial on visualization. ==== C: solidifying tropical surfaces ==== All 3d printable models need volume. This can be done by solidifying the surface in Blender and/or Polymake. === Option A: Blender === The following tutorial was made in blender 2.81. - Import the previously exported x3d file of the surface,\\ {{:tutorials:release:4.1:3d_printing_with_x3d:imported_quadric.png|imported_quadric.png}} - Select all layers (click onselect single layer, press 'A') and join them\\ {{:tutorials:release:4.1:3d_printing_with_x3d:joined_quadric.png|joined_quadric.png}} - Select modifier properties\\ {{:tutorials:release:4.1:3d_printing_with_x3d:modifier_properties.png|modifier_properties.png}} - Add a **Solidify** modifier, set //Offset// to 0 and //Thickness// sufficiently large\\ {{:tutorials:release:4.1:3d_printing_with_x3d:solidified_quadric.png|solidified_quadric.png}} - Add a **Bevel** modifier and adjust //Segments//, //Width// (optional)\\ {{:tutorials:release:4.1:3d_printing_with_x3d:beveled_quadric.png|beveled_quadric.png}} === Option B: in polymake === To solidify the surface in polymake, we need to decide on the planned size of the model and the desired cell thickness. A minimal thickness of 2mm is recommended for printing with plastics. <code perl> > $total_mm = 100; #planned size of the model > $surface_mm = 2; #desired cell thickness > > $bFacets = polytope::bounding_box_facets($TQuadric->affine_chart->VERTICES,offset=>1,surplus_k=>0.4, make_cube=>1); > $diam = $bFacets->[0]->[0] + $bFacets->[1]->[0]; > $surface_abs = $surface_mm * $diam/$total_mm; #absolute surface thickness in the x3d file > $solidifiedQuadricCells = solidify_2d_pcom($TQuadric->affine_chart,$surface_abs); > @solidifiedQuadricCellsVis = map { $_->VISUAL($surface_opts,BoundingFacets=>$bFacets) } @$solidifiedQuadricCells; > x3d(compose(@solidifiedQuadricCellsVis),File=>$x3d_dir."TQuadricSolidified.x3d"); > compose(@solidifiedQuadricCellsVis); </code> <HTML> <div class="threejs_output"><!-- polymake for knusper Thu Apr 30 10:10:55 2020 _bounded --> <html> <head> <title>_bounded</title> <style> /* // COMMON_CODE_BLOCK_BEGIN */ html{overflow: scroll;} .threejs_output { font-family: Arial, Helvetica, sans-serif} strong{font-size: 18px;} canvas { z-index: 8; } input[type='range'] {} input[type='radio'] {margin-left:0;} input[type='checkbox'] {margin-right:7px; margin-left: 0px; padding-left:0px;} .group{padding-bottom: 40px;} .settings * {z-index: 11; } .settings{z-index: 10; margin-left: 30px; display: none; width: 14em; height: 90%; border: solid 1px silver; padding: 2px; overflow-y: scroll; background-color: white } .indented{margin-left: 20px; margin-top: 15px; padding-bottom: 0px;} .shownObjectsList{overflow: auto; max-width: 150px; max-height: 150px;} .showSettingsButton{display: block; z-index: 12; position: absolute } .hideSettingsButton{display: none; z-index: 12; position: absolute; opacity: 0.5} .resetButton{margin-top: 20px;} button{margin-left: 0;} img{cursor: pointer;} .suboption{padding-top: 30px;} .transparency{display: none;} .labelsCheckbox{margin-top: 10px;} input[type=range] { -webkit-appearance: none; padding:0; width:90%; margin-left: auto; margin-right: auto; margin-top: 20px; display: block; } input[type=range]:focus { outline: none; } input[type=range]::-webkit-slider-runnable-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-webkit-slider-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; -webkit-appearance: none; margin-top: -5px; } input[type=range]:focus::-webkit-slider-runnable-track { background: #E3E3E3; } input[type=range]::-moz-range-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-moz-range-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]::-ms-track { height: 4px; cursor: pointer; animate: 0.2s; background: transparent; border-color: transparent; color: transparent; } input[type=range]::-ms-fill-lower { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-fill-upper { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]:focus::-ms-fill-lower { background: #E3E3E3; } input[type=range]:focus::-ms-fill-upper { background: #E3E3E3; } /* // COMMON_CODE_BLOCK_END */ </style> </head> <body> <div id='settings_2' class='settings'> <div class=group id='explode_2'> <strong>Explode</strong> <input id='explodeRange_2' type='range' min=0 max=6 step=0.01 value=0> <div class=indented><input id='explodeCheckbox_2' type='checkbox'>Automatic explosion</div> <div class=suboption>Exploding speed</div> <input id='explodingSpeedRange_2' type='range' min=0 max=0.5 step=0.001 value=0.05> </div> <div class=group id='transparency_2' class='transparency'> <strong>Transparency</strong> <input id='transparencyRange_2' type='range' min=0 max=1 step=0.01 value=0> </div> <div class=group id='rotation_2'> <strong>Rotation</strong> <div class=indented> <div><input type='checkbox' id='changeRotationX_2'> x-axis</div> <div><input type='checkbox' id='changeRotationY_2'> y-axis</div> <div><input type='checkbox' id='changeRotationZ_2'> z-axis</div> <button id='resetButton_2' class='resetButton' >Reset</button> </div> <div class=suboption>Rotation speed</div> <input id='rotationSpeedRange_2' type='range' min=0 max=5 step=0.01 value=2> </div> <div class=group id='display_2'> <strong>Display</strong> <div class=indented> <div id='shownObjectsList_2' class='shownObjectsList'></div> <div class='labelsCheckbox'><input type='checkbox' id='labelsCheckboxInput_2' checked>Labels</div> </div> </div> <div class=group id='svg_2'> <strong>SVG</strong> <div class=indented> <form> <input type="radio" name='screenshotMode' value='download' id='download_2' checked> Download<br> <input type="radio" name='screenshotMode' value='tab' id='tab_2' > New tab<br> </form> <button id='takeScreenshot_2'>Screenshot</button> </div> </div> </div> <!-- end of settings --> <img id='hideSettingsButton_2' style="display: none" class='hideSettingsButton' src='/kernelspecs/polymake/close.svg' width=20px"> <img id='showSettingsButton_2' class='showSettingsButton' src='/kernelspecs/polymake/menu.svg' width=20px"> <div id="model47145495474"></div> <script> requirejs.config({ paths: { three: '/kernelspecs/polymake/three', Detector: '/kernelspecs/polymake/Detector', SVGRenderer: '/kernelspecs/polymake/SVGRenderer', CanvasRenderer: '/kernelspecs/polymake/CanvasRenderer', Projector: '/kernelspecs/polymake/Projector', TrackballControls: '/kernelspecs/polymake/TrackballControls' }, shim: { 'three': { exports: 'THREE' }, 'Detector': { deps: [ 'three' ], exports: 'Detector' }, 'SVGRenderer': { deps: [ 'three' ], exports: 'THREE.SVGRenderer' }, 'CanvasRenderer': { deps: [ 'three' ], exports: 'THREE.CanvasRenderer' }, 'Projector': { deps: [ 'three' ], exports: 'THREE.Projector' }, 'TrackballControls': { deps: [ 'three' ], exports: 'THREE.TrackballControls' } } }); require(['three'],function(THREE){ window.THREE = THREE; require(['Detector','SVGRenderer','CanvasRenderer','Projector','TrackballControls'],function(Detector,SVGRenderer,CanvasRenderer,Projector,TrackballControls){ THREE.SVGRenderer = SVGRenderer; THREE.CanvasRenderer = CanvasRenderer; THREE.Projector = Projector; THREE.TrackballControls = TrackballControls; // COMMON_CODE_BLOCK_BEGIN var foldable = false; var container = document.getElementById( 'model47145495474' ); var renderer = Detector.webgl? new THREE.WebGLRenderer({antialias: true}): new THREE.CanvasRenderer({antialias: true}); var svgRenderer = new THREE.SVGRenderer({antialias: true}); var box = document.getElementsByClassName( 'threejs_output' )[0]; var width = box.clientWidth; var height = box.clientHeight; renderer.setSize(width, height); svgRenderer.setSize(width, height); renderer.setClearColor(0xFFFFFF, 1); svgRenderer.setClearColor(0xFFFFFF, 1); container.appendChild(renderer.domElement); var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, width/height, 0.1, 1000); var renderid; camera.position.set(0, 0, 5); camera.lookAt(0, 0, 0); camera.up.set(0, 1, 0); // class to allow move points together with labels and spheres var PMPoint = function (x,y,z) { this.vector = new THREE.Vector3(x,y,z); this.sprite = null; this.sphere = null; } PMPoint.prototype.makelabel = function(label) { this.sprite = textSprite( label ); this.sprite.position.copy(this.vector); } PMPoint.prototype.makesphere = function(radius,material) { this.sphere = new THREE.Mesh(new THREE.SphereGeometry(radius), material); this.sphere.position.copy(this.vector); } PMPoint.prototype.setX = function(x) { this.vector.setX(x); if (this.sprite) { this.sprite.position.setX(x); } if (this.sphere) { this.sphere.position.setX(x); } }; PMPoint.prototype.setY = function(y) { this.vector.setY(y); if (this.sprite) { this.sprite.position.setY(y); } if (this.sphere) { this.sphere.position.setY(y); } }; PMPoint.prototype.setZ = function(z) { this.vector.setZ(z); if (this.sprite) { this.sprite.position.setZ(z); } if (this.sphere) { this.sphere.position.setZ(z); } }; PMPoint.prototype.set = function(x,y,z) { this.vector.set(x,y,z); if (this.sprite) { this.sprite.position.set(x,y,z); } if (this.sphere) { this.sphere.position.set(x,y,z); } }; PMPoint.prototype.add = function(o) { if (this.sprite) { o.add(this.sprite); } if (this.sphere) { o.add(this.sphere); } }; var controls = new THREE.TrackballControls(camera, container); controls.zoomSpeed = 0.2; controls.rotateSpeed = 4; var all_objects = []; var centroids = []; // select the target node var target = document.querySelector('#model47145495474'); // create an observer instance var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.removedNodes && mutation.removedNodes.length > 0) { cancelAnimationFrame(renderId); observer.disconnect(); console.log("cancelled frame "+renderId); } }); }); // configuration of the observer: var config = { childList: true, characterData: true } // pass in the target node, as well as the observer options while (target) { if (target.className=="output") { observer.observe(target, config); break; } target = target.parentNode; } // COMMON_CODE_BLOCK_END var objectnames = ["_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded"]; var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1.056, 2.8, 2.8)); allpoints.push(new PMPoint(0.944, 2.8, 2.8)); allpoints.push(new PMPoint(0.944, 1, 2.8)); allpoints.push(new PMPoint(0.944, 1, 1)); allpoints.push(new PMPoint(0.944, 2.8, 1)); allpoints.push(new PMPoint(1.056, 1, 2.8)); allpoints.push(new PMPoint(1.056, 1, 1)); allpoints.push(new PMPoint(1.056, 2.8, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.944, 2.8, 2.8)); allpoints.push(new PMPoint(-1.056, 2.8, 2.8)); allpoints.push(new PMPoint(-1.056, 0, 2.8)); allpoints.push(new PMPoint(-1.056, 0, 0)); allpoints.push(new PMPoint(-1.056, 2.8, 0)); allpoints.push(new PMPoint(-0.944, 0, 2.8)); allpoints.push(new PMPoint(-0.944, 0, 0)); allpoints.push(new PMPoint(-0.944, 2.8, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, 1.056, 2.8)); allpoints.push(new PMPoint(2.8, 0.944, 2.8)); allpoints.push(new PMPoint(1, 1.056, 2.8)); allpoints.push(new PMPoint(1, 0.944, 2.8)); allpoints.push(new PMPoint(2.8, 1.056, 1)); allpoints.push(new PMPoint(2.8, 0.944, 1)); allpoints.push(new PMPoint(1, 1.056, 1)); allpoints.push(new PMPoint(1, 0.944, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, -0.944, 2.8)); allpoints.push(new PMPoint(2.8, -1.056, 2.8)); allpoints.push(new PMPoint(2.8, -1.056, 0)); allpoints.push(new PMPoint(0, -0.944, 2.8)); allpoints.push(new PMPoint(0, -1.056, 2.8)); allpoints.push(new PMPoint(0, -1.056, 0)); allpoints.push(new PMPoint(0, -0.944, 0)); allpoints.push(new PMPoint(2.8, -0.944, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 5, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 7, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.039598, -0.039598, 2.8)); allpoints.push(new PMPoint(1.0396, 0.960402, 2.8)); allpoints.push(new PMPoint(1.0396, 0.960402, 1)); allpoints.push(new PMPoint(-0.039598, 0.039598, 2.8)); allpoints.push(new PMPoint(0.960402, 1.0396, 2.8)); allpoints.push(new PMPoint(0.960402, 1.0396, 1)); allpoints.push(new PMPoint(-0.039598, 0.039598, 0)); allpoints.push(new PMPoint(0.039598, -0.039598, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 2, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 3, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 2, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 1, 4, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 4, 3, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, 2.8, 1.056)); allpoints.push(new PMPoint(2.8, 2.8, 0.944)); allpoints.push(new PMPoint(1, 2.8, 1.056)); allpoints.push(new PMPoint(1, 2.8, 0.944)); allpoints.push(new PMPoint(1, 1, 1.056)); allpoints.push(new PMPoint(1, 1, 0.944)); allpoints.push(new PMPoint(2.8, 1, 1.056)); allpoints.push(new PMPoint(2.8, 1, 0.944)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, 2.8, -0.944)); allpoints.push(new PMPoint(2.8, 2.8, -1.056)); allpoints.push(new PMPoint(0, 2.8, -0.944)); allpoints.push(new PMPoint(0, 2.8, -1.056)); allpoints.push(new PMPoint(0, 0, -0.944)); allpoints.push(new PMPoint(0, 0, -1.056)); allpoints.push(new PMPoint(2.8, 0, -0.944)); allpoints.push(new PMPoint(2.8, 0, -1.056)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1.0396, 2.8, 0.960402)); allpoints.push(new PMPoint(0.039598, 2.8, -0.039598)); allpoints.push(new PMPoint(0.960402, 2.8, 1.0396)); allpoints.push(new PMPoint(-0.039598, 2.8, 0.039598)); allpoints.push(new PMPoint(0.960402, 1, 1.0396)); allpoints.push(new PMPoint(-0.039598, 0, 0.039598)); allpoints.push(new PMPoint(1.0396, 1, 0.960402)); allpoints.push(new PMPoint(0.039598, 0, -0.039598)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, 1.0396, 0.960402)); allpoints.push(new PMPoint(2.8, 0.960402, 1.0396)); allpoints.push(new PMPoint(2.8, -0.039598, 0.039598)); allpoints.push(new PMPoint(1, 0.960402, 1.0396)); allpoints.push(new PMPoint(0, -0.039598, 0.039598)); allpoints.push(new PMPoint(2.8, 0.039598, -0.039598)); allpoints.push(new PMPoint(1, 1.0396, 0.960402)); allpoints.push(new PMPoint(0, 0.039598, -0.039598)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.8, -1.7208, 2.8)); allpoints.push(new PMPoint(-2.8, -1.8792, 2.8)); allpoints.push(new PMPoint(-0.960402, -0.039598, 2.8)); allpoints.push(new PMPoint(-0.960402, -0.039598, 0)); allpoints.push(new PMPoint(-2.8, -1.8792, -1.8396)); allpoints.push(new PMPoint(-1.0396, 0.039598, 2.8)); allpoints.push(new PMPoint(-1.0396, 0.039598, 0)); allpoints.push(new PMPoint(-2.8, -1.7208, -1.7604)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.8792, -2.8, 2.8)); allpoints.push(new PMPoint(-1.7208, -2.8, 2.8)); allpoints.push(new PMPoint(0.039598, -1.0396, 2.8)); allpoints.push(new PMPoint(0.039598, -1.0396, 0)); allpoints.push(new PMPoint(-1.7208, -2.8, -1.7604)); allpoints.push(new PMPoint(-0.039598, -0.960402, 2.8)); allpoints.push(new PMPoint(-0.039598, -0.960402, 0)); allpoints.push(new PMPoint(-1.8792, -2.8, -1.8396)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -0.056, 2.8)); allpoints.push(new PMPoint(-1, 0.056, 2.8)); allpoints.push(new PMPoint(0, 0.056, 2.8)); allpoints.push(new PMPoint(-1, 0.056, 0)); allpoints.push(new PMPoint(0, 0.056, 0)); allpoints.push(new PMPoint(0, -0.056, 2.8)); allpoints.push(new PMPoint(-1, -0.056, 0)); allpoints.push(new PMPoint(0, -0.056, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 4, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 2, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 4, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 3, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 3, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.056, -1, 2.8)); allpoints.push(new PMPoint(-0.056, 0, 2.8)); allpoints.push(new PMPoint(0.056, -1, 2.8)); allpoints.push(new PMPoint(0.056, 0, 2.8)); allpoints.push(new PMPoint(0.056, -1, 0)); allpoints.push(new PMPoint(0.056, 0, 0)); allpoints.push(new PMPoint(-0.056, -1, 0)); allpoints.push(new PMPoint(-0.056, 0, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 2, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.8, 2.8, -1.7208)); allpoints.push(new PMPoint(-2.8, 2.8, -1.8792)); allpoints.push(new PMPoint(-0.960402, 2.8, -0.039598)); allpoints.push(new PMPoint(-0.960402, 0, -0.039598)); allpoints.push(new PMPoint(-2.8, -1.8396, -1.8792)); allpoints.push(new PMPoint(-1.0396, 2.8, 0.039598)); allpoints.push(new PMPoint(-1.0396, 0, 0.039598)); allpoints.push(new PMPoint(-2.8, -1.7604, -1.7208)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 1, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 7, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.8792, 2.8, -2.8)); allpoints.push(new PMPoint(-1.7208, 2.8, -2.8)); allpoints.push(new PMPoint(-1.7208, -1.7604, -2.8)); allpoints.push(new PMPoint(0.039598, 2.8, -1.0396)); allpoints.push(new PMPoint(0.039598, 0, -1.0396)); allpoints.push(new PMPoint(-1.8792, -1.8396, -2.8)); allpoints.push(new PMPoint(-0.039598, 2.8, -0.960402)); allpoints.push(new PMPoint(-0.039598, 0, -0.960402)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 2.8, -0.056)); allpoints.push(new PMPoint(-1, 2.8, 0.056)); allpoints.push(new PMPoint(0, 2.8, 0.056)); allpoints.push(new PMPoint(0, 2.8, -0.056)); allpoints.push(new PMPoint(-1, 0, -0.056)); allpoints.push(new PMPoint(-1, 0, 0.056)); allpoints.push(new PMPoint(0, 0, 0.056)); allpoints.push(new PMPoint(0, 0, -0.056)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.056, 2.8, -1)); allpoints.push(new PMPoint(-0.056, 2.8, 0)); allpoints.push(new PMPoint(0.056, 2.8, -1)); allpoints.push(new PMPoint(0.056, 2.8, 0)); allpoints.push(new PMPoint(0.056, 0, -1)); allpoints.push(new PMPoint(0.056, 0, 0)); allpoints.push(new PMPoint(-0.056, 0, -1)); allpoints.push(new PMPoint(-0.056, 0, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.8, -2.8, -2.8)); allpoints.push(new PMPoint(-2.8, -2.7208, -2.8)); allpoints.push(new PMPoint(-2.7604, -2.7208, -2.8)); allpoints.push(new PMPoint(-2.8, -1.7604, -1.8396)); allpoints.push(new PMPoint(-1, 0.039598, -0.039598)); allpoints.push(new PMPoint(0, 0.039598, -0.039598)); allpoints.push(new PMPoint(-2.8, -2.8, -2.7208)); allpoints.push(new PMPoint(-2.7604, -2.8, -2.7208)); allpoints.push(new PMPoint(-2.8, -1.8396, -1.7604)); allpoints.push(new PMPoint(-1, -0.039598, 0.039598)); allpoints.push(new PMPoint(0, -0.039598, 0.039598)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); faces.vertices.push(allpoints[10].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 10, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 7, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 10, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(9, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 10, 9, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 9, 8, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 8, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 3, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(8, 9, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(8, 4, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(6, 8, 3, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(6, 3, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(6, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 7, 6, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 7)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, -2.8, -1.7208)); allpoints.push(new PMPoint(2.8, -2.8, -1.8792)); allpoints.push(new PMPoint(2.8, -0.960402, -0.039598)); allpoints.push(new PMPoint(-1.7604, -2.8, -1.7208)); allpoints.push(new PMPoint(-1.8396, -2.8, -1.8792)); allpoints.push(new PMPoint(2.8, -1.0396, 0.039598)); allpoints.push(new PMPoint(0, -1.0396, 0.039598)); allpoints.push(new PMPoint(0, -0.960402, -0.039598)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, -1.8792, -2.8)); allpoints.push(new PMPoint(2.8, -1.7208, -2.8)); allpoints.push(new PMPoint(2.8, 0.039598, -1.0396)); allpoints.push(new PMPoint(-1.8396, -1.8792, -2.8)); allpoints.push(new PMPoint(-1.7604, -1.7208, -2.8)); allpoints.push(new PMPoint(2.8, -0.039598, -0.960402)); allpoints.push(new PMPoint(0, -0.039598, -0.960402)); allpoints.push(new PMPoint(0, 0.039598, -1.0396)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, -1, -0.056)); allpoints.push(new PMPoint(2.8, 0, -0.056)); allpoints.push(new PMPoint(2.8, -1, 0.056)); allpoints.push(new PMPoint(2.8, 0, 0.056)); allpoints.push(new PMPoint(0, -1, -0.056)); allpoints.push(new PMPoint(0, 0, -0.056)); allpoints.push(new PMPoint(0, -1, 0.056)); allpoints.push(new PMPoint(0, 0, 0.056)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 0, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 2, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 4, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, -0.056, -1)); allpoints.push(new PMPoint(2.8, 0.056, -1)); allpoints.push(new PMPoint(2.8, 0.056, 0)); allpoints.push(new PMPoint(2.8, -0.056, 0)); allpoints.push(new PMPoint(0, -0.056, -1)); allpoints.push(new PMPoint(0, 0.056, -1)); allpoints.push(new PMPoint(0, 0.056, 0)); allpoints.push(new PMPoint(0, -0.056, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.8, -2.8, -2.8)); allpoints.push(new PMPoint(-2.7208, -2.8, -2.8)); allpoints.push(new PMPoint(-2.7208, -2.7604, -2.8)); allpoints.push(new PMPoint(-1.7604, -2.8, -1.8396)); allpoints.push(new PMPoint(0.039598, -1, -0.039598)); allpoints.push(new PMPoint(0.039598, 0, -0.039598)); allpoints.push(new PMPoint(-2.8, -2.8, -2.7208)); allpoints.push(new PMPoint(-1.8396, -2.8, -1.7604)); allpoints.push(new PMPoint(-0.039598, -1, 0.039598)); allpoints.push(new PMPoint(-0.039598, 0, 0.039598)); allpoints.push(new PMPoint(-2.8, -2.7604, -2.7208)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); faces.vertices.push(allpoints[10].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(9, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 2, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 0, 10, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 9, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 9, 8, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 4, 8, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 8, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(9, 10, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(9, 6, 7, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(9, 7, 8, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(10, 0, 6, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 3, 7, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 7)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.8, -2.8, -2.8)); allpoints.push(new PMPoint(-2.7208, -2.8, -2.8)); allpoints.push(new PMPoint(-1.7604, -1.8396, -2.8)); allpoints.push(new PMPoint(0.039598, -0.039598, -1)); allpoints.push(new PMPoint(0.039598, -0.039598, 0)); allpoints.push(new PMPoint(-2.7208, -2.8, -2.7604)); allpoints.push(new PMPoint(-2.8, -2.7208, -2.8)); allpoints.push(new PMPoint(-1.8396, -1.7604, -2.8)); allpoints.push(new PMPoint(-0.039598, 0.039598, -1)); allpoints.push(new PMPoint(-0.039598, 0.039598, 0)); allpoints.push(new PMPoint(-2.8, -2.7208, -2.7604)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); faces.vertices.push(allpoints[10].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(9, 10, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 0, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 5, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 10, 9, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 9, 8, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 8, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 2, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 7, 8, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(9, 4, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(9, 3, 8, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 1, 2, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 2, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 10, 6, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(5, 0, 1, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(0, 6, 7, undefined, undefined, 7)); faces.faces.push(new THREE.Face3(0, 7, 2, undefined, undefined, 7)); faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 7)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.944, 2.8, 2.8)); allpoints.push(new PMPoint(-1.056, 2.8, 2.8)); allpoints.push(new PMPoint(-1.056, 0, 2.8)); allpoints.push(new PMPoint(-1.056, 0, 0)); allpoints.push(new PMPoint(-1.056, 2.8, 0)); allpoints.push(new PMPoint(-0.944, 0, 2.8)); allpoints.push(new PMPoint(-0.944, 0, 0)); allpoints.push(new PMPoint(-0.944, 2.8, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, 1.056, 2.8)); allpoints.push(new PMPoint(2.8, 0.944, 2.8)); allpoints.push(new PMPoint(1, 1.056, 2.8)); allpoints.push(new PMPoint(1, 0.944, 2.8)); allpoints.push(new PMPoint(2.8, 1.056, 1)); allpoints.push(new PMPoint(2.8, 0.944, 1)); allpoints.push(new PMPoint(1, 1.056, 1)); allpoints.push(new PMPoint(1, 0.944, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, -0.944, 2.8)); allpoints.push(new PMPoint(2.8, -1.056, 2.8)); allpoints.push(new PMPoint(2.8, -1.056, 0)); allpoints.push(new PMPoint(0, -0.944, 2.8)); allpoints.push(new PMPoint(0, -1.056, 2.8)); allpoints.push(new PMPoint(0, -1.056, 0)); allpoints.push(new PMPoint(0, -0.944, 0)); allpoints.push(new PMPoint(2.8, -0.944, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 5, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 7, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.039598, -0.039598, 2.8)); allpoints.push(new PMPoint(1.0396, 0.960402, 2.8)); allpoints.push(new PMPoint(1.0396, 0.960402, 1)); allpoints.push(new PMPoint(-0.039598, 0.039598, 2.8)); allpoints.push(new PMPoint(0.960402, 1.0396, 2.8)); allpoints.push(new PMPoint(0.960402, 1.0396, 1)); allpoints.push(new PMPoint(-0.039598, 0.039598, 0)); allpoints.push(new PMPoint(0.039598, -0.039598, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 2, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 3, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 2, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 1, 4, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 4, 3, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, 2.8, 1.056)); allpoints.push(new PMPoint(2.8, 2.8, 0.944)); allpoints.push(new PMPoint(1, 2.8, 1.056)); allpoints.push(new PMPoint(1, 2.8, 0.944)); allpoints.push(new PMPoint(1, 1, 1.056)); allpoints.push(new PMPoint(1, 1, 0.944)); allpoints.push(new PMPoint(2.8, 1, 1.056)); allpoints.push(new PMPoint(2.8, 1, 0.944)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, 2.8, -0.944)); allpoints.push(new PMPoint(2.8, 2.8, -1.056)); allpoints.push(new PMPoint(0, 2.8, -0.944)); allpoints.push(new PMPoint(0, 2.8, -1.056)); allpoints.push(new PMPoint(0, 0, -0.944)); allpoints.push(new PMPoint(0, 0, -1.056)); allpoints.push(new PMPoint(2.8, 0, -0.944)); allpoints.push(new PMPoint(2.8, 0, -1.056)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1.0396, 2.8, 0.960402)); allpoints.push(new PMPoint(0.039598, 2.8, -0.039598)); allpoints.push(new PMPoint(0.960402, 2.8, 1.0396)); allpoints.push(new PMPoint(-0.039598, 2.8, 0.039598)); allpoints.push(new PMPoint(0.960402, 1, 1.0396)); allpoints.push(new PMPoint(-0.039598, 0, 0.039598)); allpoints.push(new PMPoint(1.0396, 1, 0.960402)); allpoints.push(new PMPoint(0.039598, 0, -0.039598)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, 1.0396, 0.960402)); allpoints.push(new PMPoint(2.8, 0.960402, 1.0396)); allpoints.push(new PMPoint(2.8, -0.039598, 0.039598)); allpoints.push(new PMPoint(1, 0.960402, 1.0396)); allpoints.push(new PMPoint(0, -0.039598, 0.039598)); allpoints.push(new PMPoint(2.8, 0.039598, -0.039598)); allpoints.push(new PMPoint(1, 1.0396, 0.960402)); allpoints.push(new PMPoint(0, 0.039598, -0.039598)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.8, -1.7208, 2.8)); allpoints.push(new PMPoint(-2.8, -1.8792, 2.8)); allpoints.push(new PMPoint(-0.960402, -0.039598, 2.8)); allpoints.push(new PMPoint(-0.960402, -0.039598, 0)); allpoints.push(new PMPoint(-2.8, -1.8792, -1.8396)); allpoints.push(new PMPoint(-1.0396, 0.039598, 2.8)); allpoints.push(new PMPoint(-1.0396, 0.039598, 0)); allpoints.push(new PMPoint(-2.8, -1.7208, -1.7604)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.8792, -2.8, 2.8)); allpoints.push(new PMPoint(-1.7208, -2.8, 2.8)); allpoints.push(new PMPoint(0.039598, -1.0396, 2.8)); allpoints.push(new PMPoint(0.039598, -1.0396, 0)); allpoints.push(new PMPoint(-1.7208, -2.8, -1.7604)); allpoints.push(new PMPoint(-0.039598, -0.960402, 2.8)); allpoints.push(new PMPoint(-0.039598, -0.960402, 0)); allpoints.push(new PMPoint(-1.8792, -2.8, -1.8396)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -0.056, 2.8)); allpoints.push(new PMPoint(-1, 0.056, 2.8)); allpoints.push(new PMPoint(0, 0.056, 2.8)); allpoints.push(new PMPoint(-1, 0.056, 0)); allpoints.push(new PMPoint(0, 0.056, 0)); allpoints.push(new PMPoint(0, -0.056, 2.8)); allpoints.push(new PMPoint(-1, -0.056, 0)); allpoints.push(new PMPoint(0, -0.056, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 4, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 2, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 4, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 3, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 3, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.056, -1, 2.8)); allpoints.push(new PMPoint(-0.056, 0, 2.8)); allpoints.push(new PMPoint(0.056, -1, 2.8)); allpoints.push(new PMPoint(0.056, 0, 2.8)); allpoints.push(new PMPoint(0.056, -1, 0)); allpoints.push(new PMPoint(0.056, 0, 0)); allpoints.push(new PMPoint(-0.056, -1, 0)); allpoints.push(new PMPoint(-0.056, 0, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 2, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.8, 2.8, -1.7208)); allpoints.push(new PMPoint(-2.8, 2.8, -1.8792)); allpoints.push(new PMPoint(-0.960402, 2.8, -0.039598)); allpoints.push(new PMPoint(-0.960402, 0, -0.039598)); allpoints.push(new PMPoint(-2.8, -1.8396, -1.8792)); allpoints.push(new PMPoint(-1.0396, 2.8, 0.039598)); allpoints.push(new PMPoint(-1.0396, 0, 0.039598)); allpoints.push(new PMPoint(-2.8, -1.7604, -1.7208)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 1, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 7, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.8792, 2.8, -2.8)); allpoints.push(new PMPoint(-1.7208, 2.8, -2.8)); allpoints.push(new PMPoint(-1.7208, -1.7604, -2.8)); allpoints.push(new PMPoint(0.039598, 2.8, -1.0396)); allpoints.push(new PMPoint(0.039598, 0, -1.0396)); allpoints.push(new PMPoint(-1.8792, -1.8396, -2.8)); allpoints.push(new PMPoint(-0.039598, 2.8, -0.960402)); allpoints.push(new PMPoint(-0.039598, 0, -0.960402)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 2.8, -0.056)); allpoints.push(new PMPoint(-1, 2.8, 0.056)); allpoints.push(new PMPoint(0, 2.8, 0.056)); allpoints.push(new PMPoint(0, 2.8, -0.056)); allpoints.push(new PMPoint(-1, 0, -0.056)); allpoints.push(new PMPoint(-1, 0, 0.056)); allpoints.push(new PMPoint(0, 0, 0.056)); allpoints.push(new PMPoint(0, 0, -0.056)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.056, 2.8, -1)); allpoints.push(new PMPoint(-0.056, 2.8, 0)); allpoints.push(new PMPoint(0.056, 2.8, -1)); allpoints.push(new PMPoint(0.056, 2.8, 0)); allpoints.push(new PMPoint(0.056, 0, -1)); allpoints.push(new PMPoint(0.056, 0, 0)); allpoints.push(new PMPoint(-0.056, 0, -1)); allpoints.push(new PMPoint(-0.056, 0, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.8, -2.8, -2.8)); allpoints.push(new PMPoint(-2.8, -2.7208, -2.8)); allpoints.push(new PMPoint(-2.7604, -2.7208, -2.8)); allpoints.push(new PMPoint(-2.8, -1.7604, -1.8396)); allpoints.push(new PMPoint(-1, 0.039598, -0.039598)); allpoints.push(new PMPoint(0, 0.039598, -0.039598)); allpoints.push(new PMPoint(-2.8, -2.8, -2.7208)); allpoints.push(new PMPoint(-2.7604, -2.8, -2.7208)); allpoints.push(new PMPoint(-2.8, -1.8396, -1.7604)); allpoints.push(new PMPoint(-1, -0.039598, 0.039598)); allpoints.push(new PMPoint(0, -0.039598, 0.039598)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); faces.vertices.push(allpoints[10].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 10, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 7, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 10, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(9, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 10, 9, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 9, 8, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 8, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 3, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(8, 9, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(8, 4, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(6, 8, 3, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(6, 3, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(6, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 7, 6, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 7)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, -2.8, -1.7208)); allpoints.push(new PMPoint(2.8, -2.8, -1.8792)); allpoints.push(new PMPoint(2.8, -0.960402, -0.039598)); allpoints.push(new PMPoint(-1.7604, -2.8, -1.7208)); allpoints.push(new PMPoint(-1.8396, -2.8, -1.8792)); allpoints.push(new PMPoint(2.8, -1.0396, 0.039598)); allpoints.push(new PMPoint(0, -1.0396, 0.039598)); allpoints.push(new PMPoint(0, -0.960402, -0.039598)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, -1.8792, -2.8)); allpoints.push(new PMPoint(2.8, -1.7208, -2.8)); allpoints.push(new PMPoint(2.8, 0.039598, -1.0396)); allpoints.push(new PMPoint(-1.8396, -1.8792, -2.8)); allpoints.push(new PMPoint(-1.7604, -1.7208, -2.8)); allpoints.push(new PMPoint(2.8, -0.039598, -0.960402)); allpoints.push(new PMPoint(0, -0.039598, -0.960402)); allpoints.push(new PMPoint(0, 0.039598, -1.0396)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, -1, -0.056)); allpoints.push(new PMPoint(2.8, 0, -0.056)); allpoints.push(new PMPoint(2.8, -1, 0.056)); allpoints.push(new PMPoint(2.8, 0, 0.056)); allpoints.push(new PMPoint(0, -1, -0.056)); allpoints.push(new PMPoint(0, 0, -0.056)); allpoints.push(new PMPoint(0, -1, 0.056)); allpoints.push(new PMPoint(0, 0, 0.056)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 0, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 2, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 4, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.8, -0.056, -1)); allpoints.push(new PMPoint(2.8, 0.056, -1)); allpoints.push(new PMPoint(2.8, 0.056, 0)); allpoints.push(new PMPoint(2.8, -0.056, 0)); allpoints.push(new PMPoint(0, -0.056, -1)); allpoints.push(new PMPoint(0, 0.056, -1)); allpoints.push(new PMPoint(0, 0.056, 0)); allpoints.push(new PMPoint(0, -0.056, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.8, -2.8, -2.8)); allpoints.push(new PMPoint(-2.7208, -2.8, -2.8)); allpoints.push(new PMPoint(-2.7208, -2.7604, -2.8)); allpoints.push(new PMPoint(-1.7604, -2.8, -1.8396)); allpoints.push(new PMPoint(0.039598, -1, -0.039598)); allpoints.push(new PMPoint(0.039598, 0, -0.039598)); allpoints.push(new PMPoint(-2.8, -2.8, -2.7208)); allpoints.push(new PMPoint(-1.8396, -2.8, -1.7604)); allpoints.push(new PMPoint(-0.039598, -1, 0.039598)); allpoints.push(new PMPoint(-0.039598, 0, 0.039598)); allpoints.push(new PMPoint(-2.8, -2.7604, -2.7208)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); faces.vertices.push(allpoints[10].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(9, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 2, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 0, 10, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 9, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 9, 8, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 4, 8, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 8, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(9, 10, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(9, 6, 7, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(9, 7, 8, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(10, 0, 6, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 3, 7, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 7)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.8, -2.8, -2.8)); allpoints.push(new PMPoint(-2.7208, -2.8, -2.8)); allpoints.push(new PMPoint(-1.7604, -1.8396, -2.8)); allpoints.push(new PMPoint(0.039598, -0.039598, -1)); allpoints.push(new PMPoint(0.039598, -0.039598, 0)); allpoints.push(new PMPoint(-2.7208, -2.8, -2.7604)); allpoints.push(new PMPoint(-2.8, -2.7208, -2.8)); allpoints.push(new PMPoint(-1.8396, -1.7604, -2.8)); allpoints.push(new PMPoint(-0.039598, 0.039598, -1)); allpoints.push(new PMPoint(-0.039598, 0.039598, 0)); allpoints.push(new PMPoint(-2.8, -2.7208, -2.7604)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); faces.vertices.push(allpoints[10].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(9, 10, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 0, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 5, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 10, 9, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 9, 8, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 8, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 2, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 7, 8, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(9, 4, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(9, 3, 8, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 1, 2, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 2, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 10, 6, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(5, 0, 1, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(0, 6, 7, undefined, undefined, 7)); faces.faces.push(new THREE.Face3(0, 7, 2, undefined, undefined, 7)); faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 7)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); // COMMON_CODE_BLOCK_BEGIN var xRotationEnabled = false; var yRotationEnabled = false; var zRotationEnabled = false; var rotationSpeedFactor = 1; var settingsShown = false; var labelsShown = true; var intervals = []; var timeouts = []; var explodingSpeed = 0.05; var explodeScale = 0; var XMLS = new XMLSerializer(); var svgElement; var renderId; var render = function () { renderId = requestAnimationFrame(render); // comment in for automatic explosion // explode(updateFactor()); var phi = 0.02 * rotationSpeedFactor; if (xRotationEnabled){ scene.rotation.x += phi; } if(yRotationEnabled){ scene.rotation.y += phi; } if(zRotationEnabled){ scene.rotation.z += phi; } controls.update(); renderer.render(scene, camera); }; render(); function computeCentroid(geom) { centroid = new THREE.Vector3(); geom.vertices.forEach(function(v) { centroid.add(v); }); centroid.divideScalar(geom.vertices.length); return centroid; } function changeTransparency(event){ var opacity = 1-Number(event.currentTarget.value); for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ if (all_objects[i].children[j].material.type == "MultiMaterial") { for (var k=0; k<all_objects[i].children[j].material.materials.length; k++){ all_objects[i].children[j].material.materials[k].opacity = opacity; all_objects[i].children[j].material.materials[k].depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.materials[k].depthTest = opacity < 0.5 ? false : true; } } else if (all_objects[i].children[j].material.transparent && all_objects[i].children[j].material.type == "MeshBasicMaterial" && all_objects[i].children[j].geometry.type == "Geometry"){ all_objects[i].children[j].material.opacity = opacity; all_objects[i].children[j].material.depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.depthTest = opacity < 0.5 ? false : true; } } } } function changeRotationX(event){ xRotationEnabled = event.currentTarget.checked; } function changeRotationY(event){ yRotationEnabled = event.currentTarget.checked; } function changeRotationZ(event){ zRotationEnabled = event.currentTarget.checked; } function changeRotationSpeedFactor(event){ rotationSpeedFactor = Number(event.currentTarget.value); } function resetScene(){ scene.rotation.set(0,0,0); camera.position.set(0,0,5); camera.up.set(0,1,0); } function showSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_2').style.position = 'absolute'; document.getElementById('settings_2').style.display = 'block'; document.getElementById('showSettingsButton_2').style.display = 'none'; document.getElementById('hideSettingsButton_2').style.display = 'block'; settingsShown = true; } function hideSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_2').style.display = 'none'; document.getElementById('hideSettingsButton_2').style.display = 'none'; document.getElementById('showSettingsButton_2').style.display = 'block'; settingsShown = false; } var pos = 150* Math.PI; function updateFactor() { pos++; return Math.sin(.01*pos)+1; } function makelabel(message, x, y, z, params) { var spritey = textSprite( message, params ); spritey.position.set(x, y, z); obj.add(spritey); } function textSprite(message, parameters) { if ( parameters === undefined ) parameters = {}; var fontface = "Helvetica"; var fontsize = parameters.hasOwnProperty("fontsize") ? parameters["fontsize"] : 18; fontsize = fontsize*10; var canvas = document.createElement('canvas'); var size = 1024; canvas.width = size; canvas.height = size; var context = canvas.getContext('2d'); context.font = fontsize + "px " + fontface; // text color context.fillStyle = "rgba(0, 0, 0, 1.0)"; context.fillText(message, size/2, size/2); // canvas contents will be used for a texture var texture = new THREE.Texture(canvas); texture.needsUpdate = true; var spriteMaterial = new THREE.SpriteMaterial( {map: texture, useScreenCoordinates: false}); var sprite = new THREE.Sprite(spriteMaterial); return sprite; } function takeSvgScreenshot(){ if (labelsShown){ hideLabels(); } svgRenderer.render(scene,camera); svgElement = XMLS.serializeToString(svgRenderer.domElement); if (labelsShown){ displayLabels(); } if (document.getElementById('tab_2').checked){ //show in new tab var myWindow = window.open("",""); myWindow.document.body.innerHTML = svgElement; } else{ // download svg file download("screenshot.svg", svgElement); } } function showOrHideObject(event){ var nr = Number(event.currentTarget.name); all_objects[nr].visible = event.currentTarget.checked; } function displayOrHideOptionsRecursive( obj ) { for (var j=0; j<obj.children.length; j++) { var child = obj.children[j]; if (child.material===undefined && child) { displayOrHideOptionsRecursive( child ); } else { if (child.material.type == "MultiMaterial") { for (var k=0; k<child.material.materials.length; k++) { if (child.material.materials[k].transparent) { document.getElementById('transparency_2').style.display = 'block'; document.getElementById('transparencyRange_2').value = 1 - child.material.materials[k].opacity; return; } } } else if ( child.material.transparent && child.material.type == "MeshBasicMaterial" && child.geometry.type == "Geometry"){ document.getElementById('transparency_2').style.display = 'block'; return; } } } } function displayOrHideOptions() { for (var i=0; i<all_objects.length; i++) { var obj = all_objects[i]; displayOrHideOptionsRecursive( obj ); } } displayOrHideOptions() // ---------------------- EXPLOSION ------------------------------------------------ // --------------------------------------------------------------------------------- function explode(factor) { var obj, c; var c0 = centroids[0]; for (var i = 0; i<centroids.length; ++i) { c = centroids[i]; obj = all_objects[all_objects.length - centroids.length + i]; obj.position.set(c.x*factor, c.y*factor, c.z*factor); } } function triggerExplode(event){ explodeScale = Number(event.currentTarget.value); explode(explodeScale); } function setExplodingSpeed(event){ explodingSpeed = Number(event.currentTarget.value); } function triggerAutomaticExplode(event){ if (event.currentTarget.checked){ startExploding(); } else { clearIntervals(); } } function startExploding(){ intervals.push(setInterval(explodingInterval, 25)); } function explodingInterval(){ explodeScale += explodingSpeed; if (explodeScale <= 6){ explode(explodeScale); } else{ explode(6); explodeScale = 6; clearIntervals(); timeouts.push(setTimeout(startUnexploding, 3000)); } document.getElementById('explodeRange_2').value = explodeScale; } function startUnexploding(){ intervals.push(setInterval(unexplodingInterval, 25)); } function unexplodingInterval(){ explodeScale -= explodingSpeed; if (explodeScale >= 0){ explode(explodeScale); } else { explode(0); explodeScale = 0; clearIntervals(); timeouts.push(setTimeout(startExploding, 3000)); } document.getElementById('explodeRange_2').value = explodeScale; } function clearIntervals(){ intervals.forEach(function(interval){ clearInterval(interval); }); intervals = []; timeouts.forEach(function(timeout){ clearTimeout(timeout); }); timeouts = []; } // append checkboxes for displaying or hiding objects var shownObjectsList = document.getElementById('shownObjectsList_2'); for (var i=0; i<all_objects.length; i++){ var objNode = document.createElement('span'); objNode.innerHTML = objectnames[i] + '<br>'; var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = true; checkbox.name = String(i); checkbox.onchange = showOrHideObject; shownObjectsList.appendChild(checkbox); shownObjectsList.appendChild(objNode); } function displayLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = true; } } } } function hideLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = false; } } } } function displayOrHideLabels(event){ if (event.currentTarget.checked){ displayLabels(); labelsShown = true; } else { hideLabels(); labelsShown = false; } } function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } var tempobj; tempobj = document.getElementById('explodeRange_2'); if (tempobj) { tempobj.oninput = triggerExplode; document.getElementById('explodeCheckbox_2').onchange = triggerAutomaticExplode; document.getElementById('explodingSpeedRange_2').oninput = setExplodingSpeed; } tempobj = document.getElementById('foldRange_2'); if (tempobj) { tempobj.oninput = fold; } document.getElementById('transparencyRange_2').oninput = changeTransparency; document.getElementById('changeRotationX_2').onchange = changeRotationX; document.getElementById('changeRotationY_2').onchange = changeRotationY; document.getElementById('changeRotationZ_2').onchange = changeRotationZ; document.getElementById('resetButton_2').onclick = resetScene; document.getElementById('rotationSpeedRange_2').oninput = changeRotationSpeedFactor; document.getElementById('labelsCheckboxInput_2').onchange = displayOrHideLabels; document.getElementById('takeScreenshot_2').onclick = takeSvgScreenshot; document.getElementById('showSettingsButton_2').onclick = showSettings; document.getElementById('hideSettingsButton_2').onclick = hideSettings; // ------------------ SHORTCUTS -------------------------------------------- // ------------------------------------------------------------------------- /** * http://www.openjs.com/scripts/events/keyboard_shortcuts/ * Version : 2.01.B * By Binny V A * License : BSD */ shortcut = { 'all_shortcuts':{},//All the shortcuts are stored in this array 'add': function(shortcut_combination,callback,opt) { //Provide a set of default options var default_options = { 'type':'keydown', 'propagate':false, 'disable_in_input':false, 'target':document, 'keycode':false } if(!opt) opt = default_options; else { for(var dfo in default_options) { if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo]; } } var ele = opt.target; if(typeof opt.target == 'string') ele = document.getElementById(opt.target); var ths = this; shortcut_combination = shortcut_combination.toLowerCase(); //The function to be called at keypress var func = function(e) { e = e || window.event; if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields var element; if(e.target) element=e.target; else if(e.srcElement) element=e.srcElement; if(element.nodeType==3) element=element.parentNode; if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return; } //Find Which key is pressed if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which; var character = String.fromCharCode(code).toLowerCase(); if(code == 188) character=","; //If the user presses , when the type is onkeydown if(code == 190) character="."; //If the user presses , when the type is onkeydown var keys = shortcut_combination.split("+"); //Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked var kp = 0; //Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken var shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", ".":">", "/":"?", "\\":"|" } //Special Keys - and their codes var special_keys = { 'esc':27, 'escape':27, 'tab':9, 'space':32, 'return':13, 'enter':13, 'backspace':8, 'scrolllock':145, 'scroll_lock':145, 'scroll':145, 'capslock':20, 'caps_lock':20, 'caps':20, 'numlock':144, 'num_lock':144, 'num':144, 'pause':19, 'break':19, 'insert':45, 'home':36, 'delete':46, 'end':35, 'pageup':33, 'page_up':33, 'pu':33, 'pagedown':34, 'page_down':34, 'pd':34, 'left':37, 'up':38, 'right':39, 'down':40, 'f1':112, 'f2':113, 'f3':114, 'f4':115, 'f5':116, 'f6':117, 'f7':118, 'f8':119, 'f9':120, 'f10':121, 'f11':122, 'f12':123 } var modifiers = { shift: { wanted:false, pressed:false}, ctrl : { wanted:false, pressed:false}, alt : { wanted:false, pressed:false}, meta : { wanted:false, pressed:false} //Meta is Mac specific }; if(e.ctrlKey) modifiers.ctrl.pressed = true; if(e.shiftKey) modifiers.shift.pressed = true; if(e.altKey) modifiers.alt.pressed = true; if(e.metaKey) modifiers.meta.pressed = true; for(var i=0; k=keys[i],i<keys.length; i++) { //Modifiers if(k == 'ctrl' || k == 'control') { kp++; modifiers.ctrl.wanted = true; } else if(k == 'shift') { kp++; modifiers.shift.wanted = true; } else if(k == 'alt') { kp++; modifiers.alt.wanted = true; } else if(k == 'meta') { kp++; modifiers.meta.wanted = true; } else if(k.length > 1) { //If it is a special key if(special_keys[k] == code) kp++; } else if(opt['keycode']) { if(opt['keycode'] == code) kp++; } else { //The special keys did not match if(character == k) kp++; else { if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase character = shift_nums[character]; if(character == k) kp++; } } } } if(kp == keys.length && modifiers.ctrl.pressed == modifiers.ctrl.wanted && modifiers.shift.pressed == modifiers.shift.wanted && modifiers.alt.pressed == modifiers.alt.wanted && modifiers.meta.pressed == modifiers.meta.wanted) { callback(e); if(!opt['propagate']) { //Stop the event //e.cancelBubble is supported by IE - this will kill the bubbling process. e.cancelBubble = true; e.returnValue = false; //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } return false; } } } this.all_shortcuts[shortcut_combination] = { 'callback':func, 'target':ele, 'event': opt['type'] }; //Attach the function with the event if(ele.addEventListener) ele.addEventListener(opt['type'], func, false); else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func); else ele['on'+opt['type']] = func; }, //Remove the shortcut - just specify the shortcut and I will remove the binding 'remove':function(shortcut_combination) { shortcut_combination = shortcut_combination.toLowerCase(); var binding = this.all_shortcuts[shortcut_combination]; delete(this.all_shortcuts[shortcut_combination]) if(!binding) return; var type = binding['event']; var ele = binding['target']; var callback = binding['callback']; if(ele.detachEvent) ele.detachEvent('on'+type, callback); else if(ele.removeEventListener) ele.removeEventListener(type, callback, false); else ele['on'+type] = false; } } shortcut.add("Alt+Left",function() { var event = new Event('click'); if (settingsShown){ document.getElementById('hideSettingsButton_2').dispatchEvent(event); } else{ document.getElementById('showSettingsButton_2').dispatchEvent(event); } }); if (foldable) moveToBaryCenter(); });}); // COMMON_CODE_BLOCK_END </script> </body> </html> </div> </HTML> ===== Tropical Curves ===== ==== A: creating tropical curves in polymake ==== The simplest way to construct tropical curves in polymake is to write them as the stable intersection of two tropical hypersurfaces. <code perl> > $mQuadric = [ [2,0,0,0], [0,2,0,0], [0,0,2,0], [0,0,0,2], > [1,1,0,0], [1,0,1,0], [1,0,0,1], > [0,1,1,0], [0,1,0,1], [0,0,1,1]]; > $cQuadric = [1,-1/4,-2/4,-3/4,-3/4,-4/4,-5/4,2/4,0,-2/4]; > $TQuadric = new Hypersurface<Min>(MONOMIALS=>$mQuadric, COEFFICIENTS=>$cQuadric); > $mCubic = [ [3,0,0,0], [0,3,0,0], [0,0,3,0], [0,0,0,3], > [1,1,1,0], [1,1,0,1], [1,0,1,1], [0,1,1,1], > [2,1,0,0], [2,0,1,0], [2,0,0,1], > [1,2,0,0], [1,0,2,0], [1,0,0,2], > [0,2,1,0], [0,2,0,1], [0,1,2,0], > [0,1,0,2], [0,0,2,1], [0,0,1,2]]; > $cCubic = [3,3,3,3,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1]; > $TCubic = new Hypersurface<Min>(MONOMIALS=>$mCubic, COEFFICIENTS=>$cCubic); > $TSextic = intersect($TQuadric,$TCubic); > $TSextic->VISUAL; </code> <HTML> <div class="threejs_output"><!-- polymake for knusper Thu Apr 30 10:10:56 2020 unnamed --> <html> <head> <title>unnamed</title> <style> /* // COMMON_CODE_BLOCK_BEGIN */ html{overflow: scroll;} .threejs_output { font-family: Arial, Helvetica, sans-serif} strong{font-size: 18px;} canvas { z-index: 8; } input[type='range'] {} input[type='radio'] {margin-left:0;} input[type='checkbox'] {margin-right:7px; margin-left: 0px; padding-left:0px;} .group{padding-bottom: 40px;} .settings * {z-index: 11; } .settings{z-index: 10; margin-left: 30px; display: none; width: 14em; height: 90%; border: solid 1px silver; padding: 2px; overflow-y: scroll; background-color: white } .indented{margin-left: 20px; margin-top: 15px; padding-bottom: 0px;} .shownObjectsList{overflow: auto; max-width: 150px; max-height: 150px;} .showSettingsButton{display: block; z-index: 12; position: absolute } .hideSettingsButton{display: none; z-index: 12; position: absolute; opacity: 0.5} .resetButton{margin-top: 20px;} button{margin-left: 0;} img{cursor: pointer;} .suboption{padding-top: 30px;} .transparency{display: none;} .labelsCheckbox{margin-top: 10px;} input[type=range] { -webkit-appearance: none; padding:0; width:90%; margin-left: auto; margin-right: auto; margin-top: 20px; display: block; } input[type=range]:focus { outline: none; } input[type=range]::-webkit-slider-runnable-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-webkit-slider-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; -webkit-appearance: none; margin-top: -5px; } input[type=range]:focus::-webkit-slider-runnable-track { background: #E3E3E3; } input[type=range]::-moz-range-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-moz-range-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]::-ms-track { height: 4px; cursor: pointer; animate: 0.2s; background: transparent; border-color: transparent; color: transparent; } input[type=range]::-ms-fill-lower { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-fill-upper { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]:focus::-ms-fill-lower { background: #E3E3E3; } input[type=range]:focus::-ms-fill-upper { background: #E3E3E3; } /* // COMMON_CODE_BLOCK_END */ </style> </head> <body> <div id='settings_3' class='settings'> <div class=group id='explode_3'> <strong>Explode</strong> <input id='explodeRange_3' type='range' min=0 max=6 step=0.01 value=0> <div class=indented><input id='explodeCheckbox_3' type='checkbox'>Automatic explosion</div> <div class=suboption>Exploding speed</div> <input id='explodingSpeedRange_3' type='range' min=0 max=0.5 step=0.001 value=0.05> </div> <div class=group id='transparency_3' class='transparency'> <strong>Transparency</strong> <input id='transparencyRange_3' type='range' min=0 max=1 step=0.01 value=0> </div> <div class=group id='rotation_3'> <strong>Rotation</strong> <div class=indented> <div><input type='checkbox' id='changeRotationX_3'> x-axis</div> <div><input type='checkbox' id='changeRotationY_3'> y-axis</div> <div><input type='checkbox' id='changeRotationZ_3'> z-axis</div> <button id='resetButton_3' class='resetButton' >Reset</button> </div> <div class=suboption>Rotation speed</div> <input id='rotationSpeedRange_3' type='range' min=0 max=5 step=0.01 value=2> </div> <div class=group id='display_3'> <strong>Display</strong> <div class=indented> <div id='shownObjectsList_3' class='shownObjectsList'></div> <div class='labelsCheckbox'><input type='checkbox' id='labelsCheckboxInput_3' checked>Labels</div> </div> </div> <div class=group id='svg_3'> <strong>SVG</strong> <div class=indented> <form> <input type="radio" name='screenshotMode' value='download' id='download_3' checked> Download<br> <input type="radio" name='screenshotMode' value='tab' id='tab_3' > New tab<br> </form> <button id='takeScreenshot_3'>Screenshot</button> </div> </div> </div> <!-- end of settings --> <img id='hideSettingsButton_3' style="display: none" class='hideSettingsButton' src='/kernelspecs/polymake/close.svg' width=20px"> <img id='showSettingsButton_3' class='showSettingsButton' src='/kernelspecs/polymake/menu.svg' width=20px"> <div id="model7502958862"></div> <script> requirejs.config({ paths: { three: '/kernelspecs/polymake/three', Detector: '/kernelspecs/polymake/Detector', SVGRenderer: '/kernelspecs/polymake/SVGRenderer', CanvasRenderer: '/kernelspecs/polymake/CanvasRenderer', Projector: '/kernelspecs/polymake/Projector', TrackballControls: '/kernelspecs/polymake/TrackballControls' }, shim: { 'three': { exports: 'THREE' }, 'Detector': { deps: [ 'three' ], exports: 'Detector' }, 'SVGRenderer': { deps: [ 'three' ], exports: 'THREE.SVGRenderer' }, 'CanvasRenderer': { deps: [ 'three' ], exports: 'THREE.CanvasRenderer' }, 'Projector': { deps: [ 'three' ], exports: 'THREE.Projector' }, 'TrackballControls': { deps: [ 'three' ], exports: 'THREE.TrackballControls' } } }); require(['three'],function(THREE){ window.THREE = THREE; require(['Detector','SVGRenderer','CanvasRenderer','Projector','TrackballControls'],function(Detector,SVGRenderer,CanvasRenderer,Projector,TrackballControls){ THREE.SVGRenderer = SVGRenderer; THREE.CanvasRenderer = CanvasRenderer; THREE.Projector = Projector; THREE.TrackballControls = TrackballControls; // COMMON_CODE_BLOCK_BEGIN var foldable = false; var container = document.getElementById( 'model7502958862' ); var renderer = Detector.webgl? new THREE.WebGLRenderer({antialias: true}): new THREE.CanvasRenderer({antialias: true}); var svgRenderer = new THREE.SVGRenderer({antialias: true}); var box = document.getElementsByClassName( 'threejs_output' )[0]; var width = box.clientWidth; var height = box.clientHeight; renderer.setSize(width, height); svgRenderer.setSize(width, height); renderer.setClearColor(0xFFFFFF, 1); svgRenderer.setClearColor(0xFFFFFF, 1); container.appendChild(renderer.domElement); var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, width/height, 0.1, 1000); var renderid; camera.position.set(0, 0, 5); camera.lookAt(0, 0, 0); camera.up.set(0, 1, 0); // class to allow move points together with labels and spheres var PMPoint = function (x,y,z) { this.vector = new THREE.Vector3(x,y,z); this.sprite = null; this.sphere = null; } PMPoint.prototype.makelabel = function(label) { this.sprite = textSprite( label ); this.sprite.position.copy(this.vector); } PMPoint.prototype.makesphere = function(radius,material) { this.sphere = new THREE.Mesh(new THREE.SphereGeometry(radius), material); this.sphere.position.copy(this.vector); } PMPoint.prototype.setX = function(x) { this.vector.setX(x); if (this.sprite) { this.sprite.position.setX(x); } if (this.sphere) { this.sphere.position.setX(x); } }; PMPoint.prototype.setY = function(y) { this.vector.setY(y); if (this.sprite) { this.sprite.position.setY(y); } if (this.sphere) { this.sphere.position.setY(y); } }; PMPoint.prototype.setZ = function(z) { this.vector.setZ(z); if (this.sprite) { this.sprite.position.setZ(z); } if (this.sphere) { this.sphere.position.setZ(z); } }; PMPoint.prototype.set = function(x,y,z) { this.vector.set(x,y,z); if (this.sprite) { this.sprite.position.set(x,y,z); } if (this.sphere) { this.sphere.position.set(x,y,z); } }; PMPoint.prototype.add = function(o) { if (this.sprite) { o.add(this.sprite); } if (this.sphere) { o.add(this.sphere); } }; var controls = new THREE.TrackballControls(camera, container); controls.zoomSpeed = 0.2; controls.rotateSpeed = 4; var all_objects = []; var centroids = []; // select the target node var target = document.querySelector('#model7502958862'); // create an observer instance var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.removedNodes && mutation.removedNodes.length > 0) { cancelAnimationFrame(renderId); observer.disconnect(); console.log("cancelled frame "+renderId); } }); }); // configuration of the observer: var config = { childList: true, characterData: true } // pass in the target node, as well as the observer options while (target) { if (target.className=="output") { observer.observe(target, config); break; } target = target.parentNode; } // COMMON_CODE_BLOCK_END var objectnames = ["unnamed__1","unnamed__2","unnamed__3","unnamed__4","unnamed__5","unnamed__6","unnamed__7","unnamed__8","unnamed__9","unnamed__10","unnamed__11","unnamed__12","unnamed__13","unnamed__14","unnamed__15","unnamed__16","unnamed__17","unnamed__18","unnamed__19","unnamed__20","unnamed__21","unnamed__22","unnamed__23","unnamed__24","unnamed__25","unnamed__26","unnamed__27","unnamed__28","unnamed__29","unnamed__30","unnamed__31","unnamed__32","unnamed__33","unnamed__34","unnamed__35","unnamed__36","unnamed__37","unnamed__38","unnamed__39","unnamed__40"]; var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -0.875, 0)); allpoints.push(new PMPoint(-0.625, -0.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -0.875, 0)); allpoints.push(new PMPoint(-1, -0.875, 3.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -1.875, -1)); allpoints.push(new PMPoint(-1, -0.875, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 0, -0.75)); allpoints.push(new PMPoint(-0.75, 0, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 0, -0.75)); allpoints.push(new PMPoint(-1, 3.25, -0.75)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -1, -1.75)); allpoints.push(new PMPoint(-1, 0, -0.75)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -1, -0.875)); allpoints.push(new PMPoint(0, -0.625, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -1, -0.875)); allpoints.push(new PMPoint(3.25, -1, -0.875)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -2, -1.875)); allpoints.push(new PMPoint(0, -1, -0.875)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, 0, 0)); allpoints.push(new PMPoint(-0.5, 0.5, 0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, -0.25, 0)); allpoints.push(new PMPoint(-0.5, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, 0.5, 0.5)); allpoints.push(new PMPoint(-0.5, 0.5, 3.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, 0.5, 0.5)); allpoints.push(new PMPoint(-0.5, 3.25, 0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2, 2, 2.25)); allpoints.push(new PMPoint(2, 2, 3.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2, 2, 2.25)); allpoints.push(new PMPoint(3.25, 2, 2.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.625, -0.5, 0)); allpoints.push(new PMPoint(-0.5, -0.25, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -0.5, 0)); allpoints.push(new PMPoint(0.5, -0.5, 0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.625, -0.5, 0)); allpoints.push(new PMPoint(0, -0.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -0.5, -0.25)); allpoints.push(new PMPoint(0, -0.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, -0.5, 0.5)); allpoints.push(new PMPoint(0.5, -0.5, 3.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, -0.5, 0.5)); allpoints.push(new PMPoint(3.25, -0.5, 0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.75, 1, 1.25)); allpoints.push(new PMPoint(0.75, 1, 3.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2, 2, 2.25)); allpoints.push(new PMPoint(2, 3.25, 2.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.75, 0, -0.5)); allpoints.push(new PMPoint(-0.5, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -0.625, -0.5)); allpoints.push(new PMPoint(0, -0.5, -0.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, -0.5)); allpoints.push(new PMPoint(0.5, 0.5, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.75, 0, -0.5)); allpoints.push(new PMPoint(0, 0, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -0.625, -0.5)); allpoints.push(new PMPoint(0, 0, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, 0.5, -0.5)); allpoints.push(new PMPoint(0.5, 3.25, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, 0.5, -0.5)); allpoints.push(new PMPoint(3.25, 0.5, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, 0, 0)); allpoints.push(new PMPoint(0.5, 1, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, 1, 1)); allpoints.push(new PMPoint(0.75, 1, 1.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, 1, 1)); allpoints.push(new PMPoint(0.5, 3.25, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -0.25, 0)); allpoints.push(new PMPoint(1, 0.75, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, -0.25, 0)); allpoints.push(new PMPoint(0, -0.25, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -0.5, -0.25)); allpoints.push(new PMPoint(0, -0.25, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.75, 1, 1.25)); allpoints.push(new PMPoint(1, 1, 1.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 0.75, 1)); allpoints.push(new PMPoint(1, 1, 1.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 0.75, 1)); allpoints.push(new PMPoint(3.25, 0.75, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 1, 1.25)); allpoints.push(new PMPoint(2, 2, 2.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.002,points_material); allpoints[1].makesphere(0.002,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); // COMMON_CODE_BLOCK_BEGIN var xRotationEnabled = false; var yRotationEnabled = false; var zRotationEnabled = false; var rotationSpeedFactor = 1; var settingsShown = false; var labelsShown = true; var intervals = []; var timeouts = []; var explodingSpeed = 0.05; var explodeScale = 0; var XMLS = new XMLSerializer(); var svgElement; var renderId; var render = function () { renderId = requestAnimationFrame(render); // comment in for automatic explosion // explode(updateFactor()); var phi = 0.02 * rotationSpeedFactor; if (xRotationEnabled){ scene.rotation.x += phi; } if(yRotationEnabled){ scene.rotation.y += phi; } if(zRotationEnabled){ scene.rotation.z += phi; } controls.update(); renderer.render(scene, camera); }; render(); function computeCentroid(geom) { centroid = new THREE.Vector3(); geom.vertices.forEach(function(v) { centroid.add(v); }); centroid.divideScalar(geom.vertices.length); return centroid; } function changeTransparency(event){ var opacity = 1-Number(event.currentTarget.value); for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ if (all_objects[i].children[j].material.type == "MultiMaterial") { for (var k=0; k<all_objects[i].children[j].material.materials.length; k++){ all_objects[i].children[j].material.materials[k].opacity = opacity; all_objects[i].children[j].material.materials[k].depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.materials[k].depthTest = opacity < 0.5 ? false : true; } } else if (all_objects[i].children[j].material.transparent && all_objects[i].children[j].material.type == "MeshBasicMaterial" && all_objects[i].children[j].geometry.type == "Geometry"){ all_objects[i].children[j].material.opacity = opacity; all_objects[i].children[j].material.depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.depthTest = opacity < 0.5 ? false : true; } } } } function changeRotationX(event){ xRotationEnabled = event.currentTarget.checked; } function changeRotationY(event){ yRotationEnabled = event.currentTarget.checked; } function changeRotationZ(event){ zRotationEnabled = event.currentTarget.checked; } function changeRotationSpeedFactor(event){ rotationSpeedFactor = Number(event.currentTarget.value); } function resetScene(){ scene.rotation.set(0,0,0); camera.position.set(0,0,5); camera.up.set(0,1,0); } function showSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_3').style.position = 'absolute'; document.getElementById('settings_3').style.display = 'block'; document.getElementById('showSettingsButton_3').style.display = 'none'; document.getElementById('hideSettingsButton_3').style.display = 'block'; settingsShown = true; } function hideSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_3').style.display = 'none'; document.getElementById('hideSettingsButton_3').style.display = 'none'; document.getElementById('showSettingsButton_3').style.display = 'block'; settingsShown = false; } var pos = 150* Math.PI; function updateFactor() { pos++; return Math.sin(.01*pos)+1; } function makelabel(message, x, y, z, params) { var spritey = textSprite( message, params ); spritey.position.set(x, y, z); obj.add(spritey); } function textSprite(message, parameters) { if ( parameters === undefined ) parameters = {}; var fontface = "Helvetica"; var fontsize = parameters.hasOwnProperty("fontsize") ? parameters["fontsize"] : 18; fontsize = fontsize*10; var canvas = document.createElement('canvas'); var size = 1024; canvas.width = size; canvas.height = size; var context = canvas.getContext('2d'); context.font = fontsize + "px " + fontface; // text color context.fillStyle = "rgba(0, 0, 0, 1.0)"; context.fillText(message, size/2, size/2); // canvas contents will be used for a texture var texture = new THREE.Texture(canvas); texture.needsUpdate = true; var spriteMaterial = new THREE.SpriteMaterial( {map: texture, useScreenCoordinates: false}); var sprite = new THREE.Sprite(spriteMaterial); return sprite; } function takeSvgScreenshot(){ if (labelsShown){ hideLabels(); } svgRenderer.render(scene,camera); svgElement = XMLS.serializeToString(svgRenderer.domElement); if (labelsShown){ displayLabels(); } if (document.getElementById('tab_3').checked){ //show in new tab var myWindow = window.open("",""); myWindow.document.body.innerHTML = svgElement; } else{ // download svg file download("screenshot.svg", svgElement); } } function showOrHideObject(event){ var nr = Number(event.currentTarget.name); all_objects[nr].visible = event.currentTarget.checked; } function displayOrHideOptionsRecursive( obj ) { for (var j=0; j<obj.children.length; j++) { var child = obj.children[j]; if (child.material===undefined && child) { displayOrHideOptionsRecursive( child ); } else { if (child.material.type == "MultiMaterial") { for (var k=0; k<child.material.materials.length; k++) { if (child.material.materials[k].transparent) { document.getElementById('transparency_3').style.display = 'block'; document.getElementById('transparencyRange_3').value = 1 - child.material.materials[k].opacity; return; } } } else if ( child.material.transparent && child.material.type == "MeshBasicMaterial" && child.geometry.type == "Geometry"){ document.getElementById('transparency_3').style.display = 'block'; return; } } } } function displayOrHideOptions() { for (var i=0; i<all_objects.length; i++) { var obj = all_objects[i]; displayOrHideOptionsRecursive( obj ); } } displayOrHideOptions() // ---------------------- EXPLOSION ------------------------------------------------ // --------------------------------------------------------------------------------- function explode(factor) { var obj, c; var c0 = centroids[0]; for (var i = 0; i<centroids.length; ++i) { c = centroids[i]; obj = all_objects[all_objects.length - centroids.length + i]; obj.position.set(c.x*factor, c.y*factor, c.z*factor); } } function triggerExplode(event){ explodeScale = Number(event.currentTarget.value); explode(explodeScale); } function setExplodingSpeed(event){ explodingSpeed = Number(event.currentTarget.value); } function triggerAutomaticExplode(event){ if (event.currentTarget.checked){ startExploding(); } else { clearIntervals(); } } function startExploding(){ intervals.push(setInterval(explodingInterval, 25)); } function explodingInterval(){ explodeScale += explodingSpeed; if (explodeScale <= 6){ explode(explodeScale); } else{ explode(6); explodeScale = 6; clearIntervals(); timeouts.push(setTimeout(startUnexploding, 3000)); } document.getElementById('explodeRange_3').value = explodeScale; } function startUnexploding(){ intervals.push(setInterval(unexplodingInterval, 25)); } function unexplodingInterval(){ explodeScale -= explodingSpeed; if (explodeScale >= 0){ explode(explodeScale); } else { explode(0); explodeScale = 0; clearIntervals(); timeouts.push(setTimeout(startExploding, 3000)); } document.getElementById('explodeRange_3').value = explodeScale; } function clearIntervals(){ intervals.forEach(function(interval){ clearInterval(interval); }); intervals = []; timeouts.forEach(function(timeout){ clearTimeout(timeout); }); timeouts = []; } // append checkboxes for displaying or hiding objects var shownObjectsList = document.getElementById('shownObjectsList_3'); for (var i=0; i<all_objects.length; i++){ var objNode = document.createElement('span'); objNode.innerHTML = objectnames[i] + '<br>'; var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = true; checkbox.name = String(i); checkbox.onchange = showOrHideObject; shownObjectsList.appendChild(checkbox); shownObjectsList.appendChild(objNode); } function displayLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = true; } } } } function hideLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = false; } } } } function displayOrHideLabels(event){ if (event.currentTarget.checked){ displayLabels(); labelsShown = true; } else { hideLabels(); labelsShown = false; } } function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } var tempobj; tempobj = document.getElementById('explodeRange_3'); if (tempobj) { tempobj.oninput = triggerExplode; document.getElementById('explodeCheckbox_3').onchange = triggerAutomaticExplode; document.getElementById('explodingSpeedRange_3').oninput = setExplodingSpeed; } tempobj = document.getElementById('foldRange_3'); if (tempobj) { tempobj.oninput = fold; } document.getElementById('transparencyRange_3').oninput = changeTransparency; document.getElementById('changeRotationX_3').onchange = changeRotationX; document.getElementById('changeRotationY_3').onchange = changeRotationY; document.getElementById('changeRotationZ_3').onchange = changeRotationZ; document.getElementById('resetButton_3').onclick = resetScene; document.getElementById('rotationSpeedRange_3').oninput = changeRotationSpeedFactor; document.getElementById('labelsCheckboxInput_3').onchange = displayOrHideLabels; document.getElementById('takeScreenshot_3').onclick = takeSvgScreenshot; document.getElementById('showSettingsButton_3').onclick = showSettings; document.getElementById('hideSettingsButton_3').onclick = hideSettings; // ------------------ SHORTCUTS -------------------------------------------- // ------------------------------------------------------------------------- /** * http://www.openjs.com/scripts/events/keyboard_shortcuts/ * Version : 2.01.B * By Binny V A * License : BSD */ shortcut = { 'all_shortcuts':{},//All the shortcuts are stored in this array 'add': function(shortcut_combination,callback,opt) { //Provide a set of default options var default_options = { 'type':'keydown', 'propagate':false, 'disable_in_input':false, 'target':document, 'keycode':false } if(!opt) opt = default_options; else { for(var dfo in default_options) { if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo]; } } var ele = opt.target; if(typeof opt.target == 'string') ele = document.getElementById(opt.target); var ths = this; shortcut_combination = shortcut_combination.toLowerCase(); //The function to be called at keypress var func = function(e) { e = e || window.event; if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields var element; if(e.target) element=e.target; else if(e.srcElement) element=e.srcElement; if(element.nodeType==3) element=element.parentNode; if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return; } //Find Which key is pressed if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which; var character = String.fromCharCode(code).toLowerCase(); if(code == 188) character=","; //If the user presses , when the type is onkeydown if(code == 190) character="."; //If the user presses , when the type is onkeydown var keys = shortcut_combination.split("+"); //Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked var kp = 0; //Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken var shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", ".":">", "/":"?", "\\":"|" } //Special Keys - and their codes var special_keys = { 'esc':27, 'escape':27, 'tab':9, 'space':32, 'return':13, 'enter':13, 'backspace':8, 'scrolllock':145, 'scroll_lock':145, 'scroll':145, 'capslock':20, 'caps_lock':20, 'caps':20, 'numlock':144, 'num_lock':144, 'num':144, 'pause':19, 'break':19, 'insert':45, 'home':36, 'delete':46, 'end':35, 'pageup':33, 'page_up':33, 'pu':33, 'pagedown':34, 'page_down':34, 'pd':34, 'left':37, 'up':38, 'right':39, 'down':40, 'f1':112, 'f2':113, 'f3':114, 'f4':115, 'f5':116, 'f6':117, 'f7':118, 'f8':119, 'f9':120, 'f10':121, 'f11':122, 'f12':123 } var modifiers = { shift: { wanted:false, pressed:false}, ctrl : { wanted:false, pressed:false}, alt : { wanted:false, pressed:false}, meta : { wanted:false, pressed:false} //Meta is Mac specific }; if(e.ctrlKey) modifiers.ctrl.pressed = true; if(e.shiftKey) modifiers.shift.pressed = true; if(e.altKey) modifiers.alt.pressed = true; if(e.metaKey) modifiers.meta.pressed = true; for(var i=0; k=keys[i],i<keys.length; i++) { //Modifiers if(k == 'ctrl' || k == 'control') { kp++; modifiers.ctrl.wanted = true; } else if(k == 'shift') { kp++; modifiers.shift.wanted = true; } else if(k == 'alt') { kp++; modifiers.alt.wanted = true; } else if(k == 'meta') { kp++; modifiers.meta.wanted = true; } else if(k.length > 1) { //If it is a special key if(special_keys[k] == code) kp++; } else if(opt['keycode']) { if(opt['keycode'] == code) kp++; } else { //The special keys did not match if(character == k) kp++; else { if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase character = shift_nums[character]; if(character == k) kp++; } } } } if(kp == keys.length && modifiers.ctrl.pressed == modifiers.ctrl.wanted && modifiers.shift.pressed == modifiers.shift.wanted && modifiers.alt.pressed == modifiers.alt.wanted && modifiers.meta.pressed == modifiers.meta.wanted) { callback(e); if(!opt['propagate']) { //Stop the event //e.cancelBubble is supported by IE - this will kill the bubbling process. e.cancelBubble = true; e.returnValue = false; //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } return false; } } } this.all_shortcuts[shortcut_combination] = { 'callback':func, 'target':ele, 'event': opt['type'] }; //Attach the function with the event if(ele.addEventListener) ele.addEventListener(opt['type'], func, false); else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func); else ele['on'+opt['type']] = func; }, //Remove the shortcut - just specify the shortcut and I will remove the binding 'remove':function(shortcut_combination) { shortcut_combination = shortcut_combination.toLowerCase(); var binding = this.all_shortcuts[shortcut_combination]; delete(this.all_shortcuts[shortcut_combination]) if(!binding) return; var type = binding['event']; var ele = binding['target']; var callback = binding['callback']; if(ele.detachEvent) ele.detachEvent('on'+type, callback); else if(ele.removeEventListener) ele.removeEventListener(type, callback, false); else ele['on'+type] = false; } } shortcut.add("Alt+Left",function() { var event = new Event('click'); if (settingsShown){ document.getElementById('hideSettingsButton_3').dispatchEvent(event); } else{ document.getElementById('showSettingsButton_3').dispatchEvent(event); } }); if (foldable) moveToBaryCenter(); });}); // COMMON_CODE_BLOCK_END </script> </body> </html> </div> </HTML> ==== B: exporting tropical curves from polymake ==== Unlike tropical hypersurfaces, preparing tropical curves for a 3d print is a bit more involved process. Since there is no satisfying way to solidify lines in default blender, we recommend using Polymake for solidification. For that, we need to decide on a bounding box, the planned size of the model, and the desired edge / vertex thickness. The first line below creates a bounding box based on the vertices of the tropical curve: <code perl> > $bFacets = polytope::bounding_box_facets($TSextic->affine_chart->VERTICES,offset=>1,surplus_k=>0.4, make_cube=>1); > $total_mm = 100; #planned size of the model > $edges_mm = 2; #desired edge diameter > $vertex_mm = 2; #desired vertex diameter > > $diam = $bFacets->[0]->[0] + $bFacets->[1]->[0]; > $vertex_diam = ($vertex_mm*$diam/$total_mm)/(1-$vertex_mm/$total_mm); > $edges_diam = ($edges_mm*$diam/$total_mm)/(1-$vertex_mm/$total_mm); > # this subroutine (sourced above) returns a set of VISUAL options that > # make sure the curve ends up with the the calculated dimensions in the x3d file > $curve_opts = x3dprint_curve_opts($vertex_diam,$edges_diam); > > # curves should be bounded beforehand to ensure all new vertices are also shown correctly > $bPolytope = new polytope::Polytope(FACETS=>$bFacets); > $bComplex = new fan::PolyhedralComplex(fan::check_fan_objects(($bPolytope))); > $TSexticBounded = pcom_common_ref($TSextic->affine_chart, $bComplex); > # export the curve > x3d($TSexticBounded->VISUAL($curve_opts),File=>$x3d_dir."TSextic.x3d"); </code> ==== Step 3: framing tropical curves in polymake ==== For 3d-printing we recommend crafting a frame which stabilizes the curve. The easiest way to craft a frame is using the intersection of the bounding box facets and one of the two tropical hypersurfaces which cut out the curve. <code perl> > $qFrame = pcom_common_ref($bPolytope->BOUNDED_COMPLEX,$TQuadric->affine_chart); > $cFrame = pcom_common_ref($bPolytope->BOUNDED_COMPLEX,$TCubic->affine_chart); > $qFrame->VISUAL; # visualizing frames > $cFrame->VISUAL; </code> <HTML> <div class="threejs_output"><!-- polymake for knusper Thu Apr 30 10:11:05 2020 pcom: --> <html> <head> <title>pcom:</title> <style> /* // COMMON_CODE_BLOCK_BEGIN */ html{overflow: scroll;} .threejs_output { font-family: Arial, Helvetica, sans-serif} strong{font-size: 18px;} canvas { z-index: 8; } input[type='range'] {} input[type='radio'] {margin-left:0;} input[type='checkbox'] {margin-right:7px; margin-left: 0px; padding-left:0px;} .group{padding-bottom: 40px;} .settings * {z-index: 11; } .settings{z-index: 10; margin-left: 30px; display: none; width: 14em; height: 90%; border: solid 1px silver; padding: 2px; overflow-y: scroll; background-color: white } .indented{margin-left: 20px; margin-top: 15px; padding-bottom: 0px;} .shownObjectsList{overflow: auto; max-width: 150px; max-height: 150px;} .showSettingsButton{display: block; z-index: 12; position: absolute } .hideSettingsButton{display: none; z-index: 12; position: absolute; opacity: 0.5} .resetButton{margin-top: 20px;} button{margin-left: 0;} img{cursor: pointer;} .suboption{padding-top: 30px;} .transparency{display: none;} .labelsCheckbox{margin-top: 10px;} input[type=range] { -webkit-appearance: none; padding:0; width:90%; margin-left: auto; margin-right: auto; margin-top: 20px; display: block; } input[type=range]:focus { outline: none; } input[type=range]::-webkit-slider-runnable-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-webkit-slider-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; -webkit-appearance: none; margin-top: -5px; } input[type=range]:focus::-webkit-slider-runnable-track { background: #E3E3E3; } input[type=range]::-moz-range-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-moz-range-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]::-ms-track { height: 4px; cursor: pointer; animate: 0.2s; background: transparent; border-color: transparent; color: transparent; } input[type=range]::-ms-fill-lower { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-fill-upper { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]:focus::-ms-fill-lower { background: #E3E3E3; } input[type=range]:focus::-ms-fill-upper { background: #E3E3E3; } /* // COMMON_CODE_BLOCK_END */ </style> </head> <body> <div id='settings_4' class='settings'> <div class=group id='explode_4'> <strong>Explode</strong> <input id='explodeRange_4' type='range' min=0 max=6 step=0.01 value=0> <div class=indented><input id='explodeCheckbox_4' type='checkbox'>Automatic explosion</div> <div class=suboption>Exploding speed</div> <input id='explodingSpeedRange_4' type='range' min=0 max=0.5 step=0.001 value=0.05> </div> <div class=group id='transparency_4' class='transparency'> <strong>Transparency</strong> <input id='transparencyRange_4' type='range' min=0 max=1 step=0.01 value=0> </div> <div class=group id='rotation_4'> <strong>Rotation</strong> <div class=indented> <div><input type='checkbox' id='changeRotationX_4'> x-axis</div> <div><input type='checkbox' id='changeRotationY_4'> y-axis</div> <div><input type='checkbox' id='changeRotationZ_4'> z-axis</div> <button id='resetButton_4' class='resetButton' >Reset</button> </div> <div class=suboption>Rotation speed</div> <input id='rotationSpeedRange_4' type='range' min=0 max=5 step=0.01 value=2> </div> <div class=group id='display_4'> <strong>Display</strong> <div class=indented> <div id='shownObjectsList_4' class='shownObjectsList'></div> <div class='labelsCheckbox'><input type='checkbox' id='labelsCheckboxInput_4' checked>Labels</div> </div> </div> <div class=group id='svg_4'> <strong>SVG</strong> <div class=indented> <form> <input type="radio" name='screenshotMode' value='download' id='download_4' checked> Download<br> <input type="radio" name='screenshotMode' value='tab' id='tab_4' > New tab<br> </form> <button id='takeScreenshot_4'>Screenshot</button> </div> </div> </div> <!-- end of settings --> <img id='hideSettingsButton_4' style="display: none" class='hideSettingsButton' src='/kernelspecs/polymake/close.svg' width=20px"> <img id='showSettingsButton_4' class='showSettingsButton' src='/kernelspecs/polymake/menu.svg' width=20px"> <div id="model16892457021"></div> <script> requirejs.config({ paths: { three: '/kernelspecs/polymake/three', Detector: '/kernelspecs/polymake/Detector', SVGRenderer: '/kernelspecs/polymake/SVGRenderer', CanvasRenderer: '/kernelspecs/polymake/CanvasRenderer', Projector: '/kernelspecs/polymake/Projector', TrackballControls: '/kernelspecs/polymake/TrackballControls' }, shim: { 'three': { exports: 'THREE' }, 'Detector': { deps: [ 'three' ], exports: 'Detector' }, 'SVGRenderer': { deps: [ 'three' ], exports: 'THREE.SVGRenderer' }, 'CanvasRenderer': { deps: [ 'three' ], exports: 'THREE.CanvasRenderer' }, 'Projector': { deps: [ 'three' ], exports: 'THREE.Projector' }, 'TrackballControls': { deps: [ 'three' ], exports: 'THREE.TrackballControls' } } }); require(['three'],function(THREE){ window.THREE = THREE; require(['Detector','SVGRenderer','CanvasRenderer','Projector','TrackballControls'],function(Detector,SVGRenderer,CanvasRenderer,Projector,TrackballControls){ THREE.SVGRenderer = SVGRenderer; THREE.CanvasRenderer = CanvasRenderer; THREE.Projector = Projector; THREE.TrackballControls = TrackballControls; // COMMON_CODE_BLOCK_BEGIN var foldable = false; var container = document.getElementById( 'model16892457021' ); var renderer = Detector.webgl? new THREE.WebGLRenderer({antialias: true}): new THREE.CanvasRenderer({antialias: true}); var svgRenderer = new THREE.SVGRenderer({antialias: true}); var box = document.getElementsByClassName( 'threejs_output' )[0]; var width = box.clientWidth; var height = box.clientHeight; renderer.setSize(width, height); svgRenderer.setSize(width, height); renderer.setClearColor(0xFFFFFF, 1); svgRenderer.setClearColor(0xFFFFFF, 1); container.appendChild(renderer.domElement); var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, width/height, 0.1, 1000); var renderid; camera.position.set(0, 0, 5); camera.lookAt(0, 0, 0); camera.up.set(0, 1, 0); // class to allow move points together with labels and spheres var PMPoint = function (x,y,z) { this.vector = new THREE.Vector3(x,y,z); this.sprite = null; this.sphere = null; } PMPoint.prototype.makelabel = function(label) { this.sprite = textSprite( label ); this.sprite.position.copy(this.vector); } PMPoint.prototype.makesphere = function(radius,material) { this.sphere = new THREE.Mesh(new THREE.SphereGeometry(radius), material); this.sphere.position.copy(this.vector); } PMPoint.prototype.setX = function(x) { this.vector.setX(x); if (this.sprite) { this.sprite.position.setX(x); } if (this.sphere) { this.sphere.position.setX(x); } }; PMPoint.prototype.setY = function(y) { this.vector.setY(y); if (this.sprite) { this.sprite.position.setY(y); } if (this.sphere) { this.sphere.position.setY(y); } }; PMPoint.prototype.setZ = function(z) { this.vector.setZ(z); if (this.sprite) { this.sprite.position.setZ(z); } if (this.sphere) { this.sphere.position.setZ(z); } }; PMPoint.prototype.set = function(x,y,z) { this.vector.set(x,y,z); if (this.sprite) { this.sprite.position.set(x,y,z); } if (this.sphere) { this.sphere.position.set(x,y,z); } }; PMPoint.prototype.add = function(o) { if (this.sprite) { o.add(this.sprite); } if (this.sphere) { o.add(this.sphere); } }; var controls = new THREE.TrackballControls(camera, container); controls.zoomSpeed = 0.2; controls.rotateSpeed = 4; var all_objects = []; var centroids = []; // select the target node var target = document.querySelector('#model16892457021'); // create an observer instance var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.removedNodes && mutation.removedNodes.length > 0) { cancelAnimationFrame(renderId); observer.disconnect(); console.log("cancelled frame "+renderId); } }); }); // configuration of the observer: var config = { childList: true, characterData: true } // pass in the target node, as well as the observer options while (target) { if (target.className=="output") { observer.observe(target, config); break; } target = target.parentNode; } // COMMON_CODE_BLOCK_END var objectnames = ["unnamed__1","unnamed__2","unnamed__3","unnamed__4","unnamed__5","unnamed__6","unnamed__7","unnamed__8","unnamed__9","unnamed__10","unnamed__11","unnamed__12","unnamed__13","unnamed__14","unnamed__15","unnamed__16","unnamed__17","unnamed__18","unnamed__19","unnamed__20","unnamed__21","unnamed__22","unnamed__23","unnamed__24","unnamed__25"]; var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -3.2, -3.075)); allpoints.push(new PMPoint(4.5, -0.625, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 2, 4.5)); allpoints.push(new PMPoint(4.5, 2, 2.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -0.5, 4.5)); allpoints.push(new PMPoint(4.5, -0.5, -0.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 2, 2.25)); allpoints.push(new PMPoint(4.5, 4.5, 2.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -0.625, -0.5)); allpoints.push(new PMPoint(4.5, -0.5, -0.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -0.625, -0.5)); allpoints.push(new PMPoint(4.5, 4.5, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 2, 2.25)); allpoints.push(new PMPoint(4.5, -0.5, -0.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -3.075, 4.5)); allpoints.push(new PMPoint(-3.2, -3.075, -2.95)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -3.075, -2.95)); allpoints.push(new PMPoint(-3.2, 4.5, -2.95)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -3.075, -2.95)); allpoints.push(new PMPoint(-3.2, -3.2, -3.075)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, 4.5, -2.95)); allpoints.push(new PMPoint(-0.75, 4.5, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1.75, 4.5, 4.5)); allpoints.push(new PMPoint(1.75, 4.5, 2.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, 4.5, 4.5)); allpoints.push(new PMPoint(-0.5, 4.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 4.5, 2.25)); allpoints.push(new PMPoint(1.75, 4.5, 2.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.75, 4.5, -0.5)); allpoints.push(new PMPoint(-0.5, 4.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 4.5, -0.5)); allpoints.push(new PMPoint(-0.75, 4.5, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1.75, 4.5, 2.25)); allpoints.push(new PMPoint(-0.5, 4.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -3.2, -3.075)); allpoints.push(new PMPoint(-3.2, -3.2, -3.075)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -3.075, 4.5)); allpoints.push(new PMPoint(-0.625, -0.5, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1.75, 4.5, 4.5)); allpoints.push(new PMPoint(1.75, 2, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, 4.5, 4.5)); allpoints.push(new PMPoint(-0.5, -0.25, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 2, 4.5)); allpoints.push(new PMPoint(1.75, 2, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.625, -0.5, 4.5)); allpoints.push(new PMPoint(-0.5, -0.25, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -0.5, 4.5)); allpoints.push(new PMPoint(-0.625, -0.5, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1.75, 2, 4.5)); allpoints.push(new PMPoint(-0.5, -0.25, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); // COMMON_CODE_BLOCK_BEGIN var xRotationEnabled = false; var yRotationEnabled = false; var zRotationEnabled = false; var rotationSpeedFactor = 1; var settingsShown = false; var labelsShown = true; var intervals = []; var timeouts = []; var explodingSpeed = 0.05; var explodeScale = 0; var XMLS = new XMLSerializer(); var svgElement; var renderId; var render = function () { renderId = requestAnimationFrame(render); // comment in for automatic explosion // explode(updateFactor()); var phi = 0.02 * rotationSpeedFactor; if (xRotationEnabled){ scene.rotation.x += phi; } if(yRotationEnabled){ scene.rotation.y += phi; } if(zRotationEnabled){ scene.rotation.z += phi; } controls.update(); renderer.render(scene, camera); }; render(); function computeCentroid(geom) { centroid = new THREE.Vector3(); geom.vertices.forEach(function(v) { centroid.add(v); }); centroid.divideScalar(geom.vertices.length); return centroid; } function changeTransparency(event){ var opacity = 1-Number(event.currentTarget.value); for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ if (all_objects[i].children[j].material.type == "MultiMaterial") { for (var k=0; k<all_objects[i].children[j].material.materials.length; k++){ all_objects[i].children[j].material.materials[k].opacity = opacity; all_objects[i].children[j].material.materials[k].depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.materials[k].depthTest = opacity < 0.5 ? false : true; } } else if (all_objects[i].children[j].material.transparent && all_objects[i].children[j].material.type == "MeshBasicMaterial" && all_objects[i].children[j].geometry.type == "Geometry"){ all_objects[i].children[j].material.opacity = opacity; all_objects[i].children[j].material.depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.depthTest = opacity < 0.5 ? false : true; } } } } function changeRotationX(event){ xRotationEnabled = event.currentTarget.checked; } function changeRotationY(event){ yRotationEnabled = event.currentTarget.checked; } function changeRotationZ(event){ zRotationEnabled = event.currentTarget.checked; } function changeRotationSpeedFactor(event){ rotationSpeedFactor = Number(event.currentTarget.value); } function resetScene(){ scene.rotation.set(0,0,0); camera.position.set(0,0,5); camera.up.set(0,1,0); } function showSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_4').style.position = 'absolute'; document.getElementById('settings_4').style.display = 'block'; document.getElementById('showSettingsButton_4').style.display = 'none'; document.getElementById('hideSettingsButton_4').style.display = 'block'; settingsShown = true; } function hideSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_4').style.display = 'none'; document.getElementById('hideSettingsButton_4').style.display = 'none'; document.getElementById('showSettingsButton_4').style.display = 'block'; settingsShown = false; } var pos = 150* Math.PI; function updateFactor() { pos++; return Math.sin(.01*pos)+1; } function makelabel(message, x, y, z, params) { var spritey = textSprite( message, params ); spritey.position.set(x, y, z); obj.add(spritey); } function textSprite(message, parameters) { if ( parameters === undefined ) parameters = {}; var fontface = "Helvetica"; var fontsize = parameters.hasOwnProperty("fontsize") ? parameters["fontsize"] : 18; fontsize = fontsize*10; var canvas = document.createElement('canvas'); var size = 1024; canvas.width = size; canvas.height = size; var context = canvas.getContext('2d'); context.font = fontsize + "px " + fontface; // text color context.fillStyle = "rgba(0, 0, 0, 1.0)"; context.fillText(message, size/2, size/2); // canvas contents will be used for a texture var texture = new THREE.Texture(canvas); texture.needsUpdate = true; var spriteMaterial = new THREE.SpriteMaterial( {map: texture, useScreenCoordinates: false}); var sprite = new THREE.Sprite(spriteMaterial); return sprite; } function takeSvgScreenshot(){ if (labelsShown){ hideLabels(); } svgRenderer.render(scene,camera); svgElement = XMLS.serializeToString(svgRenderer.domElement); if (labelsShown){ displayLabels(); } if (document.getElementById('tab_4').checked){ //show in new tab var myWindow = window.open("",""); myWindow.document.body.innerHTML = svgElement; } else{ // download svg file download("screenshot.svg", svgElement); } } function showOrHideObject(event){ var nr = Number(event.currentTarget.name); all_objects[nr].visible = event.currentTarget.checked; } function displayOrHideOptionsRecursive( obj ) { for (var j=0; j<obj.children.length; j++) { var child = obj.children[j]; if (child.material===undefined && child) { displayOrHideOptionsRecursive( child ); } else { if (child.material.type == "MultiMaterial") { for (var k=0; k<child.material.materials.length; k++) { if (child.material.materials[k].transparent) { document.getElementById('transparency_4').style.display = 'block'; document.getElementById('transparencyRange_4').value = 1 - child.material.materials[k].opacity; return; } } } else if ( child.material.transparent && child.material.type == "MeshBasicMaterial" && child.geometry.type == "Geometry"){ document.getElementById('transparency_4').style.display = 'block'; return; } } } } function displayOrHideOptions() { for (var i=0; i<all_objects.length; i++) { var obj = all_objects[i]; displayOrHideOptionsRecursive( obj ); } } displayOrHideOptions() // ---------------------- EXPLOSION ------------------------------------------------ // --------------------------------------------------------------------------------- function explode(factor) { var obj, c; var c0 = centroids[0]; for (var i = 0; i<centroids.length; ++i) { c = centroids[i]; obj = all_objects[all_objects.length - centroids.length + i]; obj.position.set(c.x*factor, c.y*factor, c.z*factor); } } function triggerExplode(event){ explodeScale = Number(event.currentTarget.value); explode(explodeScale); } function setExplodingSpeed(event){ explodingSpeed = Number(event.currentTarget.value); } function triggerAutomaticExplode(event){ if (event.currentTarget.checked){ startExploding(); } else { clearIntervals(); } } function startExploding(){ intervals.push(setInterval(explodingInterval, 25)); } function explodingInterval(){ explodeScale += explodingSpeed; if (explodeScale <= 6){ explode(explodeScale); } else{ explode(6); explodeScale = 6; clearIntervals(); timeouts.push(setTimeout(startUnexploding, 3000)); } document.getElementById('explodeRange_4').value = explodeScale; } function startUnexploding(){ intervals.push(setInterval(unexplodingInterval, 25)); } function unexplodingInterval(){ explodeScale -= explodingSpeed; if (explodeScale >= 0){ explode(explodeScale); } else { explode(0); explodeScale = 0; clearIntervals(); timeouts.push(setTimeout(startExploding, 3000)); } document.getElementById('explodeRange_4').value = explodeScale; } function clearIntervals(){ intervals.forEach(function(interval){ clearInterval(interval); }); intervals = []; timeouts.forEach(function(timeout){ clearTimeout(timeout); }); timeouts = []; } // append checkboxes for displaying or hiding objects var shownObjectsList = document.getElementById('shownObjectsList_4'); for (var i=0; i<all_objects.length; i++){ var objNode = document.createElement('span'); objNode.innerHTML = objectnames[i] + '<br>'; var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = true; checkbox.name = String(i); checkbox.onchange = showOrHideObject; shownObjectsList.appendChild(checkbox); shownObjectsList.appendChild(objNode); } function displayLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = true; } } } } function hideLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = false; } } } } function displayOrHideLabels(event){ if (event.currentTarget.checked){ displayLabels(); labelsShown = true; } else { hideLabels(); labelsShown = false; } } function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } var tempobj; tempobj = document.getElementById('explodeRange_4'); if (tempobj) { tempobj.oninput = triggerExplode; document.getElementById('explodeCheckbox_4').onchange = triggerAutomaticExplode; document.getElementById('explodingSpeedRange_4').oninput = setExplodingSpeed; } tempobj = document.getElementById('foldRange_4'); if (tempobj) { tempobj.oninput = fold; } document.getElementById('transparencyRange_4').oninput = changeTransparency; document.getElementById('changeRotationX_4').onchange = changeRotationX; document.getElementById('changeRotationY_4').onchange = changeRotationY; document.getElementById('changeRotationZ_4').onchange = changeRotationZ; document.getElementById('resetButton_4').onclick = resetScene; document.getElementById('rotationSpeedRange_4').oninput = changeRotationSpeedFactor; document.getElementById('labelsCheckboxInput_4').onchange = displayOrHideLabels; document.getElementById('takeScreenshot_4').onclick = takeSvgScreenshot; document.getElementById('showSettingsButton_4').onclick = showSettings; document.getElementById('hideSettingsButton_4').onclick = hideSettings; // ------------------ SHORTCUTS -------------------------------------------- // ------------------------------------------------------------------------- /** * http://www.openjs.com/scripts/events/keyboard_shortcuts/ * Version : 2.01.B * By Binny V A * License : BSD */ shortcut = { 'all_shortcuts':{},//All the shortcuts are stored in this array 'add': function(shortcut_combination,callback,opt) { //Provide a set of default options var default_options = { 'type':'keydown', 'propagate':false, 'disable_in_input':false, 'target':document, 'keycode':false } if(!opt) opt = default_options; else { for(var dfo in default_options) { if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo]; } } var ele = opt.target; if(typeof opt.target == 'string') ele = document.getElementById(opt.target); var ths = this; shortcut_combination = shortcut_combination.toLowerCase(); //The function to be called at keypress var func = function(e) { e = e || window.event; if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields var element; if(e.target) element=e.target; else if(e.srcElement) element=e.srcElement; if(element.nodeType==3) element=element.parentNode; if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return; } //Find Which key is pressed if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which; var character = String.fromCharCode(code).toLowerCase(); if(code == 188) character=","; //If the user presses , when the type is onkeydown if(code == 190) character="."; //If the user presses , when the type is onkeydown var keys = shortcut_combination.split("+"); //Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked var kp = 0; //Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken var shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", ".":">", "/":"?", "\\":"|" } //Special Keys - and their codes var special_keys = { 'esc':27, 'escape':27, 'tab':9, 'space':32, 'return':13, 'enter':13, 'backspace':8, 'scrolllock':145, 'scroll_lock':145, 'scroll':145, 'capslock':20, 'caps_lock':20, 'caps':20, 'numlock':144, 'num_lock':144, 'num':144, 'pause':19, 'break':19, 'insert':45, 'home':36, 'delete':46, 'end':35, 'pageup':33, 'page_up':33, 'pu':33, 'pagedown':34, 'page_down':34, 'pd':34, 'left':37, 'up':38, 'right':39, 'down':40, 'f1':112, 'f2':113, 'f3':114, 'f4':115, 'f5':116, 'f6':117, 'f7':118, 'f8':119, 'f9':120, 'f10':121, 'f11':122, 'f12':123 } var modifiers = { shift: { wanted:false, pressed:false}, ctrl : { wanted:false, pressed:false}, alt : { wanted:false, pressed:false}, meta : { wanted:false, pressed:false} //Meta is Mac specific }; if(e.ctrlKey) modifiers.ctrl.pressed = true; if(e.shiftKey) modifiers.shift.pressed = true; if(e.altKey) modifiers.alt.pressed = true; if(e.metaKey) modifiers.meta.pressed = true; for(var i=0; k=keys[i],i<keys.length; i++) { //Modifiers if(k == 'ctrl' || k == 'control') { kp++; modifiers.ctrl.wanted = true; } else if(k == 'shift') { kp++; modifiers.shift.wanted = true; } else if(k == 'alt') { kp++; modifiers.alt.wanted = true; } else if(k == 'meta') { kp++; modifiers.meta.wanted = true; } else if(k.length > 1) { //If it is a special key if(special_keys[k] == code) kp++; } else if(opt['keycode']) { if(opt['keycode'] == code) kp++; } else { //The special keys did not match if(character == k) kp++; else { if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase character = shift_nums[character]; if(character == k) kp++; } } } } if(kp == keys.length && modifiers.ctrl.pressed == modifiers.ctrl.wanted && modifiers.shift.pressed == modifiers.shift.wanted && modifiers.alt.pressed == modifiers.alt.wanted && modifiers.meta.pressed == modifiers.meta.wanted) { callback(e); if(!opt['propagate']) { //Stop the event //e.cancelBubble is supported by IE - this will kill the bubbling process. e.cancelBubble = true; e.returnValue = false; //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } return false; } } } this.all_shortcuts[shortcut_combination] = { 'callback':func, 'target':ele, 'event': opt['type'] }; //Attach the function with the event if(ele.addEventListener) ele.addEventListener(opt['type'], func, false); else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func); else ele['on'+opt['type']] = func; }, //Remove the shortcut - just specify the shortcut and I will remove the binding 'remove':function(shortcut_combination) { shortcut_combination = shortcut_combination.toLowerCase(); var binding = this.all_shortcuts[shortcut_combination]; delete(this.all_shortcuts[shortcut_combination]) if(!binding) return; var type = binding['event']; var ele = binding['target']; var callback = binding['callback']; if(ele.detachEvent) ele.detachEvent('on'+type, callback); else if(ele.removeEventListener) ele.removeEventListener(type, callback, false); else ele['on'+type] = false; } } shortcut.add("Alt+Left",function() { var event = new Event('click'); if (settingsShown){ document.getElementById('hideSettingsButton_4').dispatchEvent(event); } else{ document.getElementById('showSettingsButton_4').dispatchEvent(event); } }); if (foldable) moveToBaryCenter(); });}); // COMMON_CODE_BLOCK_END </script> </body> </html> </div> </HTML> <HTML> <div class="threejs_output"><!-- polymake for knusper Thu Apr 30 10:11:07 2020 pcom: --> <html> <head> <title>pcom:</title> <style> /* // COMMON_CODE_BLOCK_BEGIN */ html{overflow: scroll;} .threejs_output { font-family: Arial, Helvetica, sans-serif} strong{font-size: 18px;} canvas { z-index: 8; } input[type='range'] {} input[type='radio'] {margin-left:0;} input[type='checkbox'] {margin-right:7px; margin-left: 0px; padding-left:0px;} .group{padding-bottom: 40px;} .settings * {z-index: 11; } .settings{z-index: 10; margin-left: 30px; display: none; width: 14em; height: 90%; border: solid 1px silver; padding: 2px; overflow-y: scroll; background-color: white } .indented{margin-left: 20px; margin-top: 15px; padding-bottom: 0px;} .shownObjectsList{overflow: auto; max-width: 150px; max-height: 150px;} .showSettingsButton{display: block; z-index: 12; position: absolute } .hideSettingsButton{display: none; z-index: 12; position: absolute; opacity: 0.5} .resetButton{margin-top: 20px;} button{margin-left: 0;} img{cursor: pointer;} .suboption{padding-top: 30px;} .transparency{display: none;} .labelsCheckbox{margin-top: 10px;} input[type=range] { -webkit-appearance: none; padding:0; width:90%; margin-left: auto; margin-right: auto; margin-top: 20px; display: block; } input[type=range]:focus { outline: none; } input[type=range]::-webkit-slider-runnable-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-webkit-slider-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; -webkit-appearance: none; margin-top: -5px; } input[type=range]:focus::-webkit-slider-runnable-track { background: #E3E3E3; } input[type=range]::-moz-range-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-moz-range-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]::-ms-track { height: 4px; cursor: pointer; animate: 0.2s; background: transparent; border-color: transparent; color: transparent; } input[type=range]::-ms-fill-lower { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-fill-upper { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]:focus::-ms-fill-lower { background: #E3E3E3; } input[type=range]:focus::-ms-fill-upper { background: #E3E3E3; } /* // COMMON_CODE_BLOCK_END */ </style> </head> <body> <div id='settings_5' class='settings'> <div class=group id='explode_5'> <strong>Explode</strong> <input id='explodeRange_5' type='range' min=0 max=6 step=0.01 value=0> <div class=indented><input id='explodeCheckbox_5' type='checkbox'>Automatic explosion</div> <div class=suboption>Exploding speed</div> <input id='explodingSpeedRange_5' type='range' min=0 max=0.5 step=0.001 value=0.05> </div> <div class=group id='transparency_5' class='transparency'> <strong>Transparency</strong> <input id='transparencyRange_5' type='range' min=0 max=1 step=0.01 value=0> </div> <div class=group id='rotation_5'> <strong>Rotation</strong> <div class=indented> <div><input type='checkbox' id='changeRotationX_5'> x-axis</div> <div><input type='checkbox' id='changeRotationY_5'> y-axis</div> <div><input type='checkbox' id='changeRotationZ_5'> z-axis</div> <button id='resetButton_5' class='resetButton' >Reset</button> </div> <div class=suboption>Rotation speed</div> <input id='rotationSpeedRange_5' type='range' min=0 max=5 step=0.01 value=2> </div> <div class=group id='display_5'> <strong>Display</strong> <div class=indented> <div id='shownObjectsList_5' class='shownObjectsList'></div> <div class='labelsCheckbox'><input type='checkbox' id='labelsCheckboxInput_5' checked>Labels</div> </div> </div> <div class=group id='svg_5'> <strong>SVG</strong> <div class=indented> <form> <input type="radio" name='screenshotMode' value='download' id='download_5' checked> Download<br> <input type="radio" name='screenshotMode' value='tab' id='tab_5' > New tab<br> </form> <button id='takeScreenshot_5'>Screenshot</button> </div> </div> </div> <!-- end of settings --> <img id='hideSettingsButton_5' style="display: none" class='hideSettingsButton' src='/kernelspecs/polymake/close.svg' width=20px"> <img id='showSettingsButton_5' class='showSettingsButton' src='/kernelspecs/polymake/menu.svg' width=20px"> <div id="model11437370463"></div> <script> requirejs.config({ paths: { three: '/kernelspecs/polymake/three', Detector: '/kernelspecs/polymake/Detector', SVGRenderer: '/kernelspecs/polymake/SVGRenderer', CanvasRenderer: '/kernelspecs/polymake/CanvasRenderer', Projector: '/kernelspecs/polymake/Projector', TrackballControls: '/kernelspecs/polymake/TrackballControls' }, shim: { 'three': { exports: 'THREE' }, 'Detector': { deps: [ 'three' ], exports: 'Detector' }, 'SVGRenderer': { deps: [ 'three' ], exports: 'THREE.SVGRenderer' }, 'CanvasRenderer': { deps: [ 'three' ], exports: 'THREE.CanvasRenderer' }, 'Projector': { deps: [ 'three' ], exports: 'THREE.Projector' }, 'TrackballControls': { deps: [ 'three' ], exports: 'THREE.TrackballControls' } } }); require(['three'],function(THREE){ window.THREE = THREE; require(['Detector','SVGRenderer','CanvasRenderer','Projector','TrackballControls'],function(Detector,SVGRenderer,CanvasRenderer,Projector,TrackballControls){ THREE.SVGRenderer = SVGRenderer; THREE.CanvasRenderer = CanvasRenderer; THREE.Projector = Projector; THREE.TrackballControls = TrackballControls; // COMMON_CODE_BLOCK_BEGIN var foldable = false; var container = document.getElementById( 'model11437370463' ); var renderer = Detector.webgl? new THREE.WebGLRenderer({antialias: true}): new THREE.CanvasRenderer({antialias: true}); var svgRenderer = new THREE.SVGRenderer({antialias: true}); var box = document.getElementsByClassName( 'threejs_output' )[0]; var width = box.clientWidth; var height = box.clientHeight; renderer.setSize(width, height); svgRenderer.setSize(width, height); renderer.setClearColor(0xFFFFFF, 1); svgRenderer.setClearColor(0xFFFFFF, 1); container.appendChild(renderer.domElement); var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, width/height, 0.1, 1000); var renderid; camera.position.set(0, 0, 5); camera.lookAt(0, 0, 0); camera.up.set(0, 1, 0); // class to allow move points together with labels and spheres var PMPoint = function (x,y,z) { this.vector = new THREE.Vector3(x,y,z); this.sprite = null; this.sphere = null; } PMPoint.prototype.makelabel = function(label) { this.sprite = textSprite( label ); this.sprite.position.copy(this.vector); } PMPoint.prototype.makesphere = function(radius,material) { this.sphere = new THREE.Mesh(new THREE.SphereGeometry(radius), material); this.sphere.position.copy(this.vector); } PMPoint.prototype.setX = function(x) { this.vector.setX(x); if (this.sprite) { this.sprite.position.setX(x); } if (this.sphere) { this.sphere.position.setX(x); } }; PMPoint.prototype.setY = function(y) { this.vector.setY(y); if (this.sprite) { this.sprite.position.setY(y); } if (this.sphere) { this.sphere.position.setY(y); } }; PMPoint.prototype.setZ = function(z) { this.vector.setZ(z); if (this.sprite) { this.sprite.position.setZ(z); } if (this.sphere) { this.sphere.position.setZ(z); } }; PMPoint.prototype.set = function(x,y,z) { this.vector.set(x,y,z); if (this.sprite) { this.sprite.position.set(x,y,z); } if (this.sphere) { this.sphere.position.set(x,y,z); } }; PMPoint.prototype.add = function(o) { if (this.sprite) { o.add(this.sprite); } if (this.sphere) { o.add(this.sphere); } }; var controls = new THREE.TrackballControls(camera, container); controls.zoomSpeed = 0.2; controls.rotateSpeed = 4; var all_objects = []; var centroids = []; // select the target node var target = document.querySelector('#model11437370463'); // create an observer instance var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.removedNodes && mutation.removedNodes.length > 0) { cancelAnimationFrame(renderId); observer.disconnect(); console.log("cancelled frame "+renderId); } }); }); // configuration of the observer: var config = { childList: true, characterData: true } // pass in the target node, as well as the observer options while (target) { if (target.className=="output") { observer.observe(target, config); break; } target = target.parentNode; } // COMMON_CODE_BLOCK_END var objectnames = ["unnamed__1","unnamed__2","unnamed__3","unnamed__4","unnamed__5","unnamed__6","unnamed__7","unnamed__8","unnamed__9","unnamed__10","unnamed__11","unnamed__12","unnamed__13","unnamed__14","unnamed__15","unnamed__16","unnamed__17","unnamed__18","unnamed__19","unnamed__20","unnamed__21","unnamed__22","unnamed__23","unnamed__24","unnamed__25","unnamed__26","unnamed__27","unnamed__28","unnamed__29","unnamed__30","unnamed__31","unnamed__32","unnamed__33","unnamed__34","unnamed__35","unnamed__36","unnamed__37","unnamed__38","unnamed__39","unnamed__40","unnamed__41","unnamed__42","unnamed__43","unnamed__44","unnamed__45","unnamed__46","unnamed__47","unnamed__48","unnamed__49","unnamed__50","unnamed__51","unnamed__52","unnamed__53","unnamed__54","unnamed__55","unnamed__56","unnamed__57","unnamed__58","unnamed__59","unnamed__60","unnamed__61","unnamed__62","unnamed__63","unnamed__64","unnamed__65","unnamed__66","unnamed__67","unnamed__68","unnamed__69","unnamed__70","unnamed__71","unnamed__72"]; var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 2, 4.5)); allpoints.push(new PMPoint(4.5, 2, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 0, 1)); allpoints.push(new PMPoint(4.5, 1, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 2, 2)); allpoints.push(new PMPoint(4.5, 4.5, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 1, 1)); allpoints.push(new PMPoint(4.5, 1, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 2, 2)); allpoints.push(new PMPoint(4.5, 1, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -2, 4.5)); allpoints.push(new PMPoint(4.5, -2, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 0, 1)); allpoints.push(new PMPoint(4.5, -1, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 0, 1)); allpoints.push(new PMPoint(4.5, 0, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 4.5, -2)); allpoints.push(new PMPoint(4.5, 0, -2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 1, 0)); allpoints.push(new PMPoint(4.5, 0, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 1, 0)); allpoints.push(new PMPoint(4.5, 4.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -2, 0)); allpoints.push(new PMPoint(4.5, -3.2, -1.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -1, 0)); allpoints.push(new PMPoint(4.5, -1, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -2, 0)); allpoints.push(new PMPoint(4.5, -1, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 0, -2)); allpoints.push(new PMPoint(4.5, -1.2, -3.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 0, -1)); allpoints.push(new PMPoint(4.5, -1, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 0, -2)); allpoints.push(new PMPoint(4.5, 0, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -1, -1)); allpoints.push(new PMPoint(4.5, -3.2, -3.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -1.2, 4.5)); allpoints.push(new PMPoint(-3.2, -1.2, -1.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -3.2, -2.2)); allpoints.push(new PMPoint(-3.2, -2.2, -2.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -1.2, -1.2)); allpoints.push(new PMPoint(-3.2, 4.5, -1.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -2.2, -2.2)); allpoints.push(new PMPoint(-3.2, -2.2, -3.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -1.2, -1.2)); allpoints.push(new PMPoint(-3.2, -2.2, -2.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -3.2, -2.2)); allpoints.push(new PMPoint(-3.2, -3.2, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -2.2, -3.2)); allpoints.push(new PMPoint(-3.2, 4.5, -3.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2, 4.5, 4.5)); allpoints.push(new PMPoint(2, 4.5, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 4.5, 1)); allpoints.push(new PMPoint(0, 4.5, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 4.5, 2)); allpoints.push(new PMPoint(2, 4.5, 2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 4.5, 1)); allpoints.push(new PMPoint(1, 4.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2, 4.5, 2)); allpoints.push(new PMPoint(1, 4.5, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, 4.5, 4.5)); allpoints.push(new PMPoint(-2, 4.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 4.5, 1)); allpoints.push(new PMPoint(-1, 4.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 4.5, 1)); allpoints.push(new PMPoint(0, 4.5, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 4.5, -2)); allpoints.push(new PMPoint(0, 4.5, -2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 4.5, 0)); allpoints.push(new PMPoint(0, 4.5, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 4.5, 0)); allpoints.push(new PMPoint(1, 4.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, 4.5, -1.2)); allpoints.push(new PMPoint(-2, 4.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 4.5, 0)); allpoints.push(new PMPoint(-1, 4.5, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, 4.5, 0)); allpoints.push(new PMPoint(-1, 4.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 4.5, -2)); allpoints.push(new PMPoint(-1.2, 4.5, -3.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 4.5, -1)); allpoints.push(new PMPoint(-1, 4.5, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 4.5, -2)); allpoints.push(new PMPoint(0, 4.5, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, 4.5, -3.2)); allpoints.push(new PMPoint(-1, 4.5, -1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.2, -3.2, 4.5)); allpoints.push(new PMPoint(-1.2, -3.2, -1.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -3.2, -2.2)); allpoints.push(new PMPoint(-2.2, -3.2, -2.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -3.2, -1.2)); allpoints.push(new PMPoint(-1.2, -3.2, -1.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.2, -3.2, -2.2)); allpoints.push(new PMPoint(-2.2, -3.2, -3.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.2, -3.2, -1.2)); allpoints.push(new PMPoint(-2.2, -3.2, -2.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -3.2, -3.2)); allpoints.push(new PMPoint(-2.2, -3.2, -3.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2, 4.5, 4.5)); allpoints.push(new PMPoint(2, 2, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 1, 4.5)); allpoints.push(new PMPoint(0, 1, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 2, 4.5)); allpoints.push(new PMPoint(2, 2, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 1, 4.5)); allpoints.push(new PMPoint(1, 0, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2, 2, 4.5)); allpoints.push(new PMPoint(1, 1, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, 4.5, 4.5)); allpoints.push(new PMPoint(-2, 0, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 1, 4.5)); allpoints.push(new PMPoint(-1, 0, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 4.5, 4.5)); allpoints.push(new PMPoint(0, 1, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -2, 4.5)); allpoints.push(new PMPoint(0, -2, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 0, 4.5)); allpoints.push(new PMPoint(0, -1, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, 0, 4.5)); allpoints.push(new PMPoint(1, 0, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -1.2, 4.5)); allpoints.push(new PMPoint(-2, 0, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 0, 4.5)); allpoints.push(new PMPoint(-1, -1, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, 0, 4.5)); allpoints.push(new PMPoint(-1, 0, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.2, -3.2, 4.5)); allpoints.push(new PMPoint(0, -2, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -1, 4.5)); allpoints.push(new PMPoint(-1, -1, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -2, 4.5)); allpoints.push(new PMPoint(0, -1, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -3.2, 4.5)); allpoints.push(new PMPoint(-1, -1, 4.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.2, 4.5, -3.2)); allpoints.push(new PMPoint(-1.2, -1.2, -3.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.2, -2.2, -3.2)); allpoints.push(new PMPoint(-2.2, -2.2, -3.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.5, -1.2, -3.2)); allpoints.push(new PMPoint(-1.2, -1.2, -3.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.2, -3.2, -3.2)); allpoints.push(new PMPoint(-2.2, -2.2, -3.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.2, -1.2, -3.2)); allpoints.push(new PMPoint(-2.2, -2.2, -3.2)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.02,points_material); allpoints[1].makesphere(0.02,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); // COMMON_CODE_BLOCK_BEGIN var xRotationEnabled = false; var yRotationEnabled = false; var zRotationEnabled = false; var rotationSpeedFactor = 1; var settingsShown = false; var labelsShown = true; var intervals = []; var timeouts = []; var explodingSpeed = 0.05; var explodeScale = 0; var XMLS = new XMLSerializer(); var svgElement; var renderId; var render = function () { renderId = requestAnimationFrame(render); // comment in for automatic explosion // explode(updateFactor()); var phi = 0.02 * rotationSpeedFactor; if (xRotationEnabled){ scene.rotation.x += phi; } if(yRotationEnabled){ scene.rotation.y += phi; } if(zRotationEnabled){ scene.rotation.z += phi; } controls.update(); renderer.render(scene, camera); }; render(); function computeCentroid(geom) { centroid = new THREE.Vector3(); geom.vertices.forEach(function(v) { centroid.add(v); }); centroid.divideScalar(geom.vertices.length); return centroid; } function changeTransparency(event){ var opacity = 1-Number(event.currentTarget.value); for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ if (all_objects[i].children[j].material.type == "MultiMaterial") { for (var k=0; k<all_objects[i].children[j].material.materials.length; k++){ all_objects[i].children[j].material.materials[k].opacity = opacity; all_objects[i].children[j].material.materials[k].depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.materials[k].depthTest = opacity < 0.5 ? false : true; } } else if (all_objects[i].children[j].material.transparent && all_objects[i].children[j].material.type == "MeshBasicMaterial" && all_objects[i].children[j].geometry.type == "Geometry"){ all_objects[i].children[j].material.opacity = opacity; all_objects[i].children[j].material.depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.depthTest = opacity < 0.5 ? false : true; } } } } function changeRotationX(event){ xRotationEnabled = event.currentTarget.checked; } function changeRotationY(event){ yRotationEnabled = event.currentTarget.checked; } function changeRotationZ(event){ zRotationEnabled = event.currentTarget.checked; } function changeRotationSpeedFactor(event){ rotationSpeedFactor = Number(event.currentTarget.value); } function resetScene(){ scene.rotation.set(0,0,0); camera.position.set(0,0,5); camera.up.set(0,1,0); } function showSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_5').style.position = 'absolute'; document.getElementById('settings_5').style.display = 'block'; document.getElementById('showSettingsButton_5').style.display = 'none'; document.getElementById('hideSettingsButton_5').style.display = 'block'; settingsShown = true; } function hideSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_5').style.display = 'none'; document.getElementById('hideSettingsButton_5').style.display = 'none'; document.getElementById('showSettingsButton_5').style.display = 'block'; settingsShown = false; } var pos = 150* Math.PI; function updateFactor() { pos++; return Math.sin(.01*pos)+1; } function makelabel(message, x, y, z, params) { var spritey = textSprite( message, params ); spritey.position.set(x, y, z); obj.add(spritey); } function textSprite(message, parameters) { if ( parameters === undefined ) parameters = {}; var fontface = "Helvetica"; var fontsize = parameters.hasOwnProperty("fontsize") ? parameters["fontsize"] : 18; fontsize = fontsize*10; var canvas = document.createElement('canvas'); var size = 1024; canvas.width = size; canvas.height = size; var context = canvas.getContext('2d'); context.font = fontsize + "px " + fontface; // text color context.fillStyle = "rgba(0, 0, 0, 1.0)"; context.fillText(message, size/2, size/2); // canvas contents will be used for a texture var texture = new THREE.Texture(canvas); texture.needsUpdate = true; var spriteMaterial = new THREE.SpriteMaterial( {map: texture, useScreenCoordinates: false}); var sprite = new THREE.Sprite(spriteMaterial); return sprite; } function takeSvgScreenshot(){ if (labelsShown){ hideLabels(); } svgRenderer.render(scene,camera); svgElement = XMLS.serializeToString(svgRenderer.domElement); if (labelsShown){ displayLabels(); } if (document.getElementById('tab_5').checked){ //show in new tab var myWindow = window.open("",""); myWindow.document.body.innerHTML = svgElement; } else{ // download svg file download("screenshot.svg", svgElement); } } function showOrHideObject(event){ var nr = Number(event.currentTarget.name); all_objects[nr].visible = event.currentTarget.checked; } function displayOrHideOptionsRecursive( obj ) { for (var j=0; j<obj.children.length; j++) { var child = obj.children[j]; if (child.material===undefined && child) { displayOrHideOptionsRecursive( child ); } else { if (child.material.type == "MultiMaterial") { for (var k=0; k<child.material.materials.length; k++) { if (child.material.materials[k].transparent) { document.getElementById('transparency_5').style.display = 'block'; document.getElementById('transparencyRange_5').value = 1 - child.material.materials[k].opacity; return; } } } else if ( child.material.transparent && child.material.type == "MeshBasicMaterial" && child.geometry.type == "Geometry"){ document.getElementById('transparency_5').style.display = 'block'; return; } } } } function displayOrHideOptions() { for (var i=0; i<all_objects.length; i++) { var obj = all_objects[i]; displayOrHideOptionsRecursive( obj ); } } displayOrHideOptions() // ---------------------- EXPLOSION ------------------------------------------------ // --------------------------------------------------------------------------------- function explode(factor) { var obj, c; var c0 = centroids[0]; for (var i = 0; i<centroids.length; ++i) { c = centroids[i]; obj = all_objects[all_objects.length - centroids.length + i]; obj.position.set(c.x*factor, c.y*factor, c.z*factor); } } function triggerExplode(event){ explodeScale = Number(event.currentTarget.value); explode(explodeScale); } function setExplodingSpeed(event){ explodingSpeed = Number(event.currentTarget.value); } function triggerAutomaticExplode(event){ if (event.currentTarget.checked){ startExploding(); } else { clearIntervals(); } } function startExploding(){ intervals.push(setInterval(explodingInterval, 25)); } function explodingInterval(){ explodeScale += explodingSpeed; if (explodeScale <= 6){ explode(explodeScale); } else{ explode(6); explodeScale = 6; clearIntervals(); timeouts.push(setTimeout(startUnexploding, 3000)); } document.getElementById('explodeRange_5').value = explodeScale; } function startUnexploding(){ intervals.push(setInterval(unexplodingInterval, 25)); } function unexplodingInterval(){ explodeScale -= explodingSpeed; if (explodeScale >= 0){ explode(explodeScale); } else { explode(0); explodeScale = 0; clearIntervals(); timeouts.push(setTimeout(startExploding, 3000)); } document.getElementById('explodeRange_5').value = explodeScale; } function clearIntervals(){ intervals.forEach(function(interval){ clearInterval(interval); }); intervals = []; timeouts.forEach(function(timeout){ clearTimeout(timeout); }); timeouts = []; } // append checkboxes for displaying or hiding objects var shownObjectsList = document.getElementById('shownObjectsList_5'); for (var i=0; i<all_objects.length; i++){ var objNode = document.createElement('span'); objNode.innerHTML = objectnames[i] + '<br>'; var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = true; checkbox.name = String(i); checkbox.onchange = showOrHideObject; shownObjectsList.appendChild(checkbox); shownObjectsList.appendChild(objNode); } function displayLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = true; } } } } function hideLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = false; } } } } function displayOrHideLabels(event){ if (event.currentTarget.checked){ displayLabels(); labelsShown = true; } else { hideLabels(); labelsShown = false; } } function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } var tempobj; tempobj = document.getElementById('explodeRange_5'); if (tempobj) { tempobj.oninput = triggerExplode; document.getElementById('explodeCheckbox_5').onchange = triggerAutomaticExplode; document.getElementById('explodingSpeedRange_5').oninput = setExplodingSpeed; } tempobj = document.getElementById('foldRange_5'); if (tempobj) { tempobj.oninput = fold; } document.getElementById('transparencyRange_5').oninput = changeTransparency; document.getElementById('changeRotationX_5').onchange = changeRotationX; document.getElementById('changeRotationY_5').onchange = changeRotationY; document.getElementById('changeRotationZ_5').onchange = changeRotationZ; document.getElementById('resetButton_5').onclick = resetScene; document.getElementById('rotationSpeedRange_5').oninput = changeRotationSpeedFactor; document.getElementById('labelsCheckboxInput_5').onchange = displayOrHideLabels; document.getElementById('takeScreenshot_5').onclick = takeSvgScreenshot; document.getElementById('showSettingsButton_5').onclick = showSettings; document.getElementById('hideSettingsButton_5').onclick = hideSettings; // ------------------ SHORTCUTS -------------------------------------------- // ------------------------------------------------------------------------- /** * http://www.openjs.com/scripts/events/keyboard_shortcuts/ * Version : 2.01.B * By Binny V A * License : BSD */ shortcut = { 'all_shortcuts':{},//All the shortcuts are stored in this array 'add': function(shortcut_combination,callback,opt) { //Provide a set of default options var default_options = { 'type':'keydown', 'propagate':false, 'disable_in_input':false, 'target':document, 'keycode':false } if(!opt) opt = default_options; else { for(var dfo in default_options) { if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo]; } } var ele = opt.target; if(typeof opt.target == 'string') ele = document.getElementById(opt.target); var ths = this; shortcut_combination = shortcut_combination.toLowerCase(); //The function to be called at keypress var func = function(e) { e = e || window.event; if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields var element; if(e.target) element=e.target; else if(e.srcElement) element=e.srcElement; if(element.nodeType==3) element=element.parentNode; if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return; } //Find Which key is pressed if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which; var character = String.fromCharCode(code).toLowerCase(); if(code == 188) character=","; //If the user presses , when the type is onkeydown if(code == 190) character="."; //If the user presses , when the type is onkeydown var keys = shortcut_combination.split("+"); //Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked var kp = 0; //Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken var shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", ".":">", "/":"?", "\\":"|" } //Special Keys - and their codes var special_keys = { 'esc':27, 'escape':27, 'tab':9, 'space':32, 'return':13, 'enter':13, 'backspace':8, 'scrolllock':145, 'scroll_lock':145, 'scroll':145, 'capslock':20, 'caps_lock':20, 'caps':20, 'numlock':144, 'num_lock':144, 'num':144, 'pause':19, 'break':19, 'insert':45, 'home':36, 'delete':46, 'end':35, 'pageup':33, 'page_up':33, 'pu':33, 'pagedown':34, 'page_down':34, 'pd':34, 'left':37, 'up':38, 'right':39, 'down':40, 'f1':112, 'f2':113, 'f3':114, 'f4':115, 'f5':116, 'f6':117, 'f7':118, 'f8':119, 'f9':120, 'f10':121, 'f11':122, 'f12':123 } var modifiers = { shift: { wanted:false, pressed:false}, ctrl : { wanted:false, pressed:false}, alt : { wanted:false, pressed:false}, meta : { wanted:false, pressed:false} //Meta is Mac specific }; if(e.ctrlKey) modifiers.ctrl.pressed = true; if(e.shiftKey) modifiers.shift.pressed = true; if(e.altKey) modifiers.alt.pressed = true; if(e.metaKey) modifiers.meta.pressed = true; for(var i=0; k=keys[i],i<keys.length; i++) { //Modifiers if(k == 'ctrl' || k == 'control') { kp++; modifiers.ctrl.wanted = true; } else if(k == 'shift') { kp++; modifiers.shift.wanted = true; } else if(k == 'alt') { kp++; modifiers.alt.wanted = true; } else if(k == 'meta') { kp++; modifiers.meta.wanted = true; } else if(k.length > 1) { //If it is a special key if(special_keys[k] == code) kp++; } else if(opt['keycode']) { if(opt['keycode'] == code) kp++; } else { //The special keys did not match if(character == k) kp++; else { if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase character = shift_nums[character]; if(character == k) kp++; } } } } if(kp == keys.length && modifiers.ctrl.pressed == modifiers.ctrl.wanted && modifiers.shift.pressed == modifiers.shift.wanted && modifiers.alt.pressed == modifiers.alt.wanted && modifiers.meta.pressed == modifiers.meta.wanted) { callback(e); if(!opt['propagate']) { //Stop the event //e.cancelBubble is supported by IE - this will kill the bubbling process. e.cancelBubble = true; e.returnValue = false; //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } return false; } } } this.all_shortcuts[shortcut_combination] = { 'callback':func, 'target':ele, 'event': opt['type'] }; //Attach the function with the event if(ele.addEventListener) ele.addEventListener(opt['type'], func, false); else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func); else ele['on'+opt['type']] = func; }, //Remove the shortcut - just specify the shortcut and I will remove the binding 'remove':function(shortcut_combination) { shortcut_combination = shortcut_combination.toLowerCase(); var binding = this.all_shortcuts[shortcut_combination]; delete(this.all_shortcuts[shortcut_combination]) if(!binding) return; var type = binding['event']; var ele = binding['target']; var callback = binding['callback']; if(ele.detachEvent) ele.detachEvent('on'+type, callback); else if(ele.removeEventListener) ele.removeEventListener(type, callback, false); else ele['on'+type] = false; } } shortcut.add("Alt+Left",function() { var event = new Event('click'); if (settingsShown){ document.getElementById('hideSettingsButton_5').dispatchEvent(event); } else{ document.getElementById('showSettingsButton_5').dispatchEvent(event); } }); if (foldable) moveToBaryCenter(); });}); // COMMON_CODE_BLOCK_END </script> </body> </html> </div> </HTML> These frames can be exported into separate models <code perl> > x3d($qFrame->VISUAL($curve_opts),File=>$x3d_dir."QuadricFrame.x3d"); # exporting frames > x3d($cFrame->VISUAL($curve_opts),File=>$x3d_dir."CubicFrame.x3d"); </code> ===== Tropical curves on tropical surfaces ===== 3d-printing tropical curves on tropical surfaces is only minimally more involved than creating individual curves and surfaces. One straighforward way is to follow the previous tutorials for surfaces and curves while making sure that: - the curve is well visible, i.e., that the curve is sufficiently thick, - both curve and surface share the same bounding box. Below we show a more involved way, which leads to a better final model. In this example we will employ a boolean intersection modifier to the curve in blender and the model will end up with the exact same dimensions as the bounding cube. ==== Step 0: preparations ==== <code perl> > $surface_opts = {VertexStyle=>'hidden',EdgeStyle=>'hidden'}; > > $total_mm = 100; #planned size of the model > $curve_mm = 3; #desired edge diameter > $surface_mm = 2; #desired surface thickness (for solidfying in polymake) > $surface_abs = $surface_mm * $diam/$total_mm; > $curve_diam = $curve_mm * $diam/$total_mm; > $surface_opts = {VertexStyle=>'hidden',EdgeStyle=>'hidden'}; # hide vertex and edge labels > $curve_opts = x3dprint_curve_opts($curve_diam,$edges_diam); > > $bFacets = polytope::bounding_box_facets($TCubic->affine_chart->VERTICES,offset=>1,surplus_k=>0.4, make_cube=>1); > $diam = $bFacets->[0]->[0] + $bFacets->[1]->[0]; # diameter of the bounding box </code> Export the solidified cubic, the bounding cube <code perl> > $bPolytope = new polytope::Polytope(FACETS=>$bFacets); > x3d(compose($bPolytope->VISUAL($surface_opts)),File=>$x3d_dir."BoundingCube.x3d"); > > $solidifiedCubicCells = solidify_2d_pcom($TCubic->affine_chart,$surface_abs); > @solidifiedCubicCellsVis = map { $_->VISUAL($surface_opts,BoundingFacets=>$bFacets) } @$solidifiedCubicCells; > x3d(compose(@solidifiedCubicCellsVis),File=>$x3d_dir."TCubicSolidified.x3d"); </code> and the sextic curve with a bigger bounding box <code perl> > $b2Facets = polytope::bounding_box_facets($TCubic->affine_chart->VERTICES,surplus_k=>1, make_cube=>1); > # apply bounding beforehand > $b2Polytope = new polytope::Polytope(FACETS=>$b2Facets); > $b2Complex = new fan::PolyhedralComplex(fan::check_fan_objects(($b2Polytope))); > $b2TSextic = pcom_common_ref($TSextic->affine_chart,$b2Complex); > compose(@solidifiedCubicCellsVis,$b2TSextic->VISUAL($curve_opts)); > # exporting the uncut sextic curve > x3d($b2TSextic->VISUAL($curve_opts),File=>$x3d_dir."UncutTSextic.x3d"); </code> <HTML> <div class="threejs_output"><!-- polymake for knusper Thu Apr 30 10:11:15 2020 _bounded --> <html> <head> <title>_bounded</title> <style> /* // COMMON_CODE_BLOCK_BEGIN */ html{overflow: scroll;} .threejs_output { font-family: Arial, Helvetica, sans-serif} strong{font-size: 18px;} canvas { z-index: 8; } input[type='range'] {} input[type='radio'] {margin-left:0;} input[type='checkbox'] {margin-right:7px; margin-left: 0px; padding-left:0px;} .group{padding-bottom: 40px;} .settings * {z-index: 11; } .settings{z-index: 10; margin-left: 30px; display: none; width: 14em; height: 90%; border: solid 1px silver; padding: 2px; overflow-y: scroll; background-color: white } .indented{margin-left: 20px; margin-top: 15px; padding-bottom: 0px;} .shownObjectsList{overflow: auto; max-width: 150px; max-height: 150px;} .showSettingsButton{display: block; z-index: 12; position: absolute } .hideSettingsButton{display: none; z-index: 12; position: absolute; opacity: 0.5} .resetButton{margin-top: 20px;} button{margin-left: 0;} img{cursor: pointer;} .suboption{padding-top: 30px;} .transparency{display: none;} .labelsCheckbox{margin-top: 10px;} input[type=range] { -webkit-appearance: none; padding:0; width:90%; margin-left: auto; margin-right: auto; margin-top: 20px; display: block; } input[type=range]:focus { outline: none; } input[type=range]::-webkit-slider-runnable-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-webkit-slider-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; -webkit-appearance: none; margin-top: -5px; } input[type=range]:focus::-webkit-slider-runnable-track { background: #E3E3E3; } input[type=range]::-moz-range-track { height: 4px; cursor: pointer; animate: 0.2s; box-shadow: 0px 0px 0px #000000; background: #E3E3E3; border-radius: 0px; border: 0px solid #000000; } input[type=range]::-moz-range-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]::-ms-track { height: 4px; cursor: pointer; animate: 0.2s; background: transparent; border-color: transparent; color: transparent; } input[type=range]::-ms-fill-lower { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-fill-upper { background: #E3E3E3; border: 0px solid #000000; border-radius: 0px; box-shadow: 0px 0px 0px #000000; } input[type=range]::-ms-thumb { box-shadow: 1px 1px 2px #B8B8B8; border: 1px solid #ABABAB; height: 13px; width: 25px; border-radius: 20px; background: #E0E0E0; cursor: pointer; } input[type=range]:focus::-ms-fill-lower { background: #E3E3E3; } input[type=range]:focus::-ms-fill-upper { background: #E3E3E3; } /* // COMMON_CODE_BLOCK_END */ </style> </head> <body> <div id='settings_6' class='settings'> <div class=group id='explode_6'> <strong>Explode</strong> <input id='explodeRange_6' type='range' min=0 max=6 step=0.01 value=0> <div class=indented><input id='explodeCheckbox_6' type='checkbox'>Automatic explosion</div> <div class=suboption>Exploding speed</div> <input id='explodingSpeedRange_6' type='range' min=0 max=0.5 step=0.001 value=0.05> </div> <div class=group id='transparency_6' class='transparency'> <strong>Transparency</strong> <input id='transparencyRange_6' type='range' min=0 max=1 step=0.01 value=0> </div> <div class=group id='rotation_6'> <strong>Rotation</strong> <div class=indented> <div><input type='checkbox' id='changeRotationX_6'> x-axis</div> <div><input type='checkbox' id='changeRotationY_6'> y-axis</div> <div><input type='checkbox' id='changeRotationZ_6'> z-axis</div> <button id='resetButton_6' class='resetButton' >Reset</button> </div> <div class=suboption>Rotation speed</div> <input id='rotationSpeedRange_6' type='range' min=0 max=5 step=0.01 value=2> </div> <div class=group id='display_6'> <strong>Display</strong> <div class=indented> <div id='shownObjectsList_6' class='shownObjectsList'></div> <div class='labelsCheckbox'><input type='checkbox' id='labelsCheckboxInput_6' checked>Labels</div> </div> </div> <div class=group id='svg_6'> <strong>SVG</strong> <div class=indented> <form> <input type="radio" name='screenshotMode' value='download' id='download_6' checked> Download<br> <input type="radio" name='screenshotMode' value='tab' id='tab_6' > New tab<br> </form> <button id='takeScreenshot_6'>Screenshot</button> </div> </div> </div> <!-- end of settings --> <img id='hideSettingsButton_6' style="display: none" class='hideSettingsButton' src='/kernelspecs/polymake/close.svg' width=20px"> <img id='showSettingsButton_6' class='showSettingsButton' src='/kernelspecs/polymake/menu.svg' width=20px"> <div id="model4836331554"></div> <script> requirejs.config({ paths: { three: '/kernelspecs/polymake/three', Detector: '/kernelspecs/polymake/Detector', SVGRenderer: '/kernelspecs/polymake/SVGRenderer', CanvasRenderer: '/kernelspecs/polymake/CanvasRenderer', Projector: '/kernelspecs/polymake/Projector', TrackballControls: '/kernelspecs/polymake/TrackballControls' }, shim: { 'three': { exports: 'THREE' }, 'Detector': { deps: [ 'three' ], exports: 'Detector' }, 'SVGRenderer': { deps: [ 'three' ], exports: 'THREE.SVGRenderer' }, 'CanvasRenderer': { deps: [ 'three' ], exports: 'THREE.CanvasRenderer' }, 'Projector': { deps: [ 'three' ], exports: 'THREE.Projector' }, 'TrackballControls': { deps: [ 'three' ], exports: 'THREE.TrackballControls' } } }); require(['three'],function(THREE){ window.THREE = THREE; require(['Detector','SVGRenderer','CanvasRenderer','Projector','TrackballControls'],function(Detector,SVGRenderer,CanvasRenderer,Projector,TrackballControls){ THREE.SVGRenderer = SVGRenderer; THREE.CanvasRenderer = CanvasRenderer; THREE.Projector = Projector; THREE.TrackballControls = TrackballControls; // COMMON_CODE_BLOCK_BEGIN var foldable = false; var container = document.getElementById( 'model4836331554' ); var renderer = Detector.webgl? new THREE.WebGLRenderer({antialias: true}): new THREE.CanvasRenderer({antialias: true}); var svgRenderer = new THREE.SVGRenderer({antialias: true}); var box = document.getElementsByClassName( 'threejs_output' )[0]; var width = box.clientWidth; var height = box.clientHeight; renderer.setSize(width, height); svgRenderer.setSize(width, height); renderer.setClearColor(0xFFFFFF, 1); svgRenderer.setClearColor(0xFFFFFF, 1); container.appendChild(renderer.domElement); var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, width/height, 0.1, 1000); var renderid; camera.position.set(0, 0, 5); camera.lookAt(0, 0, 0); camera.up.set(0, 1, 0); // class to allow move points together with labels and spheres var PMPoint = function (x,y,z) { this.vector = new THREE.Vector3(x,y,z); this.sprite = null; this.sphere = null; } PMPoint.prototype.makelabel = function(label) { this.sprite = textSprite( label ); this.sprite.position.copy(this.vector); } PMPoint.prototype.makesphere = function(radius,material) { this.sphere = new THREE.Mesh(new THREE.SphereGeometry(radius), material); this.sphere.position.copy(this.vector); } PMPoint.prototype.setX = function(x) { this.vector.setX(x); if (this.sprite) { this.sprite.position.setX(x); } if (this.sphere) { this.sphere.position.setX(x); } }; PMPoint.prototype.setY = function(y) { this.vector.setY(y); if (this.sprite) { this.sprite.position.setY(y); } if (this.sphere) { this.sphere.position.setY(y); } }; PMPoint.prototype.setZ = function(z) { this.vector.setZ(z); if (this.sprite) { this.sprite.position.setZ(z); } if (this.sphere) { this.sphere.position.setZ(z); } }; PMPoint.prototype.set = function(x,y,z) { this.vector.set(x,y,z); if (this.sprite) { this.sprite.position.set(x,y,z); } if (this.sphere) { this.sphere.position.set(x,y,z); } }; PMPoint.prototype.add = function(o) { if (this.sprite) { o.add(this.sprite); } if (this.sphere) { o.add(this.sphere); } }; var controls = new THREE.TrackballControls(camera, container); controls.zoomSpeed = 0.2; controls.rotateSpeed = 4; var all_objects = []; var centroids = []; // select the target node var target = document.querySelector('#model4836331554'); // create an observer instance var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.removedNodes && mutation.removedNodes.length > 0) { cancelAnimationFrame(renderId); observer.disconnect(); console.log("cancelled frame "+renderId); } }); }); // configuration of the observer: var config = { childList: true, characterData: true } // pass in the target node, as well as the observer options while (target) { if (target.className=="output") { observer.observe(target, config); break; } target = target.parentNode; } // COMMON_CODE_BLOCK_END var objectnames = ["unnamed__1","unnamed__2","unnamed__3","unnamed__4","unnamed__5","unnamed__6","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","unnamed__7","unnamed__8","unnamed__9","unnamed__10","unnamed__11","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","_bounded","unnamed__12","unnamed__13","unnamed__14","unnamed__15","unnamed__16","unnamed__17","unnamed__18","unnamed__19","unnamed__20","unnamed__21","unnamed__22","unnamed__23","unnamed__24","unnamed__25","unnamed__26","unnamed__27","unnamed__28","unnamed__29","unnamed__30","unnamed__31","unnamed__32","unnamed__33","unnamed__34","unnamed__35","unnamed__36","unnamed__37","unnamed__38","unnamed__39","unnamed__40","unnamed__41","unnamed__42","unnamed__43","unnamed__44","unnamed__45","unnamed__46","unnamed__47","unnamed__48","unnamed__49","unnamed__50","unnamed__51"]; var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 0.945553, 1.05445)); allpoints.push(new PMPoint(1, 1.05445, 0.945553)); allpoints.push(new PMPoint(0, -0.0544472, 0.0544472)); allpoints.push(new PMPoint(0, 0.0544472, -0.0544472)); allpoints.push(new PMPoint(0, 0.945553, 1.05445)); allpoints.push(new PMPoint(0, 1.05445, 0.945553)); allpoints.push(new PMPoint(-1, -0.0544472, 0.0544472)); allpoints.push(new PMPoint(-1, 0.0544472, -0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 2, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 6, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 4, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 2, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 0, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 5, 4, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.945553, 1, 1.05445)); allpoints.push(new PMPoint(1.05445, 1, 0.945553)); allpoints.push(new PMPoint(-0.0544472, 0, 0.0544472)); allpoints.push(new PMPoint(0.0544472, 0, -0.0544472)); allpoints.push(new PMPoint(-0.0544472, -1, 0.0544472)); allpoints.push(new PMPoint(0.0544472, -1, -0.0544472)); allpoints.push(new PMPoint(0.945553, 0, 1.05445)); allpoints.push(new PMPoint(1.05445, 0, 0.945553)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.0544472, 0.0544472, -1)); allpoints.push(new PMPoint(0.0544472, -0.0544472, -1)); allpoints.push(new PMPoint(0.945553, 1.05445, 0)); allpoints.push(new PMPoint(1.05445, 0.945553, 0)); allpoints.push(new PMPoint(0.945553, 1.05445, 1)); allpoints.push(new PMPoint(1.05445, 0.945553, 1)); allpoints.push(new PMPoint(-0.0544472, 0.0544472, 0)); allpoints.push(new PMPoint(0.0544472, -0.0544472, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 2, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 4, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, 0.077)); allpoints.push(new PMPoint(0, 0, -0.077)); allpoints.push(new PMPoint(-1, 0, 0.077)); allpoints.push(new PMPoint(-1, 0, -0.077)); allpoints.push(new PMPoint(0, -1, 0.077)); allpoints.push(new PMPoint(0, -1, -0.077)); allpoints.push(new PMPoint(-1, -1, 0.077)); allpoints.push(new PMPoint(-1, -1, -0.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 6, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 2, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 4, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 2, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 4, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 5, 1, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0.077, -1)); allpoints.push(new PMPoint(0, -0.077, -1)); allpoints.push(new PMPoint(0, 0.077, 0)); allpoints.push(new PMPoint(0, -0.077, 0)); allpoints.push(new PMPoint(-1, 0.077, -1)); allpoints.push(new PMPoint(-1, -0.077, -1)); allpoints.push(new PMPoint(-1, 0.077, 0)); allpoints.push(new PMPoint(-1, -0.077, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 4, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 0, 1, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.077, -1, -1)); allpoints.push(new PMPoint(-0.077, -1, -1)); allpoints.push(new PMPoint(0.077, 0, -1)); allpoints.push(new PMPoint(-0.077, 0, -1)); allpoints.push(new PMPoint(0.077, 0, 0)); allpoints.push(new PMPoint(-0.077, 0, 0)); allpoints.push(new PMPoint(0.077, -1, 0)); allpoints.push(new PMPoint(-0.077, -1, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.077, 4.6, 4.6)); allpoints.push(new PMPoint(1.923, 4.6, 4.6)); allpoints.push(new PMPoint(1.923, 2, 4.6)); allpoints.push(new PMPoint(1.923, 2, 2)); allpoints.push(new PMPoint(1.923, 4.6, 2)); allpoints.push(new PMPoint(2.077, 2, 4.6)); allpoints.push(new PMPoint(2.077, 2, 2)); allpoints.push(new PMPoint(2.077, 4.6, 2)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 1.077, 4.6)); allpoints.push(new PMPoint(0, 0.923, 4.6)); allpoints.push(new PMPoint(1, 0.923, 4.6)); allpoints.push(new PMPoint(0, 0.923, 1)); allpoints.push(new PMPoint(1, 0.923, 1)); allpoints.push(new PMPoint(1, 1.077, 4.6)); allpoints.push(new PMPoint(0, 1.077, 1)); allpoints.push(new PMPoint(1, 1.077, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 4.6, 0.923)); allpoints.push(new PMPoint(0, 4.6, 1.077)); allpoints.push(new PMPoint(1, 4.6, 1.077)); allpoints.push(new PMPoint(1, 4.6, 0.923)); allpoints.push(new PMPoint(0, 1, 0.923)); allpoints.push(new PMPoint(0, 1, 1.077)); allpoints.push(new PMPoint(1, 1, 1.077)); allpoints.push(new PMPoint(1, 1, 0.923)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 2.077, 4.6)); allpoints.push(new PMPoint(4.6, 1.923, 4.6)); allpoints.push(new PMPoint(2, 2.077, 4.6)); allpoints.push(new PMPoint(2, 1.923, 4.6)); allpoints.push(new PMPoint(2, 2.077, 2)); allpoints.push(new PMPoint(2, 1.923, 2)); allpoints.push(new PMPoint(4.6, 2.077, 2)); allpoints.push(new PMPoint(4.6, 1.923, 2)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 2, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 4, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.923, 0, 4.6)); allpoints.push(new PMPoint(0.923, 1, 4.6)); allpoints.push(new PMPoint(1.077, 1, 4.6)); allpoints.push(new PMPoint(1.077, 0, 4.6)); allpoints.push(new PMPoint(0.923, 0, 1)); allpoints.push(new PMPoint(0.923, 1, 1)); allpoints.push(new PMPoint(1.077, 1, 1)); allpoints.push(new PMPoint(1.077, 0, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 2, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 3, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 0, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 1, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 0, 0.923)); allpoints.push(new PMPoint(4.6, 1, 0.923)); allpoints.push(new PMPoint(4.6, 0, 1.077)); allpoints.push(new PMPoint(4.6, 1, 1.077)); allpoints.push(new PMPoint(1, 0, 0.923)); allpoints.push(new PMPoint(1, 1, 0.923)); allpoints.push(new PMPoint(1, 0, 1.077)); allpoints.push(new PMPoint(1, 1, 1.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 0, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 2, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 4, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.05445, 1.94555, 4.6)); allpoints.push(new PMPoint(1.05445, 0.945553, 4.6)); allpoints.push(new PMPoint(1.94555, 2.05445, 4.6)); allpoints.push(new PMPoint(0.945553, 1.05445, 4.6)); allpoints.push(new PMPoint(1.94555, 2.05445, 2)); allpoints.push(new PMPoint(0.945553, 1.05445, 1)); allpoints.push(new PMPoint(2.05445, 1.94555, 2)); allpoints.push(new PMPoint(1.05445, 0.945553, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 2, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 4.6, 2.077)); allpoints.push(new PMPoint(4.6, 4.6, 1.923)); allpoints.push(new PMPoint(2, 4.6, 2.077)); allpoints.push(new PMPoint(2, 4.6, 1.923)); allpoints.push(new PMPoint(2, 2, 2.077)); allpoints.push(new PMPoint(2, 2, 1.923)); allpoints.push(new PMPoint(4.6, 2, 2.077)); allpoints.push(new PMPoint(4.6, 2, 1.923)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.923, 4.6, 0)); allpoints.push(new PMPoint(0.923, 4.6, 1)); allpoints.push(new PMPoint(1.077, 4.6, 1)); allpoints.push(new PMPoint(1.077, 4.6, 0)); allpoints.push(new PMPoint(0.923, 1, 0)); allpoints.push(new PMPoint(0.923, 1, 1)); allpoints.push(new PMPoint(1.077, 1, 1)); allpoints.push(new PMPoint(1.077, 1, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 0.923, 1)); allpoints.push(new PMPoint(4.6, 1.077, 1)); allpoints.push(new PMPoint(4.6, 0.923, 0)); allpoints.push(new PMPoint(4.6, 1.077, 0)); allpoints.push(new PMPoint(1, 0.923, 1)); allpoints.push(new PMPoint(1, 1.077, 1)); allpoints.push(new PMPoint(1, 0.923, 0)); allpoints.push(new PMPoint(1, 1.077, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.05445, 4.6, 1.94555)); allpoints.push(new PMPoint(1.05445, 4.6, 0.945553)); allpoints.push(new PMPoint(1.94555, 4.6, 2.05445)); allpoints.push(new PMPoint(0.945553, 4.6, 1.05445)); allpoints.push(new PMPoint(2.05445, 2, 1.94555)); allpoints.push(new PMPoint(1.05445, 1, 0.945553)); allpoints.push(new PMPoint(1.94555, 2, 2.05445)); allpoints.push(new PMPoint(0.945553, 1, 1.05445)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 2, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 3, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 0, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 2.05445, 1.94555)); allpoints.push(new PMPoint(4.6, 1.94555, 2.05445)); allpoints.push(new PMPoint(4.6, 0.945553, 1.05445)); allpoints.push(new PMPoint(2, 1.94555, 2.05445)); allpoints.push(new PMPoint(1, 0.945553, 1.05445)); allpoints.push(new PMPoint(4.6, 1.05445, 0.945553)); allpoints.push(new PMPoint(2, 2.05445, 1.94555)); allpoints.push(new PMPoint(1, 1.05445, 0.945553)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.923, 4.6, 4.6)); allpoints.push(new PMPoint(-2.077, 4.6, 4.6)); allpoints.push(new PMPoint(-2.077, 0, 4.6)); allpoints.push(new PMPoint(-2.077, 0, 0)); allpoints.push(new PMPoint(-2.077, 4.6, 0)); allpoints.push(new PMPoint(-1.923, 0, 4.6)); allpoints.push(new PMPoint(-1.923, 0, 0)); allpoints.push(new PMPoint(-1.923, 4.6, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.945553, -0.0544472, 4.6)); allpoints.push(new PMPoint(0.0544472, 0.945553, 4.6)); allpoints.push(new PMPoint(-0.0544472, 1.05445, 4.6)); allpoints.push(new PMPoint(0.0544472, 0.945553, 1)); allpoints.push(new PMPoint(-0.0544472, 1.05445, 1)); allpoints.push(new PMPoint(-1.05445, 0.0544472, 4.6)); allpoints.push(new PMPoint(-0.945553, -0.0544472, 0)); allpoints.push(new PMPoint(-1.05445, 0.0544472, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.945553, 4.6, -0.0544472)); allpoints.push(new PMPoint(0.0544472, 4.6, 0.945553)); allpoints.push(new PMPoint(-0.0544472, 4.6, 1.05445)); allpoints.push(new PMPoint(0.0544472, 1, 0.945553)); allpoints.push(new PMPoint(-0.0544472, 1, 1.05445)); allpoints.push(new PMPoint(-1.05445, 4.6, 0.0544472)); allpoints.push(new PMPoint(-0.945553, 0, -0.0544472)); allpoints.push(new PMPoint(-1.05445, 0, 0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 2, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 6, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 1, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.077, 4.6, 4.6)); allpoints.push(new PMPoint(-0.077, 4.6, 4.6)); allpoints.push(new PMPoint(-0.077, 1, 4.6)); allpoints.push(new PMPoint(-0.077, 1, 1)); allpoints.push(new PMPoint(-0.077, 4.6, 1)); allpoints.push(new PMPoint(0.077, 1, 4.6)); allpoints.push(new PMPoint(0.077, 1, 1)); allpoints.push(new PMPoint(0.077, 4.6, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -1.923, 4.6)); allpoints.push(new PMPoint(4.6, -2.077, 4.6)); allpoints.push(new PMPoint(0, -1.923, 4.6)); allpoints.push(new PMPoint(0, -2.077, 4.6)); allpoints.push(new PMPoint(4.6, -1.923, 0)); allpoints.push(new PMPoint(4.6, -2.077, 0)); allpoints.push(new PMPoint(0, -1.923, 0)); allpoints.push(new PMPoint(0, -2.077, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1.05445, -0.0544472, 4.6)); allpoints.push(new PMPoint(0.0544472, -1.05445, 4.6)); allpoints.push(new PMPoint(-0.0544472, -0.945553, 4.6)); allpoints.push(new PMPoint(-0.0544472, -0.945553, 0)); allpoints.push(new PMPoint(0.0544472, -1.05445, 0)); allpoints.push(new PMPoint(0.945553, 0.0544472, 4.6)); allpoints.push(new PMPoint(0.945553, 0.0544472, 1)); allpoints.push(new PMPoint(1.05445, -0.0544472, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 1, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 7, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 0.0544472, 0.945553)); allpoints.push(new PMPoint(4.6, -0.0544472, 1.05445)); allpoints.push(new PMPoint(4.6, -0.945553, -0.0544472)); allpoints.push(new PMPoint(4.6, -1.05445, 0.0544472)); allpoints.push(new PMPoint(0, -0.945553, -0.0544472)); allpoints.push(new PMPoint(0, -1.05445, 0.0544472)); allpoints.push(new PMPoint(1, 0.0544472, 0.945553)); allpoints.push(new PMPoint(1, -0.0544472, 1.05445)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 0.077, 4.6)); allpoints.push(new PMPoint(4.6, -0.077, 4.6)); allpoints.push(new PMPoint(4.6, -0.077, 1)); allpoints.push(new PMPoint(1, 0.077, 4.6)); allpoints.push(new PMPoint(1, -0.077, 4.6)); allpoints.push(new PMPoint(1, -0.077, 1)); allpoints.push(new PMPoint(1, 0.077, 1)); allpoints.push(new PMPoint(4.6, 0.077, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 5, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 7, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 4.6, -1.923)); allpoints.push(new PMPoint(4.6, 4.6, -2.077)); allpoints.push(new PMPoint(0, 4.6, -1.923)); allpoints.push(new PMPoint(0, 4.6, -2.077)); allpoints.push(new PMPoint(0, 0, -1.923)); allpoints.push(new PMPoint(0, 0, -2.077)); allpoints.push(new PMPoint(4.6, 0, -1.923)); allpoints.push(new PMPoint(4.6, 0, -2.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1.05445, 4.6, -0.0544472)); allpoints.push(new PMPoint(0.0544472, 4.6, -1.05445)); allpoints.push(new PMPoint(-0.0544472, 4.6, -0.945553)); allpoints.push(new PMPoint(0.945553, 4.6, 0.0544472)); allpoints.push(new PMPoint(1.05445, 1, -0.0544472)); allpoints.push(new PMPoint(0.0544472, 0, -1.05445)); allpoints.push(new PMPoint(-0.0544472, 0, -0.945553)); allpoints.push(new PMPoint(0.945553, 1, 0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 1.05445, -0.0544472)); allpoints.push(new PMPoint(4.6, 0.945553, 0.0544472)); allpoints.push(new PMPoint(4.6, 0.0544472, -1.05445)); allpoints.push(new PMPoint(4.6, -0.0544472, -0.945553)); allpoints.push(new PMPoint(0, 0.0544472, -1.05445)); allpoints.push(new PMPoint(0, -0.0544472, -0.945553)); allpoints.push(new PMPoint(1, 1.05445, -0.0544472)); allpoints.push(new PMPoint(1, 0.945553, 0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 4.6, 0.077)); allpoints.push(new PMPoint(4.6, 4.6, -0.077)); allpoints.push(new PMPoint(1, 4.6, -0.077)); allpoints.push(new PMPoint(1, 1, -0.077)); allpoints.push(new PMPoint(4.6, 1, -0.077)); allpoints.push(new PMPoint(1, 4.6, 0.077)); allpoints.push(new PMPoint(1, 1, 0.077)); allpoints.push(new PMPoint(4.6, 1, 0.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -2.49111, 4.6)); allpoints.push(new PMPoint(-4.6, -2.70889, 4.6)); allpoints.push(new PMPoint(-1.94555, -0.0544472, 4.6)); allpoints.push(new PMPoint(-1.94555, -0.0544472, 0)); allpoints.push(new PMPoint(-4.6, -2.70889, -2.65445)); allpoints.push(new PMPoint(-2.05445, 0.0544472, 4.6)); allpoints.push(new PMPoint(-2.05445, 0.0544472, 0)); allpoints.push(new PMPoint(-4.6, -2.49111, -2.54555)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.077, -1, 4.6)); allpoints.push(new PMPoint(-1.077, 0, 4.6)); allpoints.push(new PMPoint(-0.923, 0, 4.6)); allpoints.push(new PMPoint(-0.923, -1, 4.6)); allpoints.push(new PMPoint(-1.077, -1, 0)); allpoints.push(new PMPoint(-1.077, 0, 0)); allpoints.push(new PMPoint(-0.923, 0, 0)); allpoints.push(new PMPoint(-0.923, -1, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 2, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 3, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 0, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 1, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -4.6, -3.70889)); allpoints.push(new PMPoint(-4.6, -4.6, -3.6)); allpoints.push(new PMPoint(-4.6, -4.54555, -3.49111)); allpoints.push(new PMPoint(-4.54555, -4.6, -3.65445)); allpoints.push(new PMPoint(-0.945553, -1, -0.0544472)); allpoints.push(new PMPoint(-0.945553, 0, -0.0544472)); allpoints.push(new PMPoint(-1.05445, 0, 0.0544472)); allpoints.push(new PMPoint(-1.05445, -1, 0.0544472)); allpoints.push(new PMPoint(-4.6, -3.65445, -3.70889)); allpoints.push(new PMPoint(-4.6, -3.54555, -3.49111)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 9, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 2, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(8, 9, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(8, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 2, 1, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 3, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 8, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 4, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 9, 8, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 8, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -0.077, 4.6)); allpoints.push(new PMPoint(-2, 0.077, 4.6)); allpoints.push(new PMPoint(-1, 0.077, 4.6)); allpoints.push(new PMPoint(-2, 0.077, 0)); allpoints.push(new PMPoint(-1, 0.077, 0)); allpoints.push(new PMPoint(-1, -0.077, 4.6)); allpoints.push(new PMPoint(-2, -0.077, 0)); allpoints.push(new PMPoint(-1, -0.077, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 4, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 2, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 4, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 3, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 3, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, 4.6, -2.49111)); allpoints.push(new PMPoint(-4.6, 4.6, -2.70889)); allpoints.push(new PMPoint(-1.94555, 4.6, -0.0544472)); allpoints.push(new PMPoint(-1.94555, 0, -0.0544472)); allpoints.push(new PMPoint(-4.6, -2.65445, -2.70889)); allpoints.push(new PMPoint(-2.05445, 4.6, 0.0544472)); allpoints.push(new PMPoint(-2.05445, 0, 0.0544472)); allpoints.push(new PMPoint(-4.6, -2.54555, -2.49111)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 1, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 7, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.077, 4.6, 0)); allpoints.push(new PMPoint(-1.077, 4.6, -1)); allpoints.push(new PMPoint(-0.923, 4.6, -1)); allpoints.push(new PMPoint(-0.923, 4.6, 0)); allpoints.push(new PMPoint(-1.077, 0, 0)); allpoints.push(new PMPoint(-1.077, 0, -1)); allpoints.push(new PMPoint(-0.923, 0, -1)); allpoints.push(new PMPoint(-0.923, 0, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 2, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 3, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 3, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 0, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 4, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 1, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -3.70889, -4.6)); allpoints.push(new PMPoint(-4.6, -3.6, -4.6)); allpoints.push(new PMPoint(-4.6, -3.49111, -4.54555)); allpoints.push(new PMPoint(-4.54555, -3.65445, -4.6)); allpoints.push(new PMPoint(-0.945553, -0.0544472, -1)); allpoints.push(new PMPoint(-0.945553, -0.0544472, 0)); allpoints.push(new PMPoint(-1.05445, 0.0544472, 0)); allpoints.push(new PMPoint(-1.05445, 0.0544472, -1)); allpoints.push(new PMPoint(-4.6, -3.70889, -3.65445)); allpoints.push(new PMPoint(-4.6, -3.49111, -3.54555)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 2, 9, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 9, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 9, 8, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 8, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(8, 0, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(8, 3, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(8, 4, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(9, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(9, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(9, 0, 8, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 1, 3, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, 4.6, -0.077)); allpoints.push(new PMPoint(-2, 4.6, 0.077)); allpoints.push(new PMPoint(-1, 4.6, -0.077)); allpoints.push(new PMPoint(-1, 4.6, 0.077)); allpoints.push(new PMPoint(-2, 0, -0.077)); allpoints.push(new PMPoint(-2, 0, 0.077)); allpoints.push(new PMPoint(-1, 0, -0.077)); allpoints.push(new PMPoint(-1, 0, 0.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 2, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 3, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 0, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -2.54555, -2.65445)); allpoints.push(new PMPoint(-4.6, -2.65445, -2.54555)); allpoints.push(new PMPoint(-4.6, -3.65445, -3.54555)); allpoints.push(new PMPoint(-2, -0.0544472, 0.0544472)); allpoints.push(new PMPoint(-1, -0.0544472, 0.0544472)); allpoints.push(new PMPoint(-4.6, -3.54555, -3.65445)); allpoints.push(new PMPoint(-2, 0.0544472, -0.0544472)); allpoints.push(new PMPoint(-1, 0.0544472, -0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 4, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 2, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 4, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 3, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 3, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.70889, -4.6, 4.6)); allpoints.push(new PMPoint(-2.49111, -4.6, 4.6)); allpoints.push(new PMPoint(0.0544472, -2.05445, 4.6)); allpoints.push(new PMPoint(0.0544472, -2.05445, 0)); allpoints.push(new PMPoint(-2.49111, -4.6, -2.54555)); allpoints.push(new PMPoint(-0.0544472, -1.94555, 4.6)); allpoints.push(new PMPoint(-0.0544472, -1.94555, 0)); allpoints.push(new PMPoint(-2.70889, -4.6, -2.65445)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -1.077, 4.6)); allpoints.push(new PMPoint(-1, -0.923, 4.6)); allpoints.push(new PMPoint(0, -1.077, 4.6)); allpoints.push(new PMPoint(0, -0.923, 4.6)); allpoints.push(new PMPoint(0, -1.077, 0)); allpoints.push(new PMPoint(0, -0.923, 0)); allpoints.push(new PMPoint(-1, -1.077, 0)); allpoints.push(new PMPoint(-1, -0.923, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 2, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 4, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -4.6, -3.6)); allpoints.push(new PMPoint(-4.6, -4.6, -3.70889)); allpoints.push(new PMPoint(-3.65445, -4.6, -3.70889)); allpoints.push(new PMPoint(0, -0.945553, -0.0544472)); allpoints.push(new PMPoint(-4.54555, -4.6, -3.49111)); allpoints.push(new PMPoint(-3.54555, -4.6, -3.49111)); allpoints.push(new PMPoint(0, -1.05445, 0.0544472)); allpoints.push(new PMPoint(-1, -1.05445, 0.0544472)); allpoints.push(new PMPoint(-4.6, -4.54555, -3.65445)); allpoints.push(new PMPoint(-1, -0.945553, -0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 9, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(8, 9, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(8, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(8, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 6, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 5, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 4, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 9, 8, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 8, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 8, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(4, 0, 1, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(4, 1, 2, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(4, 2, 5, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.077, -2, 4.6)); allpoints.push(new PMPoint(-0.077, -1, 4.6)); allpoints.push(new PMPoint(0.077, -2, 4.6)); allpoints.push(new PMPoint(0.077, -1, 4.6)); allpoints.push(new PMPoint(0.077, -2, 0)); allpoints.push(new PMPoint(0.077, -1, 0)); allpoints.push(new PMPoint(-0.077, -2, 0)); allpoints.push(new PMPoint(-0.077, -1, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 2, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -4.6, 4.6)); allpoints.push(new PMPoint(-4.49111, -4.6, 4.6)); allpoints.push(new PMPoint(-0.945553, -1.05445, 4.6)); allpoints.push(new PMPoint(-0.945553, -1.05445, 0)); allpoints.push(new PMPoint(-4.49111, -4.6, -3.54555)); allpoints.push(new PMPoint(-4.6, -4.49111, 4.6)); allpoints.push(new PMPoint(-1.05445, -0.945553, 4.6)); allpoints.push(new PMPoint(-1.05445, -0.945553, 0)); allpoints.push(new PMPoint(-4.6, -4.49111, -3.54555)); allpoints.push(new PMPoint(-4.6, -4.6, -3.6)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 4, 9, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 9, 8, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 8, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(8, 9, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(8, 0, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(9, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(9, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 6, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(1, 6, 5, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.70889, 4.6, -4.6)); allpoints.push(new PMPoint(-2.49111, 4.6, -4.6)); allpoints.push(new PMPoint(-2.49111, -2.54555, -4.6)); allpoints.push(new PMPoint(0.0544472, 4.6, -2.05445)); allpoints.push(new PMPoint(0.0544472, 0, -2.05445)); allpoints.push(new PMPoint(-2.70889, -2.65445, -4.6)); allpoints.push(new PMPoint(-0.0544472, 4.6, -1.94555)); allpoints.push(new PMPoint(-0.0544472, 0, -1.94555)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 4.6, -1.077)); allpoints.push(new PMPoint(-1, 4.6, -0.923)); allpoints.push(new PMPoint(0, 4.6, -0.923)); allpoints.push(new PMPoint(0, 4.6, -1.077)); allpoints.push(new PMPoint(-1, 0, -1.077)); allpoints.push(new PMPoint(-1, 0, -0.923)); allpoints.push(new PMPoint(0, 0, -0.923)); allpoints.push(new PMPoint(0, 0, -1.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -3.6, -4.6)); allpoints.push(new PMPoint(-4.6, -3.70889, -4.6)); allpoints.push(new PMPoint(-3.65445, -3.70889, -4.6)); allpoints.push(new PMPoint(-4.54555, -3.49111, -4.6)); allpoints.push(new PMPoint(-3.54555, -3.49111, -4.6)); allpoints.push(new PMPoint(0, 0.0544472, -1.05445)); allpoints.push(new PMPoint(0, -0.0544472, -0.945553)); allpoints.push(new PMPoint(-1, 0.0544472, -1.05445)); allpoints.push(new PMPoint(-1, -0.0544472, -0.945553)); allpoints.push(new PMPoint(-4.6, -3.65445, -4.54555)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 8, 9, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 9, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 1, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 8, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 2, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(9, 8, 7, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(9, 7, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(9, 3, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 9, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(2, 3, 4, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.077, 4.6, -2)); allpoints.push(new PMPoint(-0.077, 4.6, -1)); allpoints.push(new PMPoint(0.077, 4.6, -2)); allpoints.push(new PMPoint(0.077, 4.6, -1)); allpoints.push(new PMPoint(0.077, 0, -2)); allpoints.push(new PMPoint(0.077, 0, -1)); allpoints.push(new PMPoint(-0.077, 0, -2)); allpoints.push(new PMPoint(-0.077, 0, -1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, 4.6, -4.6)); allpoints.push(new PMPoint(-4.49111, 4.6, -4.6)); allpoints.push(new PMPoint(-4.49111, -3.54555, -4.6)); allpoints.push(new PMPoint(-0.945553, 4.6, -1.05445)); allpoints.push(new PMPoint(-0.945553, 0, -1.05445)); allpoints.push(new PMPoint(-4.6, -3.6, -4.6)); allpoints.push(new PMPoint(-4.6, 4.6, -4.49111)); allpoints.push(new PMPoint(-1.05445, 4.6, -0.945553)); allpoints.push(new PMPoint(-1.05445, 0, -0.945553)); allpoints.push(new PMPoint(-4.6, -3.54555, -4.49111)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 8, 9, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 9, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 8, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(9, 8, 7, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(9, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 9, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(6, 3, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(6, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -4.6, -2.49111)); allpoints.push(new PMPoint(4.6, -4.6, -2.70889)); allpoints.push(new PMPoint(4.6, -1.94555, -0.0544472)); allpoints.push(new PMPoint(-2.54555, -4.6, -2.49111)); allpoints.push(new PMPoint(-2.65445, -4.6, -2.70889)); allpoints.push(new PMPoint(4.6, -2.05445, 0.0544472)); allpoints.push(new PMPoint(0, -2.05445, 0.0544472)); allpoints.push(new PMPoint(0, -1.94555, -0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -1.077, 0)); allpoints.push(new PMPoint(4.6, -0.923, 0)); allpoints.push(new PMPoint(4.6, -1.077, -1)); allpoints.push(new PMPoint(4.6, -0.923, -1)); allpoints.push(new PMPoint(0, -1.077, 0)); allpoints.push(new PMPoint(0, -0.923, 0)); allpoints.push(new PMPoint(0, -1.077, -1)); allpoints.push(new PMPoint(0, -0.923, -1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.6, -4.6, -4.6)); allpoints.push(new PMPoint(-3.70889, -4.6, -4.6)); allpoints.push(new PMPoint(-3.70889, -4.6, -3.65445)); allpoints.push(new PMPoint(-3.65445, -4.54555, -4.6)); allpoints.push(new PMPoint(-3.49111, -4.6, -4.54555)); allpoints.push(new PMPoint(-3.49111, -4.6, -3.54555)); allpoints.push(new PMPoint(0.0544472, -1.05445, -1)); allpoints.push(new PMPoint(-0.0544472, -0.945553, -1)); allpoints.push(new PMPoint(-0.0544472, -0.945553, 0)); allpoints.push(new PMPoint(0.0544472, -1.05445, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 6, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 8, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(9, 2, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(8, 7, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(8, 3, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(8, 1, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 8, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 8, 9, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 6, 9, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 9, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 4, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 5, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 1, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -2, -0.077)); allpoints.push(new PMPoint(4.6, -1, -0.077)); allpoints.push(new PMPoint(4.6, -2, 0.077)); allpoints.push(new PMPoint(4.6, -1, 0.077)); allpoints.push(new PMPoint(0, -2, -0.077)); allpoints.push(new PMPoint(0, -1, -0.077)); allpoints.push(new PMPoint(0, -2, 0.077)); allpoints.push(new PMPoint(0, -1, 0.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 0, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 2, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 4, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.54555, -4.6, -2.65445)); allpoints.push(new PMPoint(-3.54555, -4.6, -3.65445)); allpoints.push(new PMPoint(-2.65445, -4.6, -2.54555)); allpoints.push(new PMPoint(-3.65445, -4.6, -3.54555)); allpoints.push(new PMPoint(0.0544472, -2, -0.0544472)); allpoints.push(new PMPoint(0.0544472, -1, -0.0544472)); allpoints.push(new PMPoint(-0.0544472, -2, 0.0544472)); allpoints.push(new PMPoint(-0.0544472, -1, 0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -2.70889, -4.6)); allpoints.push(new PMPoint(4.6, -2.49111, -4.6)); allpoints.push(new PMPoint(4.6, 0.0544472, -2.05445)); allpoints.push(new PMPoint(-2.65445, -2.70889, -4.6)); allpoints.push(new PMPoint(-2.54555, -2.49111, -4.6)); allpoints.push(new PMPoint(4.6, -0.0544472, -1.94555)); allpoints.push(new PMPoint(0, -0.0544472, -1.94555)); allpoints.push(new PMPoint(0, 0.0544472, -2.05445)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 0, -1.077)); allpoints.push(new PMPoint(4.6, -1, -1.077)); allpoints.push(new PMPoint(4.6, 0, -0.923)); allpoints.push(new PMPoint(4.6, -1, -0.923)); allpoints.push(new PMPoint(0, 0, -1.077)); allpoints.push(new PMPoint(0, -1, -1.077)); allpoints.push(new PMPoint(0, 0, -0.923)); allpoints.push(new PMPoint(0, -1, -0.923)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.6, -4.6, -4.6)); allpoints.push(new PMPoint(-3.70889, -4.6, -4.6)); allpoints.push(new PMPoint(-3.70889, -3.65445, -4.6)); allpoints.push(new PMPoint(-3.49111, -4.54555, -4.6)); allpoints.push(new PMPoint(-3.49111, -3.54555, -4.6)); allpoints.push(new PMPoint(0.0544472, 0, -1.05445)); allpoints.push(new PMPoint(-0.0544472, 0, -0.945553)); allpoints.push(new PMPoint(0.0544472, -1, -1.05445)); allpoints.push(new PMPoint(-0.0544472, -1, -0.945553)); allpoints.push(new PMPoint(-3.65445, -4.6, -4.54555)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(9, 8, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 6, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 2, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 8, 9, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 9, 0, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 0, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 8, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 7, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 3, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(9, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 4, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(1, 4, 3, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(1, 3, 0, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -0.077, -2)); allpoints.push(new PMPoint(4.6, 0.077, -2)); allpoints.push(new PMPoint(4.6, 0.077, -1)); allpoints.push(new PMPoint(4.6, -0.077, -1)); allpoints.push(new PMPoint(0, -0.077, -2)); allpoints.push(new PMPoint(0, 0.077, -2)); allpoints.push(new PMPoint(0, 0.077, -1)); allpoints.push(new PMPoint(0, -0.077, -1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.54555, -2.65445, -4.6)); allpoints.push(new PMPoint(-3.54555, -3.65445, -4.6)); allpoints.push(new PMPoint(-2.65445, -2.54555, -4.6)); allpoints.push(new PMPoint(-3.65445, -3.54555, -4.6)); allpoints.push(new PMPoint(-0.0544472, 0.0544472, -2)); allpoints.push(new PMPoint(-0.0544472, 0.0544472, -1)); allpoints.push(new PMPoint(0.0544472, -0.0544472, -2)); allpoints.push(new PMPoint(0.0544472, -0.0544472, -1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 6, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 7, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 5, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 6, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 4, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 3, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 7, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 7, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -4.6, -4.6)); allpoints.push(new PMPoint(-3.6, -4.6, -4.6)); allpoints.push(new PMPoint(4.6, -4.49111, -4.6)); allpoints.push(new PMPoint(-3.54555, -4.49111, -4.6)); allpoints.push(new PMPoint(0, -0.945553, -1.05445)); allpoints.push(new PMPoint(4.6, -0.945553, -1.05445)); allpoints.push(new PMPoint(4.6, -4.6, -4.49111)); allpoints.push(new PMPoint(-3.54555, -4.6, -4.49111)); allpoints.push(new PMPoint(0, -1.05445, -0.945553)); allpoints.push(new PMPoint(4.6, -1.05445, -0.945553)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 8, 9, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 9, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 8, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(9, 8, 7, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(9, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 9, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 0, 2, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(6, 7, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(6, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.945553, 1, 1.05445)); allpoints.push(new PMPoint(1.05445, 1, 0.945553)); allpoints.push(new PMPoint(-0.0544472, 0, 0.0544472)); allpoints.push(new PMPoint(0.0544472, 0, -0.0544472)); allpoints.push(new PMPoint(-0.0544472, -1, 0.0544472)); allpoints.push(new PMPoint(0.0544472, -1, -0.0544472)); allpoints.push(new PMPoint(0.945553, 0, 1.05445)); allpoints.push(new PMPoint(1.05445, 0, 0.945553)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.0544472, 0.0544472, -1)); allpoints.push(new PMPoint(0.0544472, -0.0544472, -1)); allpoints.push(new PMPoint(0.945553, 1.05445, 0)); allpoints.push(new PMPoint(1.05445, 0.945553, 0)); allpoints.push(new PMPoint(0.945553, 1.05445, 1)); allpoints.push(new PMPoint(1.05445, 0.945553, 1)); allpoints.push(new PMPoint(-0.0544472, 0.0544472, 0)); allpoints.push(new PMPoint(0.0544472, -0.0544472, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 2, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 4, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0, 0.077)); allpoints.push(new PMPoint(0, 0, -0.077)); allpoints.push(new PMPoint(-1, 0, 0.077)); allpoints.push(new PMPoint(-1, 0, -0.077)); allpoints.push(new PMPoint(0, -1, 0.077)); allpoints.push(new PMPoint(0, -1, -0.077)); allpoints.push(new PMPoint(-1, -1, 0.077)); allpoints.push(new PMPoint(-1, -1, -0.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 6, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 2, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 4, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 2, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 0, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 4, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 5, 1, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 0.077, -1)); allpoints.push(new PMPoint(0, -0.077, -1)); allpoints.push(new PMPoint(0, 0.077, 0)); allpoints.push(new PMPoint(0, -0.077, 0)); allpoints.push(new PMPoint(-1, 0.077, -1)); allpoints.push(new PMPoint(-1, -0.077, -1)); allpoints.push(new PMPoint(-1, 0.077, 0)); allpoints.push(new PMPoint(-1, -0.077, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 4, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 0, 1, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.077, -1, -1)); allpoints.push(new PMPoint(-0.077, -1, -1)); allpoints.push(new PMPoint(0.077, 0, -1)); allpoints.push(new PMPoint(-0.077, 0, -1)); allpoints.push(new PMPoint(0.077, 0, 0)); allpoints.push(new PMPoint(-0.077, 0, 0)); allpoints.push(new PMPoint(0.077, -1, 0)); allpoints.push(new PMPoint(-0.077, -1, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, } ); faces_material.side = THREE.DoubleSide; faces_material.transparent = true; <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 0)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.077, 4.6, 4.6)); allpoints.push(new PMPoint(1.923, 4.6, 4.6)); allpoints.push(new PMPoint(1.923, 2, 4.6)); allpoints.push(new PMPoint(1.923, 2, 2)); allpoints.push(new PMPoint(1.923, 4.6, 2)); allpoints.push(new PMPoint(2.077, 2, 4.6)); allpoints.push(new PMPoint(2.077, 2, 2)); allpoints.push(new PMPoint(2.077, 4.6, 2)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 1.077, 4.6)); allpoints.push(new PMPoint(0, 0.923, 4.6)); allpoints.push(new PMPoint(1, 0.923, 4.6)); allpoints.push(new PMPoint(0, 0.923, 1)); allpoints.push(new PMPoint(1, 0.923, 1)); allpoints.push(new PMPoint(1, 1.077, 4.6)); allpoints.push(new PMPoint(0, 1.077, 1)); allpoints.push(new PMPoint(1, 1.077, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, 4.6, 0.923)); allpoints.push(new PMPoint(0, 4.6, 1.077)); allpoints.push(new PMPoint(1, 4.6, 1.077)); allpoints.push(new PMPoint(1, 4.6, 0.923)); allpoints.push(new PMPoint(0, 1, 0.923)); allpoints.push(new PMPoint(0, 1, 1.077)); allpoints.push(new PMPoint(1, 1, 1.077)); allpoints.push(new PMPoint(1, 1, 0.923)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 2.077, 4.6)); allpoints.push(new PMPoint(4.6, 1.923, 4.6)); allpoints.push(new PMPoint(2, 2.077, 4.6)); allpoints.push(new PMPoint(2, 1.923, 4.6)); allpoints.push(new PMPoint(2, 2.077, 2)); allpoints.push(new PMPoint(2, 1.923, 2)); allpoints.push(new PMPoint(4.6, 2.077, 2)); allpoints.push(new PMPoint(4.6, 1.923, 2)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 2, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 4, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.923, 0, 4.6)); allpoints.push(new PMPoint(0.923, 1, 4.6)); allpoints.push(new PMPoint(1.077, 1, 4.6)); allpoints.push(new PMPoint(1.077, 0, 4.6)); allpoints.push(new PMPoint(0.923, 0, 1)); allpoints.push(new PMPoint(0.923, 1, 1)); allpoints.push(new PMPoint(1.077, 1, 1)); allpoints.push(new PMPoint(1.077, 0, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 2, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 3, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 0, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 1, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 0, 0.923)); allpoints.push(new PMPoint(4.6, 1, 0.923)); allpoints.push(new PMPoint(4.6, 0, 1.077)); allpoints.push(new PMPoint(4.6, 1, 1.077)); allpoints.push(new PMPoint(1, 0, 0.923)); allpoints.push(new PMPoint(1, 1, 0.923)); allpoints.push(new PMPoint(1, 0, 1.077)); allpoints.push(new PMPoint(1, 1, 1.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 0, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 2, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 4, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.05445, 1.94555, 4.6)); allpoints.push(new PMPoint(1.05445, 0.945553, 4.6)); allpoints.push(new PMPoint(1.94555, 2.05445, 4.6)); allpoints.push(new PMPoint(0.945553, 1.05445, 4.6)); allpoints.push(new PMPoint(1.94555, 2.05445, 2)); allpoints.push(new PMPoint(0.945553, 1.05445, 1)); allpoints.push(new PMPoint(2.05445, 1.94555, 2)); allpoints.push(new PMPoint(1.05445, 0.945553, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 2, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 4.6, 2.077)); allpoints.push(new PMPoint(4.6, 4.6, 1.923)); allpoints.push(new PMPoint(2, 4.6, 2.077)); allpoints.push(new PMPoint(2, 4.6, 1.923)); allpoints.push(new PMPoint(2, 2, 2.077)); allpoints.push(new PMPoint(2, 2, 1.923)); allpoints.push(new PMPoint(4.6, 2, 2.077)); allpoints.push(new PMPoint(4.6, 2, 1.923)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.923, 4.6, 0)); allpoints.push(new PMPoint(0.923, 4.6, 1)); allpoints.push(new PMPoint(1.077, 4.6, 1)); allpoints.push(new PMPoint(1.077, 4.6, 0)); allpoints.push(new PMPoint(0.923, 1, 0)); allpoints.push(new PMPoint(0.923, 1, 1)); allpoints.push(new PMPoint(1.077, 1, 1)); allpoints.push(new PMPoint(1.077, 1, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 0.923, 1)); allpoints.push(new PMPoint(4.6, 1.077, 1)); allpoints.push(new PMPoint(4.6, 0.923, 0)); allpoints.push(new PMPoint(4.6, 1.077, 0)); allpoints.push(new PMPoint(1, 0.923, 1)); allpoints.push(new PMPoint(1, 1.077, 1)); allpoints.push(new PMPoint(1, 0.923, 0)); allpoints.push(new PMPoint(1, 1.077, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2.05445, 4.6, 1.94555)); allpoints.push(new PMPoint(1.05445, 4.6, 0.945553)); allpoints.push(new PMPoint(1.94555, 4.6, 2.05445)); allpoints.push(new PMPoint(0.945553, 4.6, 1.05445)); allpoints.push(new PMPoint(2.05445, 2, 1.94555)); allpoints.push(new PMPoint(1.05445, 1, 0.945553)); allpoints.push(new PMPoint(1.94555, 2, 2.05445)); allpoints.push(new PMPoint(0.945553, 1, 1.05445)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 2, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 3, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 0, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 2.05445, 1.94555)); allpoints.push(new PMPoint(4.6, 1.94555, 2.05445)); allpoints.push(new PMPoint(4.6, 0.945553, 1.05445)); allpoints.push(new PMPoint(2, 1.94555, 2.05445)); allpoints.push(new PMPoint(1, 0.945553, 1.05445)); allpoints.push(new PMPoint(4.6, 1.05445, 0.945553)); allpoints.push(new PMPoint(2, 2.05445, 1.94555)); allpoints.push(new PMPoint(1, 1.05445, 0.945553)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.923, 4.6, 4.6)); allpoints.push(new PMPoint(-2.077, 4.6, 4.6)); allpoints.push(new PMPoint(-2.077, 0, 4.6)); allpoints.push(new PMPoint(-2.077, 0, 0)); allpoints.push(new PMPoint(-2.077, 4.6, 0)); allpoints.push(new PMPoint(-1.923, 0, 4.6)); allpoints.push(new PMPoint(-1.923, 0, 0)); allpoints.push(new PMPoint(-1.923, 4.6, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.945553, -0.0544472, 4.6)); allpoints.push(new PMPoint(0.0544472, 0.945553, 4.6)); allpoints.push(new PMPoint(-0.0544472, 1.05445, 4.6)); allpoints.push(new PMPoint(0.0544472, 0.945553, 1)); allpoints.push(new PMPoint(-0.0544472, 1.05445, 1)); allpoints.push(new PMPoint(-1.05445, 0.0544472, 4.6)); allpoints.push(new PMPoint(-0.945553, -0.0544472, 0)); allpoints.push(new PMPoint(-1.05445, 0.0544472, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.945553, 4.6, -0.0544472)); allpoints.push(new PMPoint(0.0544472, 4.6, 0.945553)); allpoints.push(new PMPoint(-0.0544472, 4.6, 1.05445)); allpoints.push(new PMPoint(0.0544472, 1, 0.945553)); allpoints.push(new PMPoint(-0.0544472, 1, 1.05445)); allpoints.push(new PMPoint(-1.05445, 4.6, 0.0544472)); allpoints.push(new PMPoint(-0.945553, 0, -0.0544472)); allpoints.push(new PMPoint(-1.05445, 0, 0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 2, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 6, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 1, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.077, 4.6, 4.6)); allpoints.push(new PMPoint(-0.077, 4.6, 4.6)); allpoints.push(new PMPoint(-0.077, 1, 4.6)); allpoints.push(new PMPoint(-0.077, 1, 1)); allpoints.push(new PMPoint(-0.077, 4.6, 1)); allpoints.push(new PMPoint(0.077, 1, 4.6)); allpoints.push(new PMPoint(0.077, 1, 1)); allpoints.push(new PMPoint(0.077, 4.6, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -1.923, 4.6)); allpoints.push(new PMPoint(4.6, -2.077, 4.6)); allpoints.push(new PMPoint(0, -1.923, 4.6)); allpoints.push(new PMPoint(0, -2.077, 4.6)); allpoints.push(new PMPoint(4.6, -1.923, 0)); allpoints.push(new PMPoint(4.6, -2.077, 0)); allpoints.push(new PMPoint(0, -1.923, 0)); allpoints.push(new PMPoint(0, -2.077, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1.05445, -0.0544472, 4.6)); allpoints.push(new PMPoint(0.0544472, -1.05445, 4.6)); allpoints.push(new PMPoint(-0.0544472, -0.945553, 4.6)); allpoints.push(new PMPoint(-0.0544472, -0.945553, 0)); allpoints.push(new PMPoint(0.0544472, -1.05445, 0)); allpoints.push(new PMPoint(0.945553, 0.0544472, 4.6)); allpoints.push(new PMPoint(0.945553, 0.0544472, 1)); allpoints.push(new PMPoint(1.05445, -0.0544472, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 1, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 7, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 0.0544472, 0.945553)); allpoints.push(new PMPoint(4.6, -0.0544472, 1.05445)); allpoints.push(new PMPoint(4.6, -0.945553, -0.0544472)); allpoints.push(new PMPoint(4.6, -1.05445, 0.0544472)); allpoints.push(new PMPoint(0, -0.945553, -0.0544472)); allpoints.push(new PMPoint(0, -1.05445, 0.0544472)); allpoints.push(new PMPoint(1, 0.0544472, 0.945553)); allpoints.push(new PMPoint(1, -0.0544472, 1.05445)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 0.077, 4.6)); allpoints.push(new PMPoint(4.6, -0.077, 4.6)); allpoints.push(new PMPoint(4.6, -0.077, 1)); allpoints.push(new PMPoint(1, 0.077, 4.6)); allpoints.push(new PMPoint(1, -0.077, 4.6)); allpoints.push(new PMPoint(1, -0.077, 1)); allpoints.push(new PMPoint(1, 0.077, 1)); allpoints.push(new PMPoint(4.6, 0.077, 1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 5, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 7, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 4.6, -1.923)); allpoints.push(new PMPoint(4.6, 4.6, -2.077)); allpoints.push(new PMPoint(0, 4.6, -1.923)); allpoints.push(new PMPoint(0, 4.6, -2.077)); allpoints.push(new PMPoint(0, 0, -1.923)); allpoints.push(new PMPoint(0, 0, -2.077)); allpoints.push(new PMPoint(4.6, 0, -1.923)); allpoints.push(new PMPoint(4.6, 0, -2.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1.05445, 4.6, -0.0544472)); allpoints.push(new PMPoint(0.0544472, 4.6, -1.05445)); allpoints.push(new PMPoint(-0.0544472, 4.6, -0.945553)); allpoints.push(new PMPoint(0.945553, 4.6, 0.0544472)); allpoints.push(new PMPoint(1.05445, 1, -0.0544472)); allpoints.push(new PMPoint(0.0544472, 0, -1.05445)); allpoints.push(new PMPoint(-0.0544472, 0, -0.945553)); allpoints.push(new PMPoint(0.945553, 1, 0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 1.05445, -0.0544472)); allpoints.push(new PMPoint(4.6, 0.945553, 0.0544472)); allpoints.push(new PMPoint(4.6, 0.0544472, -1.05445)); allpoints.push(new PMPoint(4.6, -0.0544472, -0.945553)); allpoints.push(new PMPoint(0, 0.0544472, -1.05445)); allpoints.push(new PMPoint(0, -0.0544472, -0.945553)); allpoints.push(new PMPoint(1, 1.05445, -0.0544472)); allpoints.push(new PMPoint(1, 0.945553, 0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 4.6, 0.077)); allpoints.push(new PMPoint(4.6, 4.6, -0.077)); allpoints.push(new PMPoint(1, 4.6, -0.077)); allpoints.push(new PMPoint(1, 1, -0.077)); allpoints.push(new PMPoint(4.6, 1, -0.077)); allpoints.push(new PMPoint(1, 4.6, 0.077)); allpoints.push(new PMPoint(1, 1, 0.077)); allpoints.push(new PMPoint(4.6, 1, 0.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -2.49111, 4.6)); allpoints.push(new PMPoint(-4.6, -2.70889, 4.6)); allpoints.push(new PMPoint(-1.94555, -0.0544472, 4.6)); allpoints.push(new PMPoint(-1.94555, -0.0544472, 0)); allpoints.push(new PMPoint(-4.6, -2.70889, -2.65445)); allpoints.push(new PMPoint(-2.05445, 0.0544472, 4.6)); allpoints.push(new PMPoint(-2.05445, 0.0544472, 0)); allpoints.push(new PMPoint(-4.6, -2.49111, -2.54555)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.077, -1, 4.6)); allpoints.push(new PMPoint(-1.077, 0, 4.6)); allpoints.push(new PMPoint(-0.923, 0, 4.6)); allpoints.push(new PMPoint(-0.923, -1, 4.6)); allpoints.push(new PMPoint(-1.077, -1, 0)); allpoints.push(new PMPoint(-1.077, 0, 0)); allpoints.push(new PMPoint(-0.923, 0, 0)); allpoints.push(new PMPoint(-0.923, -1, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 2, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 3, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 0, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 1, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -4.6, -3.70889)); allpoints.push(new PMPoint(-4.6, -4.6, -3.6)); allpoints.push(new PMPoint(-4.6, -4.54555, -3.49111)); allpoints.push(new PMPoint(-4.54555, -4.6, -3.65445)); allpoints.push(new PMPoint(-0.945553, -1, -0.0544472)); allpoints.push(new PMPoint(-0.945553, 0, -0.0544472)); allpoints.push(new PMPoint(-1.05445, 0, 0.0544472)); allpoints.push(new PMPoint(-1.05445, -1, 0.0544472)); allpoints.push(new PMPoint(-4.6, -3.65445, -3.70889)); allpoints.push(new PMPoint(-4.6, -3.54555, -3.49111)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 9, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 2, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(8, 9, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(8, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 2, 1, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 3, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 8, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 4, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 9, 8, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 8, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, -0.077, 4.6)); allpoints.push(new PMPoint(-2, 0.077, 4.6)); allpoints.push(new PMPoint(-1, 0.077, 4.6)); allpoints.push(new PMPoint(-2, 0.077, 0)); allpoints.push(new PMPoint(-1, 0.077, 0)); allpoints.push(new PMPoint(-1, -0.077, 4.6)); allpoints.push(new PMPoint(-2, -0.077, 0)); allpoints.push(new PMPoint(-1, -0.077, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 4, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 2, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 4, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 3, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 3, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, 4.6, -2.49111)); allpoints.push(new PMPoint(-4.6, 4.6, -2.70889)); allpoints.push(new PMPoint(-1.94555, 4.6, -0.0544472)); allpoints.push(new PMPoint(-1.94555, 0, -0.0544472)); allpoints.push(new PMPoint(-4.6, -2.65445, -2.70889)); allpoints.push(new PMPoint(-2.05445, 4.6, 0.0544472)); allpoints.push(new PMPoint(-2.05445, 0, 0.0544472)); allpoints.push(new PMPoint(-4.6, -2.54555, -2.49111)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 1, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 7, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1.077, 4.6, 0)); allpoints.push(new PMPoint(-1.077, 4.6, -1)); allpoints.push(new PMPoint(-0.923, 4.6, -1)); allpoints.push(new PMPoint(-0.923, 4.6, 0)); allpoints.push(new PMPoint(-1.077, 0, 0)); allpoints.push(new PMPoint(-1.077, 0, -1)); allpoints.push(new PMPoint(-0.923, 0, -1)); allpoints.push(new PMPoint(-0.923, 0, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 2, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 3, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 3, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 0, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 4, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 1, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -3.70889, -4.6)); allpoints.push(new PMPoint(-4.6, -3.6, -4.6)); allpoints.push(new PMPoint(-4.6, -3.49111, -4.54555)); allpoints.push(new PMPoint(-4.54555, -3.65445, -4.6)); allpoints.push(new PMPoint(-0.945553, -0.0544472, -1)); allpoints.push(new PMPoint(-0.945553, -0.0544472, 0)); allpoints.push(new PMPoint(-1.05445, 0.0544472, 0)); allpoints.push(new PMPoint(-1.05445, 0.0544472, -1)); allpoints.push(new PMPoint(-4.6, -3.70889, -3.65445)); allpoints.push(new PMPoint(-4.6, -3.49111, -3.54555)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 2, 9, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 9, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 2, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 9, 8, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 8, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(8, 0, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(8, 3, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(8, 4, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(9, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(9, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(9, 0, 8, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 1, 3, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2, 4.6, -0.077)); allpoints.push(new PMPoint(-2, 4.6, 0.077)); allpoints.push(new PMPoint(-1, 4.6, -0.077)); allpoints.push(new PMPoint(-1, 4.6, 0.077)); allpoints.push(new PMPoint(-2, 0, -0.077)); allpoints.push(new PMPoint(-2, 0, 0.077)); allpoints.push(new PMPoint(-1, 0, -0.077)); allpoints.push(new PMPoint(-1, 0, 0.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(0, 2, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 3, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 0, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -2.54555, -2.65445)); allpoints.push(new PMPoint(-4.6, -2.65445, -2.54555)); allpoints.push(new PMPoint(-4.6, -3.65445, -3.54555)); allpoints.push(new PMPoint(-2, -0.0544472, 0.0544472)); allpoints.push(new PMPoint(-1, -0.0544472, 0.0544472)); allpoints.push(new PMPoint(-4.6, -3.54555, -3.65445)); allpoints.push(new PMPoint(-2, 0.0544472, -0.0544472)); allpoints.push(new PMPoint(-1, 0.0544472, -0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 4, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 2, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 4, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 3, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 5, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 3, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.70889, -4.6, 4.6)); allpoints.push(new PMPoint(-2.49111, -4.6, 4.6)); allpoints.push(new PMPoint(0.0544472, -2.05445, 4.6)); allpoints.push(new PMPoint(0.0544472, -2.05445, 0)); allpoints.push(new PMPoint(-2.49111, -4.6, -2.54555)); allpoints.push(new PMPoint(-0.0544472, -1.94555, 4.6)); allpoints.push(new PMPoint(-0.0544472, -1.94555, 0)); allpoints.push(new PMPoint(-2.70889, -4.6, -2.65445)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 4, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 0, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 4, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 2, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -1.077, 4.6)); allpoints.push(new PMPoint(-1, -0.923, 4.6)); allpoints.push(new PMPoint(0, -1.077, 4.6)); allpoints.push(new PMPoint(0, -0.923, 4.6)); allpoints.push(new PMPoint(0, -1.077, 0)); allpoints.push(new PMPoint(0, -0.923, 0)); allpoints.push(new PMPoint(-1, -1.077, 0)); allpoints.push(new PMPoint(-1, -0.923, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 2, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 4, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -4.6, -3.6)); allpoints.push(new PMPoint(-4.6, -4.6, -3.70889)); allpoints.push(new PMPoint(-3.65445, -4.6, -3.70889)); allpoints.push(new PMPoint(0, -0.945553, -0.0544472)); allpoints.push(new PMPoint(-4.54555, -4.6, -3.49111)); allpoints.push(new PMPoint(-3.54555, -4.6, -3.49111)); allpoints.push(new PMPoint(0, -1.05445, 0.0544472)); allpoints.push(new PMPoint(-1, -1.05445, 0.0544472)); allpoints.push(new PMPoint(-4.6, -4.54555, -3.65445)); allpoints.push(new PMPoint(-1, -0.945553, -0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 9, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(8, 9, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(8, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(8, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 6, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 5, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 4, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 9, 8, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 8, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 8, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(4, 0, 1, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(4, 1, 2, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(4, 2, 5, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.077, -2, 4.6)); allpoints.push(new PMPoint(-0.077, -1, 4.6)); allpoints.push(new PMPoint(0.077, -2, 4.6)); allpoints.push(new PMPoint(0.077, -1, 4.6)); allpoints.push(new PMPoint(0.077, -2, 0)); allpoints.push(new PMPoint(0.077, -1, 0)); allpoints.push(new PMPoint(-0.077, -2, 0)); allpoints.push(new PMPoint(-0.077, -1, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(5, 7, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 1, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 5, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 4, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 3, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 2, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -4.6, 4.6)); allpoints.push(new PMPoint(-4.49111, -4.6, 4.6)); allpoints.push(new PMPoint(-0.945553, -1.05445, 4.6)); allpoints.push(new PMPoint(-0.945553, -1.05445, 0)); allpoints.push(new PMPoint(-4.49111, -4.6, -3.54555)); allpoints.push(new PMPoint(-4.6, -4.49111, 4.6)); allpoints.push(new PMPoint(-1.05445, -0.945553, 4.6)); allpoints.push(new PMPoint(-1.05445, -0.945553, 0)); allpoints.push(new PMPoint(-4.6, -4.49111, -3.54555)); allpoints.push(new PMPoint(-4.6, -4.6, -3.6)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 4, 9, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 9, 8, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 8, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(8, 9, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(8, 0, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(9, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(9, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 6, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(1, 6, 5, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.70889, 4.6, -4.6)); allpoints.push(new PMPoint(-2.49111, 4.6, -4.6)); allpoints.push(new PMPoint(-2.49111, -2.54555, -4.6)); allpoints.push(new PMPoint(0.0544472, 4.6, -2.05445)); allpoints.push(new PMPoint(0.0544472, 0, -2.05445)); allpoints.push(new PMPoint(-2.70889, -2.65445, -4.6)); allpoints.push(new PMPoint(-0.0544472, 4.6, -1.94555)); allpoints.push(new PMPoint(-0.0544472, 0, -1.94555)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 3, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 4.6, -1.077)); allpoints.push(new PMPoint(-1, 4.6, -0.923)); allpoints.push(new PMPoint(0, 4.6, -0.923)); allpoints.push(new PMPoint(0, 4.6, -1.077)); allpoints.push(new PMPoint(-1, 0, -1.077)); allpoints.push(new PMPoint(-1, 0, -0.923)); allpoints.push(new PMPoint(0, 0, -0.923)); allpoints.push(new PMPoint(0, 0, -1.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, -3.6, -4.6)); allpoints.push(new PMPoint(-4.6, -3.70889, -4.6)); allpoints.push(new PMPoint(-3.65445, -3.70889, -4.6)); allpoints.push(new PMPoint(-4.54555, -3.49111, -4.6)); allpoints.push(new PMPoint(-3.54555, -3.49111, -4.6)); allpoints.push(new PMPoint(0, 0.0544472, -1.05445)); allpoints.push(new PMPoint(0, -0.0544472, -0.945553)); allpoints.push(new PMPoint(-1, 0.0544472, -1.05445)); allpoints.push(new PMPoint(-1, -0.0544472, -0.945553)); allpoints.push(new PMPoint(-4.6, -3.65445, -4.54555)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(6, 8, 9, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 9, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 1, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 8, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 2, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(9, 8, 7, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(9, 7, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(9, 3, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 9, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(2, 3, 4, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.077, 4.6, -2)); allpoints.push(new PMPoint(-0.077, 4.6, -1)); allpoints.push(new PMPoint(0.077, 4.6, -2)); allpoints.push(new PMPoint(0.077, 4.6, -1)); allpoints.push(new PMPoint(0.077, 0, -2)); allpoints.push(new PMPoint(0.077, 0, -1)); allpoints.push(new PMPoint(-0.077, 0, -2)); allpoints.push(new PMPoint(-0.077, 0, -1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 5, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 4, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 6, 0, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 5, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 7, 6, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 1, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 0, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-4.6, 4.6, -4.6)); allpoints.push(new PMPoint(-4.49111, 4.6, -4.6)); allpoints.push(new PMPoint(-4.49111, -3.54555, -4.6)); allpoints.push(new PMPoint(-0.945553, 4.6, -1.05445)); allpoints.push(new PMPoint(-0.945553, 0, -1.05445)); allpoints.push(new PMPoint(-4.6, -3.6, -4.6)); allpoints.push(new PMPoint(-4.6, 4.6, -4.49111)); allpoints.push(new PMPoint(-1.05445, 4.6, -0.945553)); allpoints.push(new PMPoint(-1.05445, 0, -0.945553)); allpoints.push(new PMPoint(-4.6, -3.54555, -4.49111)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 8, 9, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 9, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 8, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(9, 8, 7, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(9, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 9, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(6, 3, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(6, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -4.6, -2.49111)); allpoints.push(new PMPoint(4.6, -4.6, -2.70889)); allpoints.push(new PMPoint(4.6, -1.94555, -0.0544472)); allpoints.push(new PMPoint(-2.54555, -4.6, -2.49111)); allpoints.push(new PMPoint(-2.65445, -4.6, -2.70889)); allpoints.push(new PMPoint(4.6, -2.05445, 0.0544472)); allpoints.push(new PMPoint(0, -2.05445, 0.0544472)); allpoints.push(new PMPoint(0, -1.94555, -0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -1.077, 0)); allpoints.push(new PMPoint(4.6, -0.923, 0)); allpoints.push(new PMPoint(4.6, -1.077, -1)); allpoints.push(new PMPoint(4.6, -0.923, -1)); allpoints.push(new PMPoint(0, -1.077, 0)); allpoints.push(new PMPoint(0, -0.923, 0)); allpoints.push(new PMPoint(0, -1.077, -1)); allpoints.push(new PMPoint(0, -0.923, -1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.6, -4.6, -4.6)); allpoints.push(new PMPoint(-3.70889, -4.6, -4.6)); allpoints.push(new PMPoint(-3.70889, -4.6, -3.65445)); allpoints.push(new PMPoint(-3.65445, -4.54555, -4.6)); allpoints.push(new PMPoint(-3.49111, -4.6, -4.54555)); allpoints.push(new PMPoint(-3.49111, -4.6, -3.54555)); allpoints.push(new PMPoint(0.0544472, -1.05445, -1)); allpoints.push(new PMPoint(-0.0544472, -0.945553, -1)); allpoints.push(new PMPoint(-0.0544472, -0.945553, 0)); allpoints.push(new PMPoint(0.0544472, -1.05445, 0)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 6, 4, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 8, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(9, 2, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(8, 7, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(8, 3, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(8, 1, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 8, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(6, 8, 9, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 6, 9, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(4, 9, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 4, 5, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 5, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 1, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -2, -0.077)); allpoints.push(new PMPoint(4.6, -1, -0.077)); allpoints.push(new PMPoint(4.6, -2, 0.077)); allpoints.push(new PMPoint(4.6, -1, 0.077)); allpoints.push(new PMPoint(0, -2, -0.077)); allpoints.push(new PMPoint(0, -1, -0.077)); allpoints.push(new PMPoint(0, -2, 0.077)); allpoints.push(new PMPoint(0, -1, 0.077)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 1, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 3, 7, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 1, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 0, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(0, 2, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 4, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.54555, -4.6, -2.65445)); allpoints.push(new PMPoint(-3.54555, -4.6, -3.65445)); allpoints.push(new PMPoint(-2.65445, -4.6, -2.54555)); allpoints.push(new PMPoint(-3.65445, -4.6, -3.54555)); allpoints.push(new PMPoint(0.0544472, -2, -0.0544472)); allpoints.push(new PMPoint(0.0544472, -1, -0.0544472)); allpoints.push(new PMPoint(-0.0544472, -2, 0.0544472)); allpoints.push(new PMPoint(-0.0544472, -1, 0.0544472)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -2.70889, -4.6)); allpoints.push(new PMPoint(4.6, -2.49111, -4.6)); allpoints.push(new PMPoint(4.6, 0.0544472, -2.05445)); allpoints.push(new PMPoint(-2.65445, -2.70889, -4.6)); allpoints.push(new PMPoint(-2.54555, -2.49111, -4.6)); allpoints.push(new PMPoint(4.6, -0.0544472, -1.94555)); allpoints.push(new PMPoint(0, -0.0544472, -1.94555)); allpoints.push(new PMPoint(0, 0.0544472, -2.05445)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 7, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 7, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 7, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 4, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 6, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 3, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 5, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 4, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, 0, -1.077)); allpoints.push(new PMPoint(4.6, -1, -1.077)); allpoints.push(new PMPoint(4.6, 0, -0.923)); allpoints.push(new PMPoint(4.6, -1, -0.923)); allpoints.push(new PMPoint(0, 0, -1.077)); allpoints.push(new PMPoint(0, -1, -1.077)); allpoints.push(new PMPoint(0, 0, -0.923)); allpoints.push(new PMPoint(0, -1, -0.923)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(3, 7, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(3, 5, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(6, 7, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 3, 2, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 6, 2, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 2, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 7, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 6, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(3, 0, 2, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-3.6, -4.6, -4.6)); allpoints.push(new PMPoint(-3.70889, -4.6, -4.6)); allpoints.push(new PMPoint(-3.70889, -3.65445, -4.6)); allpoints.push(new PMPoint(-3.49111, -4.54555, -4.6)); allpoints.push(new PMPoint(-3.49111, -3.54555, -4.6)); allpoints.push(new PMPoint(0.0544472, 0, -1.05445)); allpoints.push(new PMPoint(-0.0544472, 0, -0.945553)); allpoints.push(new PMPoint(0.0544472, -1, -1.05445)); allpoints.push(new PMPoint(-0.0544472, -1, -0.945553)); allpoints.push(new PMPoint(-3.65445, -4.6, -4.54555)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(9, 8, 6, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 6, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(9, 2, 1, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 8, 9, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 9, 0, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 0, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(6, 8, 7, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(6, 7, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(2, 6, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(2, 5, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 7, 3, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 3, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(9, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(1, 2, 4, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(1, 4, 3, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(1, 3, 0, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -0.077, -2)); allpoints.push(new PMPoint(4.6, 0.077, -2)); allpoints.push(new PMPoint(4.6, 0.077, -1)); allpoints.push(new PMPoint(4.6, -0.077, -1)); allpoints.push(new PMPoint(0, -0.077, -2)); allpoints.push(new PMPoint(0, 0.077, -2)); allpoints.push(new PMPoint(0, 0.077, -1)); allpoints.push(new PMPoint(0, -0.077, -1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(2, 6, 7, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(2, 7, 3, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 5, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(5, 6, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(5, 2, 1, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(3, 7, 4, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(3, 4, 0, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(7, 6, 5, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(7, 5, 4, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 3, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-2.54555, -2.65445, -4.6)); allpoints.push(new PMPoint(-3.54555, -3.65445, -4.6)); allpoints.push(new PMPoint(-2.65445, -2.54555, -4.6)); allpoints.push(new PMPoint(-3.65445, -3.54555, -4.6)); allpoints.push(new PMPoint(-0.0544472, 0.0544472, -2)); allpoints.push(new PMPoint(-0.0544472, 0.0544472, -1)); allpoints.push(new PMPoint(0.0544472, -0.0544472, -2)); allpoints.push(new PMPoint(0.0544472, -0.0544472, -1)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 6, 0, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 0, 2, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(1, 7, 5, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(1, 5, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 6, 4, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(7, 4, 5, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 3, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(4, 3, 5, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(0, 6, 7, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(0, 7, 1, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 5)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(4.6, -4.6, -4.6)); allpoints.push(new PMPoint(-3.6, -4.6, -4.6)); allpoints.push(new PMPoint(4.6, -4.49111, -4.6)); allpoints.push(new PMPoint(-3.54555, -4.49111, -4.6)); allpoints.push(new PMPoint(0, -0.945553, -1.05445)); allpoints.push(new PMPoint(4.6, -0.945553, -1.05445)); allpoints.push(new PMPoint(4.6, -4.6, -4.49111)); allpoints.push(new PMPoint(-3.54555, -4.6, -4.49111)); allpoints.push(new PMPoint(0, -1.05445, -0.945553)); allpoints.push(new PMPoint(4.6, -1.05445, -0.945553)); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } var faces = new THREE.Geometry(); <!-- VERTICES --> faces.vertices.push(allpoints[0].vector); faces.vertices.push(allpoints[1].vector); faces.vertices.push(allpoints[2].vector); faces.vertices.push(allpoints[3].vector); faces.vertices.push(allpoints[4].vector); faces.vertices.push(allpoints[5].vector); faces.vertices.push(allpoints[6].vector); faces.vertices.push(allpoints[7].vector); faces.vertices.push(allpoints[8].vector); faces.vertices.push(allpoints[9].vector); centroids.push(computeCentroid(faces)); <!-- Facet style --> var materials = [ new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0x77EC9E, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), new THREE.MeshBasicMaterial({ transparent: true, opacity: 1, side: THREE.DoubleSide , depthWrite: true, depthTest: true, color: 0xFF0000, }), ]; for (index = 0; index < materials.length; ++index) { materials[index].side = THREE.DoubleSide; } var faces_material = new THREE.MeshFaceMaterial ( materials ); <!-- FACETS --> faces.faces.push(new THREE.Face3(4, 8, 9, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(4, 9, 5, undefined, undefined, 0)); faces.faces.push(new THREE.Face3(7, 8, 4, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 4, 3, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(7, 3, 1, undefined, undefined, 1)); faces.faces.push(new THREE.Face3(4, 5, 2, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(4, 2, 3, undefined, undefined, 2)); faces.faces.push(new THREE.Face3(9, 8, 7, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(9, 7, 6, undefined, undefined, 3)); faces.faces.push(new THREE.Face3(5, 9, 6, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 6, 0, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(5, 0, 2, undefined, undefined, 4)); faces.faces.push(new THREE.Face3(6, 7, 1, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(6, 1, 0, undefined, undefined, 5)); faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 6)); faces.faces.push(new THREE.Face3(2, 1, 3, undefined, undefined, 6)); faces.computeFaceNormals(); faces.computeVertexNormals(); var object = new THREE.Mesh(faces, faces_material); obj.add(object); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.625, -0.5, 0)); allpoints.push(new PMPoint(-1, -0.875, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -0.875, 0)); allpoints.push(new PMPoint(-1, -0.875, 6)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, -0.875, 0)); allpoints.push(new PMPoint(-6, -5.875, -5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.75, 0, -0.5)); allpoints.push(new PMPoint(-1, 0, -0.75)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 0, -0.75)); allpoints.push(new PMPoint(-1, 6, -0.75)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-1, 0, -0.75)); allpoints.push(new PMPoint(-6, -5, -5.75)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -0.625, -0.5)); allpoints.push(new PMPoint(0, -1, -0.875)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -1, -0.875)); allpoints.push(new PMPoint(6, -1, -0.875)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -1, -0.875)); allpoints.push(new PMPoint(-5, -6, -5.875)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, 0.5, 0.5)); allpoints.push(new PMPoint(-0.5, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, 0, 0)); allpoints.push(new PMPoint(-0.5, -0.25, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, 0.5, 0.5)); allpoints.push(new PMPoint(-0.5, 0.5, 6)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, 0.5, 0.5)); allpoints.push(new PMPoint(-0.5, 6, 0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2, 2, 6)); allpoints.push(new PMPoint(2, 2, 2.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2, 2, 2.25)); allpoints.push(new PMPoint(6, 2, 2.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.625, -0.5, 0)); allpoints.push(new PMPoint(-0.5, -0.25, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, -0.5, 0.5)); allpoints.push(new PMPoint(0, -0.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.625, -0.5, 0)); allpoints.push(new PMPoint(0, -0.5, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -0.5, 0)); allpoints.push(new PMPoint(0, -0.5, -0.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, -0.5, 0.5)); allpoints.push(new PMPoint(0.5, -0.5, 6)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, -0.5, 0.5)); allpoints.push(new PMPoint(6, -0.5, 0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.75, 1, 6)); allpoints.push(new PMPoint(0.75, 1, 1.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2, 2, 2.25)); allpoints.push(new PMPoint(2, 6, 2.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.75, 0, -0.5)); allpoints.push(new PMPoint(-0.5, 0, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -0.625, -0.5)); allpoints.push(new PMPoint(0, -0.5, -0.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, 0.5, -0.5)); allpoints.push(new PMPoint(0, 0, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.75, 0, -0.5)); allpoints.push(new PMPoint(0, 0, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -0.625, -0.5)); allpoints.push(new PMPoint(0, 0, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, 0.5, -0.5)); allpoints.push(new PMPoint(0.5, 6, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, 0.5, -0.5)); allpoints.push(new PMPoint(6, 0.5, -0.5)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, 0, 0)); allpoints.push(new PMPoint(0.5, 1, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.75, 1, 1.25)); allpoints.push(new PMPoint(0.5, 1, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.5, 1, 1)); allpoints.push(new PMPoint(0.5, 6, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 0.75, 1)); allpoints.push(new PMPoint(0, -0.25, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(-0.5, -0.25, 0)); allpoints.push(new PMPoint(0, -0.25, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0, -0.5, -0.25)); allpoints.push(new PMPoint(0, -0.25, 0)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(0.75, 1, 1.25)); allpoints.push(new PMPoint(1, 1, 1.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 0.75, 1)); allpoints.push(new PMPoint(1, 1, 1.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(1, 0.75, 1)); allpoints.push(new PMPoint(6, 0.75, 1)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); var obj = new THREE.Object3D(); var allpoints = []; allpoints.push(new PMPoint(2, 2, 2.25)); allpoints.push(new PMPoint(1, 1, 1.25)); <!-- Vertex style --> var points_material = new THREE.MeshBasicMaterial ( {color: 0xFF0000, } ); points_material.side = THREE.DoubleSide; points_material.transparent = true; <!-- POINTS --> allpoints[0].makesphere(0.05775,points_material); allpoints[1].makesphere(0.05775,points_material); for (index = 0; index < allpoints.length; ++index) { allpoints[index].add(obj); } <!-- Edge style --> var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 7.85714285714286, } ); line_material.side = THREE.DoubleSide; line_material.transparent = true; <!-- EDGES --> var line = new THREE.Geometry(); line.vertices.push(allpoints[1].vector); line.vertices.push(allpoints[0].vector); obj.add(new THREE.Line(line, line_material)); scene.add(obj); all_objects.push(obj); // COMMON_CODE_BLOCK_BEGIN var xRotationEnabled = false; var yRotationEnabled = false; var zRotationEnabled = false; var rotationSpeedFactor = 1; var settingsShown = false; var labelsShown = true; var intervals = []; var timeouts = []; var explodingSpeed = 0.05; var explodeScale = 0; var XMLS = new XMLSerializer(); var svgElement; var renderId; var render = function () { renderId = requestAnimationFrame(render); // comment in for automatic explosion // explode(updateFactor()); var phi = 0.02 * rotationSpeedFactor; if (xRotationEnabled){ scene.rotation.x += phi; } if(yRotationEnabled){ scene.rotation.y += phi; } if(zRotationEnabled){ scene.rotation.z += phi; } controls.update(); renderer.render(scene, camera); }; render(); function computeCentroid(geom) { centroid = new THREE.Vector3(); geom.vertices.forEach(function(v) { centroid.add(v); }); centroid.divideScalar(geom.vertices.length); return centroid; } function changeTransparency(event){ var opacity = 1-Number(event.currentTarget.value); for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ if (all_objects[i].children[j].material.type == "MultiMaterial") { for (var k=0; k<all_objects[i].children[j].material.materials.length; k++){ all_objects[i].children[j].material.materials[k].opacity = opacity; all_objects[i].children[j].material.materials[k].depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.materials[k].depthTest = opacity < 0.5 ? false : true; } } else if (all_objects[i].children[j].material.transparent && all_objects[i].children[j].material.type == "MeshBasicMaterial" && all_objects[i].children[j].geometry.type == "Geometry"){ all_objects[i].children[j].material.opacity = opacity; all_objects[i].children[j].material.depthWrite = opacity < 0.5 ? false : true; all_objects[i].children[j].material.depthTest = opacity < 0.5 ? false : true; } } } } function changeRotationX(event){ xRotationEnabled = event.currentTarget.checked; } function changeRotationY(event){ yRotationEnabled = event.currentTarget.checked; } function changeRotationZ(event){ zRotationEnabled = event.currentTarget.checked; } function changeRotationSpeedFactor(event){ rotationSpeedFactor = Number(event.currentTarget.value); } function resetScene(){ scene.rotation.set(0,0,0); camera.position.set(0,0,5); camera.up.set(0,1,0); } function showSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_6').style.position = 'absolute'; document.getElementById('settings_6').style.display = 'block'; document.getElementById('showSettingsButton_6').style.display = 'none'; document.getElementById('hideSettingsButton_6').style.display = 'block'; settingsShown = true; } function hideSettings(event){ event.currentTarget.style.display = 'none'; document.getElementById('settings_6').style.display = 'none'; document.getElementById('hideSettingsButton_6').style.display = 'none'; document.getElementById('showSettingsButton_6').style.display = 'block'; settingsShown = false; } var pos = 150* Math.PI; function updateFactor() { pos++; return Math.sin(.01*pos)+1; } function makelabel(message, x, y, z, params) { var spritey = textSprite( message, params ); spritey.position.set(x, y, z); obj.add(spritey); } function textSprite(message, parameters) { if ( parameters === undefined ) parameters = {}; var fontface = "Helvetica"; var fontsize = parameters.hasOwnProperty("fontsize") ? parameters["fontsize"] : 18; fontsize = fontsize*10; var canvas = document.createElement('canvas'); var size = 1024; canvas.width = size; canvas.height = size; var context = canvas.getContext('2d'); context.font = fontsize + "px " + fontface; // text color context.fillStyle = "rgba(0, 0, 0, 1.0)"; context.fillText(message, size/2, size/2); // canvas contents will be used for a texture var texture = new THREE.Texture(canvas); texture.needsUpdate = true; var spriteMaterial = new THREE.SpriteMaterial( {map: texture, useScreenCoordinates: false}); var sprite = new THREE.Sprite(spriteMaterial); return sprite; } function takeSvgScreenshot(){ if (labelsShown){ hideLabels(); } svgRenderer.render(scene,camera); svgElement = XMLS.serializeToString(svgRenderer.domElement); if (labelsShown){ displayLabels(); } if (document.getElementById('tab_6').checked){ //show in new tab var myWindow = window.open("",""); myWindow.document.body.innerHTML = svgElement; } else{ // download svg file download("screenshot.svg", svgElement); } } function showOrHideObject(event){ var nr = Number(event.currentTarget.name); all_objects[nr].visible = event.currentTarget.checked; } function displayOrHideOptionsRecursive( obj ) { for (var j=0; j<obj.children.length; j++) { var child = obj.children[j]; if (child.material===undefined && child) { displayOrHideOptionsRecursive( child ); } else { if (child.material.type == "MultiMaterial") { for (var k=0; k<child.material.materials.length; k++) { if (child.material.materials[k].transparent) { document.getElementById('transparency_6').style.display = 'block'; document.getElementById('transparencyRange_6').value = 1 - child.material.materials[k].opacity; return; } } } else if ( child.material.transparent && child.material.type == "MeshBasicMaterial" && child.geometry.type == "Geometry"){ document.getElementById('transparency_6').style.display = 'block'; return; } } } } function displayOrHideOptions() { for (var i=0; i<all_objects.length; i++) { var obj = all_objects[i]; displayOrHideOptionsRecursive( obj ); } } displayOrHideOptions() // ---------------------- EXPLOSION ------------------------------------------------ // --------------------------------------------------------------------------------- function explode(factor) { var obj, c; var c0 = centroids[0]; for (var i = 0; i<centroids.length; ++i) { c = centroids[i]; obj = all_objects[all_objects.length - centroids.length + i]; obj.position.set(c.x*factor, c.y*factor, c.z*factor); } } function triggerExplode(event){ explodeScale = Number(event.currentTarget.value); explode(explodeScale); } function setExplodingSpeed(event){ explodingSpeed = Number(event.currentTarget.value); } function triggerAutomaticExplode(event){ if (event.currentTarget.checked){ startExploding(); } else { clearIntervals(); } } function startExploding(){ intervals.push(setInterval(explodingInterval, 25)); } function explodingInterval(){ explodeScale += explodingSpeed; if (explodeScale <= 6){ explode(explodeScale); } else{ explode(6); explodeScale = 6; clearIntervals(); timeouts.push(setTimeout(startUnexploding, 3000)); } document.getElementById('explodeRange_6').value = explodeScale; } function startUnexploding(){ intervals.push(setInterval(unexplodingInterval, 25)); } function unexplodingInterval(){ explodeScale -= explodingSpeed; if (explodeScale >= 0){ explode(explodeScale); } else { explode(0); explodeScale = 0; clearIntervals(); timeouts.push(setTimeout(startExploding, 3000)); } document.getElementById('explodeRange_6').value = explodeScale; } function clearIntervals(){ intervals.forEach(function(interval){ clearInterval(interval); }); intervals = []; timeouts.forEach(function(timeout){ clearTimeout(timeout); }); timeouts = []; } // append checkboxes for displaying or hiding objects var shownObjectsList = document.getElementById('shownObjectsList_6'); for (var i=0; i<all_objects.length; i++){ var objNode = document.createElement('span'); objNode.innerHTML = objectnames[i] + '<br>'; var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = true; checkbox.name = String(i); checkbox.onchange = showOrHideObject; shownObjectsList.appendChild(checkbox); shownObjectsList.appendChild(objNode); } function displayLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = true; } } } } function hideLabels(){ for (var i=0; i<all_objects.length; i++){ for (var j=0; j<all_objects[i].children.length; j++){ var child = all_objects[i].children[j]; if (child.type == 'Sprite'){ child.visible = false; } } } } function displayOrHideLabels(event){ if (event.currentTarget.checked){ displayLabels(); labelsShown = true; } else { hideLabels(); labelsShown = false; } } function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } var tempobj; tempobj = document.getElementById('explodeRange_6'); if (tempobj) { tempobj.oninput = triggerExplode; document.getElementById('explodeCheckbox_6').onchange = triggerAutomaticExplode; document.getElementById('explodingSpeedRange_6').oninput = setExplodingSpeed; } tempobj = document.getElementById('foldRange_6'); if (tempobj) { tempobj.oninput = fold; } document.getElementById('transparencyRange_6').oninput = changeTransparency; document.getElementById('changeRotationX_6').onchange = changeRotationX; document.getElementById('changeRotationY_6').onchange = changeRotationY; document.getElementById('changeRotationZ_6').onchange = changeRotationZ; document.getElementById('resetButton_6').onclick = resetScene; document.getElementById('rotationSpeedRange_6').oninput = changeRotationSpeedFactor; document.getElementById('labelsCheckboxInput_6').onchange = displayOrHideLabels; document.getElementById('takeScreenshot_6').onclick = takeSvgScreenshot; document.getElementById('showSettingsButton_6').onclick = showSettings; document.getElementById('hideSettingsButton_6').onclick = hideSettings; // ------------------ SHORTCUTS -------------------------------------------- // ------------------------------------------------------------------------- /** * http://www.openjs.com/scripts/events/keyboard_shortcuts/ * Version : 2.01.B * By Binny V A * License : BSD */ shortcut = { 'all_shortcuts':{},//All the shortcuts are stored in this array 'add': function(shortcut_combination,callback,opt) { //Provide a set of default options var default_options = { 'type':'keydown', 'propagate':false, 'disable_in_input':false, 'target':document, 'keycode':false } if(!opt) opt = default_options; else { for(var dfo in default_options) { if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo]; } } var ele = opt.target; if(typeof opt.target == 'string') ele = document.getElementById(opt.target); var ths = this; shortcut_combination = shortcut_combination.toLowerCase(); //The function to be called at keypress var func = function(e) { e = e || window.event; if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields var element; if(e.target) element=e.target; else if(e.srcElement) element=e.srcElement; if(element.nodeType==3) element=element.parentNode; if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return; } //Find Which key is pressed if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which; var character = String.fromCharCode(code).toLowerCase(); if(code == 188) character=","; //If the user presses , when the type is onkeydown if(code == 190) character="."; //If the user presses , when the type is onkeydown var keys = shortcut_combination.split("+"); //Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked var kp = 0; //Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken var shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", ".":">", "/":"?", "\\":"|" } //Special Keys - and their codes var special_keys = { 'esc':27, 'escape':27, 'tab':9, 'space':32, 'return':13, 'enter':13, 'backspace':8, 'scrolllock':145, 'scroll_lock':145, 'scroll':145, 'capslock':20, 'caps_lock':20, 'caps':20, 'numlock':144, 'num_lock':144, 'num':144, 'pause':19, 'break':19, 'insert':45, 'home':36, 'delete':46, 'end':35, 'pageup':33, 'page_up':33, 'pu':33, 'pagedown':34, 'page_down':34, 'pd':34, 'left':37, 'up':38, 'right':39, 'down':40, 'f1':112, 'f2':113, 'f3':114, 'f4':115, 'f5':116, 'f6':117, 'f7':118, 'f8':119, 'f9':120, 'f10':121, 'f11':122, 'f12':123 } var modifiers = { shift: { wanted:false, pressed:false}, ctrl : { wanted:false, pressed:false}, alt : { wanted:false, pressed:false}, meta : { wanted:false, pressed:false} //Meta is Mac specific }; if(e.ctrlKey) modifiers.ctrl.pressed = true; if(e.shiftKey) modifiers.shift.pressed = true; if(e.altKey) modifiers.alt.pressed = true; if(e.metaKey) modifiers.meta.pressed = true; for(var i=0; k=keys[i],i<keys.length; i++) { //Modifiers if(k == 'ctrl' || k == 'control') { kp++; modifiers.ctrl.wanted = true; } else if(k == 'shift') { kp++; modifiers.shift.wanted = true; } else if(k == 'alt') { kp++; modifiers.alt.wanted = true; } else if(k == 'meta') { kp++; modifiers.meta.wanted = true; } else if(k.length > 1) { //If it is a special key if(special_keys[k] == code) kp++; } else if(opt['keycode']) { if(opt['keycode'] == code) kp++; } else { //The special keys did not match if(character == k) kp++; else { if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase character = shift_nums[character]; if(character == k) kp++; } } } } if(kp == keys.length && modifiers.ctrl.pressed == modifiers.ctrl.wanted && modifiers.shift.pressed == modifiers.shift.wanted && modifiers.alt.pressed == modifiers.alt.wanted && modifiers.meta.pressed == modifiers.meta.wanted) { callback(e); if(!opt['propagate']) { //Stop the event //e.cancelBubble is supported by IE - this will kill the bubbling process. e.cancelBubble = true; e.returnValue = false; //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } return false; } } } this.all_shortcuts[shortcut_combination] = { 'callback':func, 'target':ele, 'event': opt['type'] }; //Attach the function with the event if(ele.addEventListener) ele.addEventListener(opt['type'], func, false); else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func); else ele['on'+opt['type']] = func; }, //Remove the shortcut - just specify the shortcut and I will remove the binding 'remove':function(shortcut_combination) { shortcut_combination = shortcut_combination.toLowerCase(); var binding = this.all_shortcuts[shortcut_combination]; delete(this.all_shortcuts[shortcut_combination]) if(!binding) return; var type = binding['event']; var ele = binding['target']; var callback = binding['callback']; if(ele.detachEvent) ele.detachEvent('on'+type, callback); else if(ele.removeEventListener) ele.removeEventListener(type, callback, false); else ele['on'+type] = false; } } shortcut.add("Alt+Left",function() { var event = new Event('click'); if (settingsShown){ document.getElementById('hideSettingsButton_6').dispatchEvent(event); } else{ document.getElementById('showSettingsButton_6').dispatchEvent(event); } }); if (foldable) moveToBaryCenter(); });}); // COMMON_CODE_BLOCK_END </script> </body> </html> </div> </HTML> ==== Step A: applying the bounding cube to curves in Blender ==== - Import the x3d file of the curve and join all spheres and indexed faceset objects. - Import the x3d file of the bounding cube. - Add a boolean intersect modifier to the lines object\\ {{:tutorials:release:4.1:3d_printing_with_x3d:boolean_intersect_modifier.png|boolean_intersect_modifier.png}} - Choose the cube object to intersect with.\\ {{:tutorials:release:4.1:3d_printing_with_x3d:boolean_intersect_modifier_applied.png|boolean_intersect_modifier_applied.png}} - After clicking on apply you can delete the bounding cube and import the (solidified) cubic.\\ {{:tutorials:release:4.1:3d_printing_with_x3d:sextic_in_cubic.png|sextic_in_cubic.png}} ===== Tropical lines on tropical cubic surfaces ===== Polymake is capable of computing all tropical lines on a given tropical cubic surface. Here is how you make a model out of it <code perl> > $mCubic2 = [ [3,0,0,0], [0,3,0,0], [0,0,3,0], [0,0,0,3], > [1,1,1,0], [1,1,0,1], [1,0,1,1], [0,1,1,1], > [2,1,0,0], [2,0,1,0], [2,0,0,1], > [1,2,0,0], [1,0,2,0], [1,0,0,2], > [0,2,1,0], [0,2,0,1], [0,1,2,0], > [0,1,0,2], [0,0,2,1], [0,0,1,2]]; > $cCubic2 = [3,3,3,3,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1]; > $TCubic2 = new Hypersurface<Min>(MONOMIALS=>$mCubic2, COEFFICIENTS=>$cCubic2); > $linesInCubic = lines_in_cubic($TCubic->POLYNOMIAL); > @lines = map { $_->representative } @{$linesInCubic->all_families}; </code> In this model we are going to use the bounding cube intersection frame (as in a previous section) to round the edges of the surface. We will also keep the spheres as caps for our lines, hence the model will be one lines diameter bigger than the actual bounding box. <code perl> > $bFacets = polytope::bounding_box_facets($TCubic2->affine_chart->VERTICES,surplus_k=>0.4, make_cube=>1); > $diam = $bFacets->[0]->[0] + $bFacets->[1]->[0]; > $total_mm = 100; #planned size of the model > $surface_mm = 2; > $frame_mm = $surface_mm; > $lines_mm = 3; > > $surface_abs = ($surface_mm*$diam/$total_mm)/(1-$lines_mm/$total_mm); > $frame_diam = ($frame_mm*$diam/$total_mm)/(1-$lines_mm/$total_mm); > $lines_diam = ($lines_mm*$diam/$total_mm)/(1-$lines_mm/$total_mm); > $surface_opts = {VertexStyle=>'hidden',EdgeStyle=>'hidden'}; > $frame_opts = x3dprint_curve_opts($frame_diam,$frame_diam); > $lines_opts = x3dprint_curve_opts($lines_diam,$lines_diam); > > $bPolytope = new polytope::Polytope(FACETS=>$bFacets); > $bComplex = new fan::PolyhedralComplex(fan::check_fan_objects(($bPolytope))); </code> Please note that, in contrast to the examples before, the cubic is bound before solidifying. Otherwise the frame wont fit correctly <code perl> > $TCubic2Bounded = pcom_common_ref($TCubic2->affine_chart,$bComplex); > $solidifiedTCubic2Cells = solidify_2d_pcom($TCubic2Bounded,$surface_abs); > @solidifiedTCubic2CellsVis = map { $_->VISUAL($surface_opts) } @$solidifiedTCubic2Cells; > > # the frame > $c2frame = pcom_common_ref($TCubic2->affine_chart, $bPolytope->BOUNDED_COMPLEX); > $c2frameVis = $c2frame->VISUAL($frame_opts); > > # the lines > $bPolytope = new polytope::Polytope(FACETS=>$bFacets); > @linesBounded = map { pcom_common_ref($_->affine_chart,$bComplex) } @lines; > @linesVis = map { $_->VISUAL($lines_opts) } @linesBounded; > x3d(compose(@solidifiedTCubic2CellsVis,$c2frameVis,@linesVis),File=>$x3d_dir."LinesInTCubic2SolidifiedRadiused.x3d"); </code> Which looks like this in blender\\ {{:tutorials:release:4.1:3d_printing_with_x3d:lines_in_cubic_and_cubic.png|lines_in_cubic_and_cubic.png}} user_guide/tutorials/release/4.1/3d_printing_with_x3d.txt Last modified: 2020/06/15 13:05by 127.0.0.1