fractal Hilbert curve
from kandinsky import * def draw_line(x, y, dx, dy, c): if dx == 0: if dy > 0: y1, y2 = y, y+dy+1 else: y1, y2 = y+dy, y+1 for y0 in range(y1, y2): set_pixel(x, y0, c) y += dy else: if dx > 0: x1, x2 = x, x+dx+1 else: x1, x2 = x+dx, x+1 for x0 in range(x1, x2): set_pixel(x0, y, c) x += dx return x, y def hilbert(n=5, dx=5, dy=0, x=5, y=5, a=90, c=color(0,0,0)): if n == 0: pass elif a == 90: dx, dy = -dy, dx x, y, dx, dy = hilbert(n-1, dx, dy, x, y, -90, c) x, y = draw_line(x, y, dx, dy, c) dx, dy = dy, -dx x, y, dx, dy = hilbert(n-1, dx, dy, x, y, 90, c) x, y = draw_line(x, y, dx, dy, c) x, y, dx, dy = hilbert(n-1, dx, dy, x, y, 90, c) dx, dy = dy, -dx x, y = draw_line(x, y, dx, dy, c) x, y, dx, dy = hilbert(n-1, dx, dy, x, y, -90, c) dx, dy = -dy, dx else: dx, dy = dy, -dx x, y, dx, dy = hilbert(n-1, dx, dy, x, y, 90, c) x, y = draw_line(x, y, dx, dy, c) dx, dy = -dy, dx x, y, dx, dy = hilbert(n-1, dx, dy, x, y, -90, c) x, y = draw_line(x, y, dx, dy, c) x, y, dx, dy = hilbert(n-1, dx, dy, x, y, -90, c) dx, dy = -dy, dx x, y = draw_line(x, y, dx, dy, c) x, y, dx, dy = hilbert(n-1, dx, dy, x, y, 90, c) dx, dy = dy, -dx return x, y, dx, dy