Mr. Wizard made me realize that although I had an analytic form for areas that I could use in RegionPlot , if I got a parameterized form for borders, then I could use ParametricPlot . So let's do it!
The circle i th ( i=0,...,n-1 ) is parameterized in the complex plane using Exp[I t] + Exp[2 i Pi I / n] for t in [0, 2 Pi] .
We can decide to find the intersection of the circles i th and (i+o-1) th where o is the number of overlaps, as in the source code of the question. It gives points in
point[n_, o_, i_] := {Cos[(2 i Pi)/n] + Cos[(2 Pi (i + o - 1))/n], Sin[(2 i Pi)/n] + Sin[(2 Pi (i + o - 1))/n]}
Now we can parameterize the arcs going from the origin to a point[n,o,i] , and reflect them along the line going from the origin to a point[n,o,i] . Interpolation between two parameters s gives parameterized regions
area[n_, o_, i_, t_, s_] := With[{a = 2 Sin[((2 + n - 2 o) (1 - t) )/(2 n) Pi], b = (2 - 4 i + 2 t + nt - 2 o (1 + t))/(2 n) Pi, c = ((2 + n - 2 o) (1 - t) - 4 i)/(2 n) Pi}, {a (s Cos[b] + (1 - s) Sin[c]) , -a (s Sin[b] - (1 - s) Cos[c])}]
Then we can determine
rplot[n_Integer, o_Integer] := ParametricPlot[Evaluate[ Table[area[n, o, i, t, s], {i, 0, n - 1}]], {t, 0, 1}, {s, 0, 1}, Mesh -> False, MaxRecursion -> 1, Frame -> False, Axes -> False, PlotRange -> 2.1 {{-1, 1}, {-1, 1}}, Epilog -> {Table[Circle[{Cos[t], Sin[t]}, 1], {t, 0, 2 Pi (n-1)/n, 2 Pi/n}], Red, Point[Table[point[n, o, i], {i, 1, n}]]}]
And GraphicsGrid[{{rplot[3, 2], rplot[5, 3]}, {rplot[7, 2], rplot[4, 1]}}] creates
