Is it possible to draw this figure using Mathematica?
Here's a quick take on it:
Clear[spiralize];
spiralize[p_, d_:10, r_:4, f_:0.8, s_:1, t_:0.005]:=Module[{m,rr=r},
m = Mean @ p[[1]];
Graphics[{EdgeForm[Thickness[t]],FaceForm[White],
NestList[GeometricTransformation[
GeometricTransformation[#,
RotationTransform[rr++s \[Degree],m]],
ScalingTransform[{f,f},m]
]&, p, d]}
]
]
pts = RandomReal[{-1, 1}, {50, 2}];
polys = MeshPrimitives[VoronoiMesh[pts], 2];
Show[spiralize[#, 40, 5, 0.85] & /@ polys]
Play with the parameters:
pts = RandomReal[{-1, 1}, {10, 2}];
polys = MeshPrimitives[VoronoiMesh[pts], 2];
Manipulate[
Show[spiralize[#, d, r, f, s, t] & /@ polys], {{d, 10}, 1, 20,
1}, {{r, 5}, 1, 20}, {{f, 0.85}, 0, 1}, {{s, 1}, 0.1,
3}, {{t, 0.001}, 0, 0.01}]
voronoi[pts_] := ListDensityPlot[Append[#, 0]&/@ pts, InterpolationOrder-> 0,
Frame -> False]
pts = RandomReal[{0, 256}, {20, 2}];
cp = Cases[Normal@voronoi[pts], Polygon[a_, ___] :> Polygon[a], ∞];
cp1 = cp /. Polygon[a___] :> a;
ms = Mean /@ cp1;
Graphics[{EdgeForm[Black], FaceForm[White], cp,
Line /@ Join @@@ (Transpose /@ (MapThread[
Table[BSplineFunction[Join[Join[#1, #1][[i ;; i + 1]], #2]][t],
{i, 1, Length@#1}] &, {cp1, List /@ ms}, 1] /.
a_[t] :> a /@ Range[0, 1, .03]))}]
Here is a slightly different way of going about it:
BlockRandom[SeedRandom[42, Method -> "Rule30CA"]; (* for reproducibility *)
pts = RandomReal[{-1, 1}, {50, 2}]];
With[{h = 1/5 (* offset *), n = 30 (* iterations *)},
Graphics[{FaceForm[], EdgeForm[AbsoluteThickness[1/5]],
NestList[# /. Polygon[p_] :>
Polygon[Transpose[Partition[p, 2, 1, 1], {1, 3, 2}].
{1 - h, h}] &,
MeshPrimitives[VoronoiMesh[pts], 2], n]}]]
This version incorporates Rahul's suggestion to randomize the rotation directions:
With[{h = 1/5 (* offset *), n = 30 (* iterations *)},
BlockRandom[SeedRandom[42, Method -> "Rule30CA"]; (* for reproducibility *)
pts = RandomReal[{-1, 1}, {50, 2}];
Graphics[{FaceForm[], EdgeForm[AbsoluteThickness[1/5]],
NestList[# /. Polygon[p_] :>
Polygon[Transpose[Partition[p, 2, 1, 1], {1, 3, 2}].
{1 - h, h}] &,
Map[RandomChoice[{Identity, Reverse}][#] &,
MeshPrimitives[VoronoiMesh[pts], 2], {2}], n]}]]]