diff --git a/js/fea/dmaCell.js b/js/fea/dmaCell.js index 272571ba771f4947e4f2389dff64180270dbde32..715029db7a651a2a2a99ce9cb5d3cb58082afc91 100644 --- a/js/fea/dmaCell.js +++ b/js/fea/dmaCell.js @@ -7,21 +7,33 @@ (function () { + var octHeight = 3*30/8*Math.sqrt(5); + var cellGeometry1 = new THREE.OctahedronGeometry(30/Math.sqrt(2)); cellGeometry1.applyMatrix(new THREE.Matrix4().makeRotationZ(-3*Math.PI/12)); cellGeometry1.applyMatrix(new THREE.Matrix4().makeRotationX(Math.asin(2/Math.sqrt(2)/Math.sqrt(3)))); var cellGeometry2 = cellGeometry1.clone(); - cellGeometry1.applyMatrix(new THREE.Matrix4().makeTranslation(0,-30/Math.sqrt(3),30/2.5)); + cellGeometry1.applyMatrix(new THREE.Matrix4().makeTranslation(0,-30/Math.sqrt(3),octHeight/2)); cellGeometry2.applyMatrix(new THREE.Matrix4().makeRotationZ(Math.PI)); - cellGeometry2.applyMatrix(new THREE.Matrix4().makeTranslation(0,-30/Math.sqrt(3),30/2.5)); + cellGeometry2.applyMatrix(new THREE.Matrix4().makeTranslation(0,30/Math.sqrt(3),octHeight/2)); var cellMaterials = [new THREE.MeshNormalMaterial(), new THREE.MeshBasicMaterial({color:0x000000, wireframe:true})]; - function Cell() { + function Cell(position) { + + if ((position.z/octHeight)%2==0){ + this.mesh = THREE.SceneUtils.createMultiMaterialObject(cellGeometry1, cellMaterials); + } else { + this.mesh = THREE.SceneUtils.createMultiMaterialObject(cellGeometry2, cellMaterials); + } + this.mesh.position.x = position.x; + this.mesh.position.y = position.y; + this.mesh.position.z = position.z; + + this._draw(); - this.mesh = THREE.SceneUtils.createMultiMaterialObject(cellGeometry1, cellMaterials); // this.parts = this._createParts(nodes, config); } @@ -33,7 +45,7 @@ // return parts; //}; - Cell.prototype.draw = function(){ + Cell.prototype._draw = function(){ window.three.sceneAdd(this.mesh); }; diff --git a/js/models/lattice.js b/js/models/lattice.js index 5f07471251a3103f50560bc8fe0d875332b4e0eb..8f0033a4e41bf61cdad3c25e4cdf61b735d31d3b 100644 --- a/js/models/lattice.js +++ b/js/models/lattice.js @@ -20,8 +20,7 @@ Lattice = Backbone.Model.extend({ }, addCell: function(){ - var cell = new Cell(); - cell.draw(); + new Cell(new THREE.Vector3(0,0,0)); window.three.render(); }, diff --git a/js/models/threeModel.js b/js/models/threeModel.js index 0acd5495955ae210daf83e10587fb92f4ce0cef2..06c4b376beb0f3c9d04bf07c3b058354ab21dd4e 100644 --- a/js/models/threeModel.js +++ b/js/models/threeModel.js @@ -49,7 +49,6 @@ function ThreeModel(){ scene.add(object); if (noInteraction) return; objects.push(object); - console.log(objects) } function sceneRemove(object){ diff --git a/js/threeViews/threeView.js b/js/threeViews/threeView.js index 7fac69a55ccaf8991e5e23c16f808b88380e003f..0a371ad5b0a1f83b3dad73d8c403251a0ab158c9 100644 --- a/js/threeViews/threeView.js +++ b/js/threeViews/threeView.js @@ -46,6 +46,7 @@ ThreeView = Backbone.View.extend({ this.highlighter = new THREE.Mesh(highlightGeometry, new THREE.MeshBasicMaterial({side:THREE.DoubleSide, transparent:true, opacity:0.4, color:0xffffff, vertexColors:THREE.FaceColors})); this.highlighter.geometry.dynamic = true; + this.highlighter.visible = false; window.three.sceneAdd(this.highlighter, true); this.model.render(); @@ -65,7 +66,9 @@ ThreeView = Backbone.View.extend({ if (!this.highlighter.visible) return; - + var cell = new Cell(this.highlighter.geometry.vertices[0]); + window.three.render(); + }, @@ -90,8 +93,11 @@ ThreeView = Backbone.View.extend({ this.highlighter.visible = true; this.currentHighlightedFace = intersection; + var vertices = intersections[0].object.geometry.vertices; - this.highlighter.geometry.vertices = [vertices[intersection.a], vertices[intersection.b], vertices[intersection.c]]; + var position = (new THREE.Vector3()).setFromMatrixPosition(intersections[0].object.matrixWorld); + this.highlighter.geometry.vertices = [(new THREE.Vector3()).addVectors(vertices[intersection.a], position), + (new THREE.Vector3()).addVectors(vertices[intersection.b], position), (new THREE.Vector3()).addVectors(vertices[intersection.c], position)]; this.highlighter.geometry.verticesNeedUpdate = true; } @@ -129,11 +135,11 @@ ThreeView = Backbone.View.extend({ var currentOffset = vertices.length; if (Math.abs(j)%2==1){ - faces.push(new THREE.Face3(currentOffset-1, currentOffset-2, currentOffset-2-2*baseDim)); +// faces.push(new THREE.Face3(currentOffset-1, currentOffset-2, currentOffset-2-2*baseDim)); faces.push(new THREE.Face3(currentOffset-2, currentOffset-3-2*baseDim, currentOffset-2-2*baseDim)); } else { faces.push(new THREE.Face3(currentOffset-1, currentOffset-3-2*baseDim, currentOffset-2-2*baseDim)); - faces.push(new THREE.Face3(currentOffset-1, currentOffset-2, currentOffset-3-2*baseDim)); +// faces.push(new THREE.Face3(currentOffset-1, currentOffset-2, currentOffset-3-2*baseDim)); } }