From 025ae5b015567d7f738ddcd1f1ef1ede22a655d0 Mon Sep 17 00:00:00 2001
From: Amanda Ghassaei <amandaghassaei@gmail.com>
Date: Wed, 4 Feb 2015 03:19:06 -0500
Subject: [PATCH] eod

---
 js/menus/PartMenuView.js |  6 +++++-
 js/models/BasePlane.js   | 42 ++++++++++++++++++++++++++++++++--------
 js/models/Lattice.js     | 20 +++++++++++++++++++
 3 files changed, 59 insertions(+), 9 deletions(-)

diff --git a/js/menus/PartMenuView.js b/js/menus/PartMenuView.js
index 69ac2e45..0cd12c3e 100644
--- a/js/menus/PartMenuView.js
+++ b/js/menus/PartMenuView.js
@@ -7,6 +7,7 @@ PartMenuView = Backbone.View.extend({
     el: "#menuContent",
 
     events: {
+        "slide #columnSepSlider":                           "_changeColSeparation"
     },
 
     initialize: function(options){
@@ -18,6 +19,10 @@ PartMenuView = Backbone.View.extend({
 
     },
 
+    _changeColSeparation: function(e){
+        this.model.set("columnSeparation", $(e.target).val());
+    },
+
     render: function(){
         if (this.appState.get("currentTab") != "part") return;
         this.$el.html(this.template(this.model.attributes));
@@ -40,7 +45,6 @@ PartMenuView = Backbone.View.extend({
                 </ul>\
             </div><br/><br/>\
         Column Separation:&nbsp;&nbsp;<input id="columnSepSlider" data-slider-id="ex1Slider" type="text" data-slider-min="0" data-slider-max="50" data-slider-step="0.1" data-slider-value="<%= scale %>"/>\
-        <br/><input id="columnSep" value="<%= scale %>" placeholder="enter scale" class="form-control" type="text"><br/>\<br/>\
         ')
 
 });
\ No newline at end of file
diff --git a/js/models/BasePlane.js b/js/models/BasePlane.js
index 627a39dd..474ad095 100644
--- a/js/models/BasePlane.js
+++ b/js/models/BasePlane.js
@@ -28,6 +28,12 @@ BasePlane = Backbone.Model.extend({
 
     },
 
+    updateColSeparation: function(colSep){
+        var geometry = this.get("mesh").geometry;
+        geometry.vertices = this._calcOctaFaceVertices();
+        geometry.verticesNeedUpdate = true;
+    },
+
     _renderZIndexChange: function(){
         var zIndex = this.get("zIndex");
         var scale = this.get("mesh").scale.z;
@@ -66,24 +72,20 @@ BasePlane = Backbone.Model.extend({
     _createOctaFaceMesh: function(){
 
         var geometry = new THREE.Geometry();
-        var vertices = geometry.vertices;
+        geometry.dynamic = true;
+        geometry.vertices = this._calcOctaFaceVertices();
         var faces = geometry.faces;
 
-        var triangleHeight = 1/2*Math.sqrt(3);
         var dimX = this.get("dimX");
         var dimY = this.get("dimY");
 
+        var currentOffset = 0;
         for (var j=-dimX;j<=dimX;j++){
             for (var i=-dimY;i<=dimY;i++){
 
-                var xOffset = 0;
-                if (Math.abs(j)%2==1) xOffset = 1/2;
-                vertices.push(new THREE.Vector3(i + xOffset, j*triangleHeight, 0));
-
+                currentOffset++;
                 if (j == -dimX || i == -dimY) continue;
 
-                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-2, currentOffset-3-2*dimX, currentOffset-2-2*dimY));
@@ -95,10 +97,34 @@ BasePlane = Backbone.Model.extend({
             }
 
         }
+
         geometry.computeFaceNormals();
         return new THREE.Mesh(geometry, this.get("material"));
     },
 
+    _calcOctaFaceVertices: function(colSep){
+
+        var vertices = [];
+        var triangleHeight = 1/2*Math.sqrt(3);
+        var dimX = this.get("dimX");
+        var dimY = this.get("dimY");
+
+//        var pointVertOffset = triangleHeight*colSep;
+//        var baseVertOffset =
+
+        for (var j=-dimX;j<=dimX;j++){
+            for (var i=-dimY;i<=dimY;i++){
+
+                var xOffset = 0;
+                if (Math.abs(j)%2==1) xOffset = 1/2;
+                vertices.push(new THREE.Vector3(i + xOffset, j*triangleHeight, 0));
+
+            }
+
+        }
+        return vertices;
+    },
+
     _createGridMesh: function(){
         return this._createOctaFaceMesh();
     },
diff --git a/js/models/Lattice.js b/js/models/Lattice.js
index 7137f180..b2f7570a 100644
--- a/js/models/Lattice.js
+++ b/js/models/Lattice.js
@@ -47,6 +47,8 @@ Lattice = Backbone.Model.extend({
         this.set("basePlane", new BasePlane({cellType:this.get("cellType"),
             connectionType:this.get("connectionType"),
             scale:this.get("scale")}));
+
+        this._initialize();//call subclass init
     },
 
     ////////////////////////////////////////////////////////////////////////////////////
@@ -251,6 +253,24 @@ Lattice = Backbone.Model.extend({
 
 OctaFaceLattice = Lattice.extend({
 
+//    defaults: {
+//        columnSeparation: 0.2//% column separation
+//    },
+
+    _initialize: function(){
+
+        this.set("columnSeparation", 0.2);
+
+        //bind events
+        this.listenTo(this, "change:columnSeparation", this._changeColSeparation);
+    },
+
+    _changeColSeparation: function(){
+        var colSep = this.get("columnSeparation");
+        console.log(colSep);
+        this.get("basePlane").updateColSeparation(colSep);
+    },
+
     addCellAtPosition: function(absPosition){
 
         //calc indices in cell matrix
-- 
GitLab