public ArcScan() { if (controlPoints.length == 3) { // single arc case CircularArc arc = new CircularArc(controlPoints); visitArc(arc); } else { // go over each 3-points set and linearize it double[] arcControlPoints = new double[6]; CircularArc arc = new CircularArc(arcControlPoints); for (int i = 0; i <= controlPoints.length - 6; i += 4) { // have the arc work off the new control points System.arraycopy(controlPoints, i, arcControlPoints, 0, 6); arc.reset(); visitArc(arc); } } }