Both rotations and displacements are generated by the function fun. Artlandia functions are shown in red.
<<Artlandia`
Quad[{x_, y_}, a_, thick_] :=
  {{Thickness[2thick], Black, #},
    {White, Thickness[thick], #}}& @ Line[ConnectEnds[
    {{x, y} - a/2, {x + a/2, y - a/2}, {x, y} + a/2,Ý
    {x - a/2, y + a/2}}]]
thick = 0.005; size = 1.;
Mail[fun_, dim_] := Show[
  Graphics[
    MapThread[Rotate[Quad[#, size, thick], (Pi #2)/2, #]& ,
       {Lattice[dim] + fun[Append[dim, 2]], fun[dim]},
       2
    ]
   ],
  AspectRatio -> Automatic, Background -> Black
]
Mail[RandomArray, {20, 20}]
Mail[NaturalArray, {20, 20}]
Mail[RandomWalkArray, {20, 20}]

Return