require "bitmap" -- Signifies the white edges on the blue squares. local LT = 0 local TR = 1 local RB = 2 local BL = 3 local edges = { {LT, BL, BL, RB, RB, TR, TR, LT, LT, BL, BL, RB}, {LT, LT, BL, BL, RB, RB, TR, TR, LT, LT, BL, BL}, {TR, LT, LT, BL, BL, RB, RB, TR, TR, LT, LT, BL}, {TR, TR, LT, LT, BL, BL, RB, RB, TR, TR, LT, LT}, {RB, TR, TR, LT, LT, BL, BL, RB, RB, TR, TR, LT}, {RB, RB, TR, TR, LT, LT, BL, BL, RB, RB, TR, TR}, {BL, RB, RB, TR, TR, LT, LT, BL, BL, RB, RB, TR}, {BL, BL, RB, RB, TR, TR, LT, LT, BL, BL, RB, RB}, {LT, BL, BL, RB, RB, TR, TR, LT, LT, BL, BL, RB}, {LT, LT, BL, BL, RB, RB, TR, TR, LT, LT, BL, BL}, {TR, LT, LT, BL, BL, RB, RB, TR, TR, LT, LT, BL}, {TR, TR, LT, LT, BL, BL, RB, RB, TR, TR, LT, LT} } local light_olive = bitmap.rgbColor(0xd3, 0xd0, 0x04) local pale_blue = bitmap.rgbColor(0x32, 0x50, 0xff) local W = color.white local B = color.black local colors = { {W, B, B, W}, {W, W, B, B}, {B, W, W, B}, {B, B, W, W} } local bmp = bitmap.of(1000, 1000, light_olive, "Peripheral_drift_illusion") local function draw_edge(px, py, edge) local c = colors[edge + 1] bmp:line(px, py, px + 46, py, c[1], 4) bmp:line(px + 46, py, px + 46, py + 46, c[2], 4) bmp:line(px, py + 46, px + 46, py + 46, c[3], 4) bmp:line(px, py + 46, px, py, c[4], 4) end for x = 0, 11 do local px = 90 + x * 70 for y = 0, 11 do local py = 90 + y * 70 bmp:rectangle(px, py, 50, 50, pale_blue) draw_edge(px, py, edges[y + 1][x + 1]) end end bmp:view(false, "", "", true)