Inspired by Visual illusions based on single-field contrast asynchronies and by beesandbombs.

Mathematica code:

v[a_] :=

{{Cos[a], 0},

{0, Sin[a]},

{Sin[a], Cos[a] + Sin[a]},

{0, 2 Cos[a] + Sin[a]},

{Cos[a], 2 Cos[a] + 2 Sin[a]},

{Cos[a] + Sin[a], Cos[a] + 2 Sin[a]},

{Cos[a] + 2 Sin[a], 2 Cos[a] + 2 Sin[a]},

{2 Cos[a] + 2 Sin[a], 2 Cos[a] + Sin[a]},

{2 Cos[a] + Sin[a], Cos[a] + Sin[a]},

{2 Cos[a] + 2 Sin[a], Sin[a]},

{Cos[a] + 2 Sin[a], 0},

{Cos[a] + Sin[a], Cos[a]}}

q[a_, b_, f_, w0_, w1_, w2_, w3_, t_] :=

{{GrayLevel[b + f*Sin[2 Pi (w0 + t)]],

Polygon[{v[a][[12]], v[a][[1]], v[a][[2]], v[a][[3]]}]},

{GrayLevel[b - f*Sin[2 Pi (w1 + t)]],

Polygon[{v[a][[3]], v[a][[4]], v[a][[5]], v[a][[6]]}]},

{GrayLevel[b - f*Sin[2 Pi (w2 + t)]],

Polygon[{v[a][[9]], v[a][[10]], v[a][[11]], v[a][[12]]}]},

{GrayLevel[b + f*Sin[2 Pi (w3 + t)]],

Polygon[{v[a][[6]], v[a][[7]], v[a][[8]], v[a][[9]]}]},

{Thick, GrayLevel[b + f], Line[{v[a][[1]], v[a][[2]], v[a][[3]]}]},

{Thick, GrayLevel[b - f], Line[{v[a][[3]], v[a][[12]], v[a][[1]]}]},

{Thick, GrayLevel[b - f], Line[{v[a][[3]], v[a][[4]], v[a][[5]]}]},

{Thick, GrayLevel[b + f], Line[{v[a][[5]], v[a][[6]], v[a][[3]]}]},

{Thick, GrayLevel[b + f], Line[{v[a][[11]], v[a][[12]], v[a][[9]]}]},

{Thick, GrayLevel[b - f], Line[{v[a][[9]], v[a][[10]], v[a][[11]]}]},

{Thick, GrayLevel[b - f], Line[{v[a][[9]], v[a][[6]], v[a][[7]]}]},

{Thick, GrayLevel[b + f], Line[{v[a][[9]], v[a][[8]], v[a][[7]]}]}}

Manipulate[

With[{pr = 6, h = 2, v = 3, b = .8, f = .2, w0 = 0, w1 = 1/8, w2 = 2/8, w3 = 3/8, a = .9},

Graphics[

Table[

Translate[

Table[

Translate[

q[a, b, f, w0 + x/4 + y/4, w1 + x/4 + y/4, w2 + x/4 + y/4, w3 + x/4 + y/4, t],

y {0, Sin[a] + 2 Cos[a] + Sin[a]}],

{y, -v - 1, v, 1}],

x {2 Cos[a] + 2 Sin[a], 0}],

{x, -h - 1, h, 1}],

PlotRange -> {{-pr, pr}, {-7/5 pr, 7/5 pr}}, Background -> GrayLevel[b], ImageSize -> 500]],

{t, 0, .95, .05 }]