private void dbscan() {
            for (Point i : points) {
                if(isCancelled())
                    return;
                if (i.visited) {
                    continue;
                }
                i.visited = true;
                pointsClustered++;
                setProgress(100*pointsClustered/points.size());
                if (i.neighbourCount() < minpts) {
                    noise.add(i);
                } else {
                    HashSet<Point> c = new HashSet<Point>(minpts);
                    clusters.add(c);
                    i.inCluster = true;
                    expandCluster(c, i.getNeighbours());
                }
            }
            
        }