I like to keep things simple, so I'll skip the letter labels, but include the lines overhanging from the grid:
m = 30 (* number of mesh lines *); h = 2 (* overhang *);
lins = Join[#, Map[Reverse, #, {2}]] & @
Outer[{##} &, ArrayPad[Range[-1, 1, 2/m], h, "Extrapolated"], {-1, 1}];
Table[Graphics[{AbsoluteThickness[1/100],
Table[Line[Map[RotationTransform[θ], lins, {2}]],
{θ, 0, π/2 - π/(2 n), π/(2 n)}]}], {n, 3, 6}] // GraphicsRow
(click on the picture to see it in its full resolution splendor)
The original picture had more random orientations for grids B and C. I tried using Manipulate[]
to attempt to determine those rotations, but I was not successful. Maybe somebody else can try.If you want to play around with it yourself, have at it:
DynamicModule[{θl = {0, 0, 0}},
Panel[Row[{Dynamic[
Graphics[{AbsoluteThickness[1/100],
Table[Line[Map[RotationTransform[θ], lins, {2}]],
{θ, θl}]}, ImageSize -> Medium,
PlotRange -> {{-3/2, 3/2}, {-3/2, 3/2}}]],
Column[Table[With[{i = i},
Experimental`AngularSlider[Dynamic[θl[[i]]]]], {i, Length[θl]}]]}]]]