from __future__ import division import curses range = xrange ITOCHAR = {5:'@', 4:'O', 3:'*', 2:'.', 1:'`', 0:' '} def mandelbrotTest(c): ''''Tests to see if a point is is the mandelbrot set, and assigns it a character based on how quickly it escaped, if at all.''' Z = c i = 0 while abs(Z) <= 2: if i > 500: break Z = Z ** 2 + c i += 1 return ITOCHAR[i // 100] def main(stdscr): C = curses.COLS R = curses.LINES X = C - 1 if C % 2 == 0 else C # Resolution. Should be an odd number. Y = R - 1 if R % 2 == 0 else R xMid = X // 2 # This represents the axes on a complex plane. yMid = Y // 2 dx = 2 / xMid # How much each cell represents in the context dy = 2 / yMid # of the complex plane. stdscr.clear() stdscr.refresh() #canvas = curses.newpad(Y,X) for row in range(Y): for col in range(X): x, y = (-2 + dx * col), (2 - dy * row) c = complex(x, y) stdscr.addstr(row, col, mandelbrotTest(c)) stdscr.refresh() if __name__ == "__main__": curses.wrapper(main)