From c06fcc94dc7b1c8ddf753a20990bf6f08853b258 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Mon, 16 Apr 2018 14:32:54 +1200 Subject: [PATCH] Progress on merging paths --- desktop/sources/scripts/tool.js | 36 +++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/desktop/sources/scripts/tool.js b/desktop/sources/scripts/tool.js index 45370c5..6ff1b6f 100644 --- a/desktop/sources/scripts/tool.js +++ b/desktop/sources/scripts/tool.js @@ -171,7 +171,17 @@ function Tool() var html = ""; for(id in layer){ var segment = layer[id]; - html += segment.type == "close" ? "Z " : this.render(segment); + html += segment.type == "close" ? "Z " : this.render(segment,0); + + // Three-folds + html += segment.type == "close" ? "Z " : this.render(segment,120); + html += segment.type == "close" ? "Z " : this.render(segment,240); + + // Five-folds + // html += segment.type == "close" ? "Z " : this.render(segment,72); + // html += segment.type == "close" ? "Z " : this.render(segment,72*2); + // html += segment.type == "close" ? "Z " : this.render(segment,72*3); + // html += segment.type == "close" ? "Z " : this.render(segment,72*4); } return html } @@ -181,7 +191,7 @@ function Tool() return [this.path(this.layers[0]),this.path(this.layers[1]),this.path(this.layers[2])] } - this.render = function(segment) + this.render = function(segment, angle = 0) { var type = segment.type; var verteces = segment.verteces; @@ -190,11 +200,15 @@ function Tool() for(id in verteces){ if(skip > 0){ skip -= 1; continue; } - if(id == 0){ html += `M${verteces[id].x},${verteces[id].y} `; } - var vertex = verteces[id]; + + var vertex = this.mirror_mod(verteces[id],angle); var next = verteces[parseInt(id)+1] var after_next = verteces[parseInt(id)+2] + if(id == 0){ + html += `M${vertex.x},${vertex.y} `; continue; + } + if(type == "line"){ html += `L${vertex.x},${vertex.y} `; } @@ -213,6 +227,20 @@ function Tool() return html } + this.mirror_mod = function(vertex,angle) + { + return rotate_point(vertex.x,vertex.y,150,150,angle) + } + + function rotate_point(pointX, pointY, originX, originY, angle) + { + angle = angle * Math.PI / 180.0; + return { + x: Math.cos(angle) * (pointX-originX) - Math.sin(angle) * (pointY-originY) + originX, + y: Math.sin(angle) * (pointX-originX) + Math.cos(angle) * (pointY-originY) + originY + }; + } + this.translate = function(a,b) { for(segment_id in this.layer()){