public void draw(Graphics2D g2d) {
		close();
		if (debug) {
			g2d.setColor(Color.GREEN);
			drawDebug(g2d);
		}
		g2d.setColor(Color.BLUE);
		final List<Point2D.Double> centers = new ArrayList<Point2D.Double>();
		for (Line2D.Double l : lines) {
			centers.add(GeomUtils.getCenter(l));
		}
		g2d.draw(new Line2D.Double(lines.get(0).getP1(), centers.get(0)));
		g2d.draw(new Line2D.Double(centers.get(centers.size() - 1), end));
		for (int i = 0; i < lines.size() - 1; i++) {
			final Point2D c1 = centers.get(i);
			final Point2D c2 = centers.get(i + 1);
			final Point2D ctrl = lines.get(i).getP2();
			assert ctrl.equals(lines.get(i + 1).getP1());
			final QuadCurve2D.Double quad = new QuadCurve2D.Double(c1.getX(), c1.getY(), ctrl.getX(), ctrl.getY(), c2
					.getX(), c2.getY());
			g2d.draw(quad);
		}
		if (debug) {
			for (Point2D.Double c : centers) {
				GeomUtils.fillPoint2D(g2d, c);
			}
		}
	}