Welcome, guest | Sign In | My Account | Store | Cart
```# Dragon Fractal using Iteration method
# FB - 20120106
from collections import deque
from PIL import Image
imgx = 512
imgy = 512
image = Image.new("RGB", (imgx, imgy))
maxIt = 16 # max iterations allowed

xa = -1.0 / 3
xb = 7.0 / 6
ya = -1.0 / 3
yb = 2.0 / 3

for ky in range(imgy):
for kx in range(imgx):
x = float(kx) / (imgx - 1) * (xb - xa) + xa
y = float(ky) / (imgy - 1) * (yb - ya) + ya
queue = deque([])
queue.append((x, y, 0))
while len(queue) > 0:
(x, y, i) = queue.popleft()
# try 1. transformation
xnew = x + y
ynew = y - x
if xnew >= xa and xnew <= xb and ynew >= ya and ynew <= yb:
if i + 1 == maxIt: break
queue.append((xnew, ynew, i + 1))
# try 2. transformation
xnew = 1.0 - x + y
ynew = 1.0 - x - y
if xnew >= xa and xnew <= xb and ynew >= ya and ynew <= yb:
if i + 1 == maxIt: break
queue.append((xnew, ynew, i + 1))

image.putpixel((kx, ky), (i % 8 * 32, 255 - i % 16 * 16, i % 16 * 16))

image.save("DragonFractal_Iter.png", "PNG")
```