Deleting circular regions from a larger Circle

I am trying to determine how the Dirichlet eigenvalues of the Laplacian of a circular region change. I would calculate the principal eigenvaluen of this image, and gradually decrease the radius of the deleted regions so that figure approaches a circle.

The position, number and size of the deletions should be random if possible, but once fixed, remain constant throughout the calculation process.

(The general outline of the process I follow is given in my question here).

• Like this: DiscretizeRegion[Fold[RegionDifference, Disk[], Disk @@@ {{{0, 0}, 1/5}, {{2/3, 1/3}, 1/20}, {{1/2, -1/4}, 1/8}}]]? – J. M. will be back soon Jun 30 '16 at 16:21
• yes basically this @J.M. – Aritra Saha Jun 30 '16 at 16:44

Here is a modified version of my previous answer, which prevents overlap between the randomly selected "holes" in the circular pattern. You can adjust:

• the radius of the Disk from which the center points are selected, which is currently set to $0.7$ to only allow holes fully enclosed by the circular region;
• the minimum allowed distance between the selected centers. This is currently set to $0.5$, i.e. more than twice the largest radius of the holes, to give well-separated holes.

Here is the new code:

While[
centers = RandomPoint[Disk[{0, 0}, 0.7], 3];
EuclideanDistance @@@ Subsets[centers, {2}] > 0.5
])
]

Function[

• With this method you can easily end up with inner circles that are so close to the boundary that they go over, like this. If you wanted to avoid that you'd have to make the Disk inside the RandomChoice have a radius smaller by 0.2 – Jason B. Jun 30 '16 at 17:06
• @guy141 Sure, just change the region from which you are subtracting. For instance, if you use Polygon[1.5 CirclePoints[5]] instead of Disk[] as the first argument of RegionDifference in the code above, you obtain this result. – MarcoB Jun 30 '16 at 17:08
• For some reason, this runs faster if you use DiscretizeGraphics@RegionPlot[ instead of DiscretizeRegion[ – Jason B. Jun 30 '16 at 17:12
• @guy141 Also, JasonB raises a good point about the center selection; you might want to change the code to centers = RandomPoint[Disk[{0, 0}, 0.8], 3] to prevent clipped disks. – MarcoB Jun 30 '16 at 17:12