55 lines
1.6 KiB
Text
55 lines
1.6 KiB
Text
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)
|