#!/bin/python #written for py3.5.2 from drawille import Canvas import cmath import math import curses from PIL import Image import argparse def init () : global args parser = argparse.ArgumentParser() parser.add_argument("-xm", help="max x", type=int) parser.add_argument("-ym", help="max y", type=int) parser.add_argument("-xt", help="tran x", type=float) parser.add_argument("-yt", help="tran y", type=float) parser.add_argument("-s", help="scale", type=float) parser.add_argument("-b", help="braile", action="store_true") parser.add_argument("-t", help="threshhold of calcs", type=int) args = parser.parse_args() global xt xt = args.xt global yt yt = args.yt global xs xs = args.s global ys ys = args.s global xm xm = args.xm global ym ym = args.ym global thr thr = args.t global vals vals = [[]] if (args.b) : global screen screen = curses.initscr() curses.start_color() curses.noecho() curses.cbreak() screen.keypad(1) xm = screen.getmaxyx()[1] * 2 ym = screen.getmaxyx()[0] * 3 global canvas canvas = Canvas() else : global img global pix img = Image.new('RGB', (xm, ym), (255, 255, 255)) pix = img.load() global recm recm = [[]] for xi in range(0, xm, 1) : vals.append([]) recm.append([]) for yi in range(0, ym, 1) : vals[xi].append(complex(0, 0)) recm[xi].append(thr) if (args.b) : canvas.set(xi,yi) def end () : if (args.b) : curses.echo() curses.nocbreak() screen.keypad(0) curses.endwin() else : img.save("mandel","PNG") return init() for i in range(0, thr, 1) : for xi in range(0, xm, 1) : for yi in range(0, ym, 1) : tval = vals[xi][yi] if (recm[xi][yi] == thr) : if (math.sqrt(math.pow(tval.real, 2.0) + math.pow(tval.imag, 2.0)) >= 2 ) : recm[xi][yi] = i else : c = complex(xt + (xs * xi), yt - (ys * yi)) vals[xi][yi] = vals[xi][yi] * vals[xi][yi] + c for xi in range(0, xm, 1) : for yi in range(0, ym, 1) : if (args.b) : if (recm[xi][yi] != thr) : canvas.unset(xi, yi) else : color = 255 - int(255.0/float(thr) * float(recm[xi][yi])) pix[xi, yi] = (color, color, color) #screen.addstr(0, 0, canvas.frame()) #screen.refresh() end() if (args.b) : print(canvas.frame())