private void improveCorners() {
        Point[] newP = new Point[corners.size()];
        for (Corner c : corners) {
            if (c.border) {
                newP[c.index] = c.loc;
            } else {
                double x = 0;
                double y = 0;
                for (Center center : c.touches) {
                    x += center.loc.x;
                    y += center.loc.y;
                }
                newP[c.index] = new Point(x / c.touches.size(), y / c.touches.size());
            }
        }
        corners.stream().forEach((c) -> {
            c.loc = newP[c.index];
        });
        edges.stream().filter((e) -> (e.v0 != null && e.v1 != null)).forEach((e) -> {
            e.setVornoi(e.v0, e.v1);
        });
    }