public List<VoronoiRegion> getRegions() {
        addCornerEdges(0, 0, borderMaxY); // left top
        addCornerEdges(borderMaxX, 0, borderMaxY); // right top
        addCornerEdges(0, borderMaxY, 0); // left bottom
        addCornerEdges(borderMaxX, borderMaxY, 0); // right bottom

        List<VoronoiRegion> regions = new ArrayList<>();
        if (sites == null)
            return regions;

        for (Site site : sites) {
            VoronoiRegion region = new VoronoiRegion();
            region.site = new VoronoiRegion.VoronoiPoint(site.coord.x, site.coord.y);
            int index = site.sitenbr;
            region.screen_width = borderMaxX;
            region.screen_height = borderMaxY;

            for (GraphEdge edge : allEdges) {
                if (index == edge.site1 || index == edge.site2) {
                    if (!(edge.x1 == edge.x2 && edge.y1 == edge.y2))
                        region.edges.add(new VoronoiRegion.VoronoiLine((int)edge.x1, (int)edge.x2, (int)edge.y1, (int)edge.y2));
                }
            }

            region.prepare();
            regions.add(region);
        }

        return regions;
    }
@param xValuesIn Array of X values for each site.
@param yValuesIn Array of Y values for each site. Must be identical length to yValuesIn
@param minX The minimum X of the bounding box around the voronoi
@param maxX The maximum X of the bounding box around the voronoi
@param minY The minimum Y of the bounding box around the voronoi
@param maxY The maximum Y of the bounding box around the voronoi
vorolay/src/main/java/quatja/com/vorolay/diagram/Voronoi.java