From 5be207da2c11b33ed57d35a7d995241d927785c9 Mon Sep 17 00:00:00 2001
From: Amanda Ghassaei <amandaghassaei@gmail.com>
Date: Thu, 9 Apr 2015 15:49:04 -0400
Subject: [PATCH] added troxes as freeform default

---
 assets/stls/parts/troxOcta.stl  | Bin 0 -> 53684 bytes
 assets/stls/parts/troxTetra.stl | Bin 0 -> 22884 bytes
 index.html                      |   6 +---
 js/fea/DMAPartTrox.js           |  62 ++++++++++++++++++++++++++++++++
 js/fea/DmaCellOcta.js           |   4 +--
 js/fea/DmaCellTetra.js          |  10 ++++--
 js/models/AppState.js           |   2 +-
 7 files changed, 73 insertions(+), 11 deletions(-)
 create mode 100644 assets/stls/parts/troxOcta.stl
 create mode 100644 assets/stls/parts/troxTetra.stl
 create mode 100644 js/fea/DMAPartTrox.js

diff --git a/assets/stls/parts/troxOcta.stl b/assets/stls/parts/troxOcta.stl
new file mode 100644
index 0000000000000000000000000000000000000000..b113b73de405df5e33499edd9ad871dc3429ab96
GIT binary patch
literal 53684
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
F{{Y9=eDeSR

literal 0
HcmV?d00001

diff --git a/assets/stls/parts/troxTetra.stl b/assets/stls/parts/troxTetra.stl
new file mode 100644
index 0000000000000000000000000000000000000000..cf90fabbb97fa7942fa35e424b421996a002de25
GIT binary patch
literal 22884
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
GGx1*|h*?_z

literal 0
HcmV?d00001

diff --git a/index.html b/index.html
index 60898e3d..ca27133d 100644
--- a/index.html
+++ b/index.html
@@ -36,11 +36,6 @@
     <!--numerical javascript-->
     <script src="dependencies/numeric-1.2.6.js"></script>
 
-    <!--global variables-->
-    <script>
-
-    </script>
-
     <!--multi-threading-->
     <script src="js/worker.js"></script>
     <script src="js/persistentWorkers.js"></script><!--global workers-->
@@ -53,6 +48,7 @@
     <script src="js/fea/DmaCellTetra.js"></script>
     <script src="js/fea/DmaCellOther.js"></script>
     <script src="js/fea/DmaPart.js"></script>
+    <script src="js/fea/DMAPartTrox.js"></script>
 
     <!--models-->
     <script src="js/models/ThreeModel.js"></script>
diff --git a/js/fea/DMAPartTrox.js b/js/fea/DMAPartTrox.js
new file mode 100644
index 00000000..9c0ecd2f
--- /dev/null
+++ b/js/fea/DMAPartTrox.js
@@ -0,0 +1,62 @@
+/**
+ * Created by aghassaei on 4/9/15.
+ */
+
+
+(function () {
+
+    var tetraTrox;
+
+    //import part geometry
+    var loader = new THREE.STLLoader();
+    loader.load("assets/stls/parts/troxTetra.stl", function(geometry){
+
+        tetraTrox = geometry;
+        tetraTrox.computeBoundingBox();
+        var unitScale = 1/3.25;
+        tetraTrox.applyMatrix(new THREE.Matrix4().makeScale(unitScale, unitScale, unitScale));
+//        tetraTrox.applyMatrix(new THREE.Matrix4().makeTranslation(0.25,-0.6, -0.45));
+//        tetraTrox.applyMatrix(new THREE.Matrix4().makeRotationZ(-Math.PI/6));
+    });
+
+    function DMATetraTroxPart(type, parent){
+        DMAPart.call(this, type, parent);
+    }
+    DMATetraTroxPart.prototype = Object.create(DMAPart.prototype);
+
+    DMATetraTroxPart.prototype._makeMeshForType = function(){
+        console.log("mesh");
+        var mesh = new THREE.Mesh(tetraTrox, partMaterial);
+        mesh.myPart = this;//need a ref back to this part
+        return mesh;
+    };
+
+    self.DMATetraTroxPart = DMATetraTroxPart;
+
+    var octaTrox;
+
+    //import part geometry
+    loader.load("assets/stls/parts/troxOcta.stl", function(geometry){
+
+        octaTrox = geometry;
+        octaTrox.computeBoundingBox();
+        var unitScale = 1/3.25;
+        octaTrox.applyMatrix(new THREE.Matrix4().makeScale(unitScale, unitScale, unitScale));
+//        octaTrox.applyMatrix(new THREE.Matrix4().makeTranslation(0.25,-0.6, -0.45));
+//        octaTrox.applyMatrix(new THREE.Matrix4().makeRotationZ(-Math.PI/6));
+    });
+
+    function DMAOctaTroxPart(type, parent){
+        DMAPart.call(this, type, parent);
+    }
+    DMAOctaTroxPart.prototype = Object.create(DMAPart.prototype);
+
+    DMAOctaTroxPart.prototype._makeMeshForType = function(){
+        var mesh = new THREE.Mesh(octaTrox, partMaterial);
+        mesh.myPart = this;//need a ref back to this part
+        return mesh;
+    };
+
+    self.DMAOctaTroxPart = DMAOctaTroxPart;
+
+})();
diff --git a/js/fea/DmaCellOcta.js b/js/fea/DmaCellOcta.js
index 8bbea381..0c269cf7 100644
--- a/js/fea/DmaCellOcta.js
+++ b/js/fea/DmaCellOcta.js
@@ -91,9 +91,7 @@ DMAFreeFormOctaCell.prototype._doMeshTransformations = function(mesh){
 
 DMAFreeFormOctaCell.prototype._initParts = function(){
     var parts  = [];
-    for (var i=0;i<3;i++){
-        parts.push(new DMATrianglePart(i, this));
-    }
+    parts.push(new DMAOctaTroxPart(1, this));
     return parts;
 };
 
diff --git a/js/fea/DmaCellTetra.js b/js/fea/DmaCellTetra.js
index e7b4a36e..3faa86fa 100644
--- a/js/fea/DmaCellTetra.js
+++ b/js/fea/DmaCellTetra.js
@@ -3,7 +3,7 @@
  */
 
 ///////////////////////////////////////////////////////////////////////////////////////////////
-////////////////////////FACE CONNECTED OCTA////////////////////////////////////////////////////
+////////////////////////FACE CONNECTED TETRA///////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////////////////////
 
 var unitCellGeo = new THREE.TetrahedronGeometry(Math.sqrt(3/8));
@@ -37,7 +37,7 @@ DMATetraFaceCell.prototype._getGeometry = function(){
 
 
 ///////////////////////////////////////////////////////////////////////////////////////////////
-////////////////////////EDGE CONNECTED OCTA////////////////////////////////////////////////////
+////////////////////////EDGE CONNECTED TETRA///////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////////////////////
 
 function DMATetraEdgeCell(indices, scale, cellMode, partType){
@@ -83,6 +83,12 @@ DMAFreeFormTetraCell.prototype.getType = function(){
     return "tetra";
 };
 
+DMAFreeFormTetraCell.prototype._initParts = function(){
+    var parts  = [];
+    parts.push(new DMATetraTroxPart(1, this));
+    return parts;
+};
+
 DMAFreeFormTetraCell.prototype.xScale = function(scale){
     if (!scale) scale = this.getScale();
     return scale;
diff --git a/js/models/AppState.js b/js/models/AppState.js
index 4e51b2d0..9922c1b2 100644
--- a/js/models/AppState.js
+++ b/js/models/AppState.js
@@ -64,7 +64,7 @@ AppState = Backbone.Model.extend({
                     //truss:"Truss"
                 },
                 freeformFace: {
-                    triangle:"Triangle"
+                    trox:"Troxes"
                     //beam:"Beam"
                 },
                 edge: null,
-- 
GitLab