Draw a bubble bath

Jiro‘s Pick this week is bubblebath byAdam Danz.

Adam is no stranger to File Exchange and File Exchange Pick of the Week. He is even more active onMATLAB Answers. In fact, this entry by Adam stemmed from aquestion on MATLAB Answers. The original poster asked for ways of creating non-overlapping randomly placed circles within a region, with an ability to specify some parameters such as number of circles and min/max radii.

Let’s look at an example. Here, we will create circles with 10 linearly spaced different radii ranging from 1 to 10.

S.circSize = [1 10];
S.nSizes = 10;
S.supressWarning = true;
bubblebath(S);

Next, we specify the exact set of radii for the circles.

S.circSize = [0.5 1 1.5 3 5 20];
S.nSizes = NaN;
bubblebath(S);

I appreciate the effort he took to create this entry after some discussions on MATLAB Answers. He has also updated his entry based on the comments.

The other thing I really like is the detailed documentation (help) he includes with the function and the thorough error-checking for the input arguments. Those of you who have read some of my recent posts (this andthis) know that I am a big fan of the new Function Argument Validation that was introduced in R2019b. I understand that Adam wrote his function in an older release, but once he upgrades to the newest release, I encourage him to give it a try!