improved scaling of quadratic bezier curves

This commit is contained in:
hneemann 2019-05-27 13:00:45 +02:00
parent 17d712b5f8
commit 130aab48de

View File

@ -313,8 +313,9 @@ public class Polygon implements Iterable<Polygon.PathElement> {
* @param v the visitor to use * @param v the visitor to use
*/ */
public void traverse(PointVisitor v) { public void traverse(PointVisitor v) {
VectorInterface start = null;
for (PathElement pe : path) for (PathElement pe : path)
pe.traverse(v); start = pe.traverse(start, v);
} }
/** /**
@ -356,9 +357,11 @@ public class Polygon implements Iterable<Polygon.PathElement> {
/** /**
* Traverses all points * 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) { private static String str(float f) {
@ -406,8 +409,9 @@ public class Polygon implements Iterable<Polygon.PathElement> {
} }
@Override @Override
public void traverse(PointVisitor v) { public VectorInterface traverse(VectorInterface start, PointVisitor v) {
v.visit(p); v.visit(p);
return p;
} }
} }
//CHECKSTYLE.ON: FinalClass //CHECKSTYLE.ON: FinalClass
@ -471,10 +475,11 @@ public class Polygon implements Iterable<Polygon.PathElement> {
} }
@Override @Override
public void traverse(PointVisitor v) { public VectorInterface traverse(VectorInterface start, PointVisitor v) {
v.visit(c1); v.visit(c1);
v.visit(c2); v.visit(c2);
v.visit(p); v.visit(p);
return p;
} }
} }
@ -512,9 +517,11 @@ public class Polygon implements Iterable<Polygon.PathElement> {
} }
@Override @Override
public void traverse(PointVisitor v) { public VectorInterface traverse(VectorInterface start, PointVisitor v) {
v.visit(c); VectorInterface p1s = c.div(2);
v.visit(start.div(2).add(p1s).add(p.div(2).add(p1s)).div(2));
v.visit(p); v.visit(p);
return p;
} }
} }
@ -540,7 +547,8 @@ public class Polygon implements Iterable<Polygon.PathElement> {
} }
@Override @Override
public void traverse(PointVisitor v) { public VectorInterface traverse(VectorInterface start, PointVisitor v) {
return null;
} }
} }
} }