test_mandelbrot.lua

-- Code originally by Luiz Henrique de Figueiredo
-- At http://lua-users.org/lists/lua-l/2010-10/msg00754.html
-- Ported to lua-xpm by Matthew Wild

local xpm = require "xpm";

local N=255

local pic = xpm.new(N,N);

for i=1,N do
	local y=2-4*(i-1)/(N-1)
	for j=1,N do
		local x=-2+4*(j-1)/(N-1)
		local xc,yc=x,y
		local X,Y=0,0
		local p=0
		for n=1,255 do
			X,Y = X^2-Y^2+xc, 2*X*Y+yc
			if X^2+Y^2>4 then p=n break end
		end
		pic:setpixel(j, i, ("#%02x%02x%02x"):format(p,p,p));
	end
end

pic:render(io.stdout);