#!/usr/bin/env python3 from tkinter import Tk, Label, PhotoImage from math import log, pi from cmath import cos w, h = 1200, 960 root = Tk() label = Label(root) label.pack() img = PhotoImage(width=w,height=h) label.config(image=img) root.wait_visibility() xc, yc = - 0.35, 0.005 mag = 0.9 imax, zmax = 100, 100 for y in range(h): hexdata = "" for x in range(w): c = complex(xc + (2*x - w) / (w*mag), -yc - (2*y - h) / (w*mag)) z = complex(0.0, 0.0) backgnd = 0 for i in range(imax): z = c + pi * cos(z) if abs(z.imag) >= zmax: backgnd = log(i - log(log(abs(z.imag)),20)) / 3.0 break v = max(0.0, 1.0 - abs(1.0 - backgnd)) blue = (v ** 4, v ** 2.5, v) sepia = (v, v ** 1.5, v ** 3) color = blue if backgnd <=1 else sepia hexdata += '#%02X%02X%02X ' % tuple(int(n * 255) for n in color) img.put('{' + hexdata + '}', to=(0,y)) root.update() root.mainloop()