def gen_delaunay(points):
    delaunay = [points_to_triangle([-5,-5], [-5,10], [10,-5])]
    number_of_points = 0

    while number_of_points < len(points):
        point_to_add = points[number_of_points]

        delaunay_index = 0

        invalid_triangles = []
        while delaunay_index < len(delaunay):
            circumcenter, radius = triangle_to_circumcenter(delaunay[delaunay_index])
            new_distance = get_distance(circumcenter, point_to_add)
            if (new_distance < radius):
                invalid_triangles.append(delaunay[delaunay_index])
            delaunay_index += 1

        points_in_invalid = []
        for i in range(0, len(invalid_triangles)):
            delaunay.remove(invalid_triangles[i])
            for j in range(0, len(invalid_triangles[i])):
                points_in_invalid.append(invalid_triangles[i][j])
        points_in_invalid = [list(x) for x in set(tuple(x) for x in points_in_invalid)]

        for i in range(0, len(points_in_invalid)):
            for j in range(i + 1, len(points_in_invalid)):
                # zliczamy liczbę wystąpień obu punktów w niedozwolonych trójkątach
                count_occurrences = 0
                for k in range(0, len(invalid_triangles)):
                    count_occurrences += 1 * \
                      (points_in_invalid[i] in invalid_triangles[k]) * \
                      (points_in_invalid[j] in invalid_triangles[k]) 
                if(count_occurrences == 1):
                    delaunay.append(points_to_triangle(points_in_invalid[i], \
                        points_in_invalid[j], point_to_add))
        number_of_points += 1
    return(delaunay)
