You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

#### 51 lines 971 B Raw Permalink Blame History

 ```# https://www2.isye.gatech.edu/~jjb/research/mow/mow.pdf ``` ``` ``` ```def sierpinski_index(x, y, w): ``` ``` index = w ``` ``` result = 0 ``` ``` ``` ``` if x > y: ``` ``` result += 1 ``` ``` x = w - x ``` ``` y = w - y ``` ``` ``` ``` while index > 0: ``` ``` result *= 2 ``` ``` if x + y > w: ``` ``` result += 1 ``` ``` old_x = x ``` ``` x = w - y ``` ``` y = old_x ``` ``` x *= 2 ``` ``` y *= 2 ``` ``` result *= 2 ``` ``` if y > w: ``` ``` result += 1 ``` ``` old_x = x ``` ``` x = y - w ``` ``` y = w - old_x ``` ``` index //= 2 ``` ``` return result ``` ``` ``` ```import itertools ``` ```from PIL import Image, ImageDraw ``` ```width = 22 ``` ```thing = 16 ``` ```border = 8 ``` ```points = list(itertools.product(range(width), range(width))) ``` ```print(points) ``` ```points.sort(key=lambda xy: sierpinski_index(xy[0], xy[1], width)) ``` ```print(points) ``` ``` ``` ```def scale(point): ``` ``` x, y = point ``` ``` return x * thing + border, y * thing + border ``` ``` ``` ```img = Image.new("RGB", ((width - 1) * thing + border * 2, (width - 1) * thing + border * 2)) ``` ```draw = ImageDraw.Draw(img) ``` ``` ``` ```for sp, ep in zip(points, points[1:]): ``` ``` draw.line((scale(sp), scale(ep)), fill="white", width=0) ``` ``` ``` ```img.show() ``` `img.save("/tmp/apio.png")`