Welcome, guest | Sign In | My Account | Store | Cart

Displays in a Tk window a pretty coloured 640x480 Mandelbrot set in 6 seconds. Calculates each one of the 300K pixels with a maximum of 256 iterations.
Only Tkinter used. Tested with Python 3.4
I will test any contribution and add it to the code if worthy.

Python, 48 lines
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48``` ```# by Antoni Gual Via 4/2015 from tkinter import Tk, Canvas, PhotoImage,NW,mainloop from time import clock def mandel_pixel(c): """ calculates the color index of the mandelbrot plane point passed in the arguments """ maxIt = 256 z = c for i in range(maxIt): a = z * z z=a + c if a.real >= 4.: return i return 256 def mandelbrot(xa,xb,ya,yb,x,y): """ returns a mandelbrot in a string for Tk PhotoImage""" #color string table in Photoimage format #RRGGBB clr=[ ' #%02x%02x%02x' % (int(255*((i/255)**.25)),0,0) for i in range(256)] clr.append(' #000000') #append the color of the centre as index 256 #calculate mandelbrot x,y coordinates for each screen pixel xm=[xa + (xb - xa) * kx /x for kx in range(x)] ym=[ya + (yb - ya) * ky /y for ky in range(y)] #build the Photoimage string by calling mandel_pixel to index in the color table return" ".join((("{"+" ".join(clr[mandel_pixel(complex(i,j))] for i in xm))+"}" for j in ym)) #window size x=640 y=480 #corners of the mandelbrot plan to display xa = -2.0; xb = 1.0 ya = -1.27; yb = 1.27 #Tkinter window window = Tk() canvas = Canvas(window, width = x, height = y, bg = "#000000");canvas.pack() img = PhotoImage(width = x, height = y) canvas.create_image((0, 0), image = img, state = "normal", anchor = NW) #do the mandelbrot t1=clock() img.put(mandelbrot(xa,xb,ya,yb,x,y)) print(clock()-t1, ' seconds') mainloop() ```
 Created by Antoni Gual on Thu, 23 Apr 2015 (MIT)