\documentclass[border=5mm]{standalone} \usepackage{luamplib} \begin{document} \mplibtextextlabel{enable} \mplibnumbersystem{double} \begin{mplibcode} vardef fizz(expr X) = pair m, n; m = right; n = origin; numeric x; x = X; forever: exitif x = 0; m := m zscaled (-1/2, -1/2); if odd x: n := n + m; fi x := x div 2; endfor n enddef; beginfig(1); numeric s, t; s = 256; t = 4; for n=0 upto (s/t*s/t-1): draw fizz(n) scaled s withpen pencircle scaled t withcolor ((7+n mod 8)/16)[1/2 blue, white]; endfor; path xx, yy; xx = (left--right) scaled (s+8); yy = xx rotated 90; for i=-1 upto 1: draw xx shifted (0, s*i) withpen pencircle scaled 1/8; draw yy shifted (s*i, 0) withpen pencircle scaled 1/8; if i=0: dotlabel.lrt("$-i$", (i, -1) scaled s); dotlabel.lrt("$+i$", (i, +1) scaled s); else: dotlabel.lrt("$" & decimal i & "-i$", (i,-1) scaled s); dotlabel.lrt("$" & decimal i & "$", (i, 0) scaled s); dotlabel.lrt("$" & decimal i & "+i$", (i, 1) scaled s); fi endfor endfig; \end{mplibcode} \end{document}