From eed6fab1a44baa090ebc1a83c1a4829acf5a7ed7 Mon Sep 17 00:00:00 2001
From: Jakob Yanagibashi <yanagibashi@kg.rwth-aachen.de>
Date: Thu, 20 Apr 2023 17:53:04 +0200
Subject: [PATCH] Add vertical model and fix some things

---
 js/model.js   |  7 ++++++-
 js/project.js | 12 +++++++-----
 main.js       | 18 ++++++++++++++++++
 3 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/js/model.js b/js/model.js
index 082b051..173e480 100644
--- a/js/model.js
+++ b/js/model.js
@@ -93,7 +93,12 @@ class Model {
       e: 0,
     };
     for (let i = commandArrayLength; i > 0; i--) {
+      currCoords.x = +this.commands[commandArrayLength - 1].goalx.value;
+      currCoords.y = +this.commands[commandArrayLength - 1].goaly.value;
+      currCoords.z = +this.commands[commandArrayLength - 1].goalz.value;
+      currCoords.e = +this.commands[commandArrayLength - 1].flow.value;
       // TODO: Why is this checking so much stuff? Coordinates XYZE should always be set.
+      /*
       if (currCoords.x == 0 && this.commands[commandArrayLength - 1].goalx) {
         currCoords.x = +this.commands[commandArrayLength - 1].goalx;
         currCoords.y = +this.commands[commandArrayLength - 1].goaly;
@@ -106,7 +111,7 @@ class Model {
         currCoords.e = +this.commands[commandArrayLength - 1].flow;
       } else {
         return currCoords;
-      }
+      }*/
     }
     return currCoords;
   }
diff --git a/js/project.js b/js/project.js
index 26ed9ed..5edcd3f 100644
--- a/js/project.js
+++ b/js/project.js
@@ -101,18 +101,20 @@ class Project {
   }
 
   addLine(flow, speed, toX, toY, toZ) {
-    if (flow > this.model.currentCoordinates().f) {
-      flow = this.model.currentCoordinates().f;
+    if (flow < this.model.currentCoordinates().e) {
+      flow = this.model.currentCoordinates().e;
     }
     var newLine = new Move(flow, speed, toX, toY, toZ);
-    window.currentProject.model.append(newLine);
+    //window.currentProject.model.append(newLine);
+    this.model.append(newLine);
   }
 
   addArc(flow, speed, size, directionXY, directionZ, curvature) {
+    const prevCoords = this.model.currentCoordinates();
     var nextStartHeight = 0;
     const steps = Math.min(size, 50);
+    const flowStep = (flow - prevCoords.e) / steps;
     const angle = 90;
-    const prevCoords = this.model.currentCoordinates();
     for (var i = 0; i <= steps; i++) {
       var sub_angle = (i / steps) * angle * 0.017453292519943295; // (angle / 180) * Math.PI;
       var xi = size * (1 - Math.cos(sub_angle));
@@ -173,7 +175,7 @@ class Project {
           }
           break;
       }
-      var newMove = new Move(flow, speed, newX, newY, newZ);
+      var newMove = new Move(prevCoords.e + flowStep * i, speed, newX, newY, newZ);
       this.model.append(newMove);
     }
   }
diff --git a/main.js b/main.js
index e60a7d5..667c18f 100644
--- a/main.js
+++ b/main.js
@@ -448,6 +448,24 @@ function getPresetModelVase() {
 
 function getPresetModelVertical() {
   var presetProject = new Project();
+  var extMult = 4;
+  var ext = 0;
+  const startX = 40;
+  var currBig;
+  var currSmall;
+
+  for (var i = 1; i < 15; i++) {
+    currBig = i * extMult;
+    currSmall = i * extMult - extMult / 2;
+
+    presetProject.addLine(ext, 1500, startX - currSmall, 0, 0);
+
+    presetProject.addArc(ext += currSmall * 1.5, 1500, currSmall, "1", "1", "1");
+
+    presetProject.addLine(ext, 1500, startX, 0, currBig);
+
+    presetProject.addArc(ext += currBig * 1.5, 1500, currBig, "3", "2", "1");
+  }
 
   return presetProject;
 }
-- 
GitLab