From 130aab48de1c969b1b7b480f855d3117593053b8 Mon Sep 17 00:00:00 2001 From: hneemann Date: Mon, 27 May 2019 13:00:45 +0200 Subject: [PATCH] improved scaling of quadratic bezier curves --- .../digital/draw/graphics/Polygon.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/neemann/digital/draw/graphics/Polygon.java b/src/main/java/de/neemann/digital/draw/graphics/Polygon.java index 55fbc26f7..c8acc91cf 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/Polygon.java +++ b/src/main/java/de/neemann/digital/draw/graphics/Polygon.java @@ -313,8 +313,9 @@ public class Polygon implements Iterable { * @param v the visitor to use */ public void traverse(PointVisitor v) { + VectorInterface start = null; for (PathElement pe : path) - pe.traverse(v); + start = pe.traverse(start, v); } /** @@ -356,9 +357,11 @@ public class Polygon implements Iterable { /** * Traverses all points * - * @param v the visitor to use + * @param start the start point + * @param v the visitor to use + * @return the end point */ - void traverse(PointVisitor v); + VectorInterface traverse(VectorInterface start, PointVisitor v); } private static String str(float f) { @@ -406,8 +409,9 @@ public class Polygon implements Iterable { } @Override - public void traverse(PointVisitor v) { + public VectorInterface traverse(VectorInterface start, PointVisitor v) { v.visit(p); + return p; } } //CHECKSTYLE.ON: FinalClass @@ -471,10 +475,11 @@ public class Polygon implements Iterable { } @Override - public void traverse(PointVisitor v) { + public VectorInterface traverse(VectorInterface start, PointVisitor v) { v.visit(c1); v.visit(c2); v.visit(p); + return p; } } @@ -512,9 +517,11 @@ public class Polygon implements Iterable { } @Override - public void traverse(PointVisitor v) { - v.visit(c); + public VectorInterface traverse(VectorInterface start, PointVisitor v) { + VectorInterface p1s = c.div(2); + v.visit(start.div(2).add(p1s).add(p.div(2).add(p1s)).div(2)); v.visit(p); + return p; } } @@ -540,7 +547,8 @@ public class Polygon implements Iterable { } @Override - public void traverse(PointVisitor v) { + public VectorInterface traverse(VectorInterface start, PointVisitor v) { + return null; } } }