From 93816fad4b166756bb2de9d37998327e80f19dc0 Mon Sep 17 00:00:00 2001 From: "F.W. Dekker" Date: Sun, 31 Oct 2021 17:07:11 +0100 Subject: [PATCH] Add dynamic line thickness --- src/main/js/Main.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/js/Main.ts b/src/main/js/Main.ts index 804ed0e..8e1c76b 100644 --- a/src/main/js/Main.ts +++ b/src/main/js/Main.ts @@ -123,8 +123,9 @@ class Line { * Global constants. */ const settings = { - dotRadius: 10, + dotRadius: 20, fillGoal: 0.3, + lineThicknesses: [1, 5, 15], stepTime: 250, stepsPerLevel: 5, zoomSpeed: 1 / 30, @@ -142,8 +143,7 @@ doAfterLoad(() => { // Model - // TODO: Dynamic thickness calculation - const lines: Line[] = [new Line(1), new Line(5)]; + const lines: Line[] = [new Line(settings.lineThicknesses[0]), new Line(settings.lineThicknesses[1])]; let step = 0; setInterval(() => { const currentLevel = lines.findIndex(it => it.segments.length !== 25); @@ -164,7 +164,7 @@ doAfterLoad(() => { if (lowerLines.segments.length !== 0 && lowerLines.segments.length % 5 === 0) { if (lines.length <= inductionLevel) { - lines[inductionLevel] = new Line(5 ** inductionLevel); + lines[inductionLevel] = new Line(settings.lineThicknesses[level] / zoomFactor); } lines[inductionLevel].segments.push(lowerLines.sumSegmentsSlice(-settings.stepsPerLevel)); @@ -208,13 +208,13 @@ doAfterLoad(() => { // Zoom const excessFactor = Math.max( - ((1 / zoomFactor) * maxPoint.x) / (canvas.width * settings.fillGoal), - ((1 / zoomFactor) * maxPoint.y) / (canvas.height * settings.fillGoal) + (zoomFactor * maxPoint.x) / (canvas.width * settings.fillGoal), + (zoomFactor * maxPoint.y) / (canvas.height * settings.fillGoal) ); if (excessFactor > 1) { - zoomFactor *= excessFactor ** settings.zoomSpeed; + zoomFactor /= excessFactor ** settings.zoomSpeed; } - ctx.scale(1 / zoomFactor, 1 / zoomFactor); + ctx.scale(zoomFactor, zoomFactor); // Lines ctx.strokeStyle = "#ffffff";