Wed, 27 Oct 2010 14:11:35 +0100
test_mandelbrot.lua: Generate mandelbrot set demo
4
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 | -- Code originally by Luiz Henrique de Figueiredo |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 | -- At http://lua-users.org/lists/lua-l/2010-10/msg00754.html |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 | -- Ported to lua-xpm by Matthew Wild |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 | |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 | local xpm = require "xpm"; |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 | |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 | local N=255 |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 | |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 | local pic = xpm.new(N,N); |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 | |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 | for i=1,N do |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 | local y=2-4*(i-1)/(N-1) |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 | for j=1,N do |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 | local x=-2+4*(j-1)/(N-1) |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 | local xc,yc=x,y |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 | local X,Y=0,0 |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 | local p=0 |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 | for n=1,255 do |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 | X,Y = X^2-Y^2+xc, 2*X*Y+yc |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 | if X^2+Y^2>4 then p=n break end |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 | end |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 | pic:setpixel(j, i, ("#%02x%02x%02x"):format(p,p,p)); |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 | end |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 | end |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 | |
caf89bc9100a
test_mandelbrot.lua: Generate mandelbrot set demo
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 | pic:render(io.stdout); |