28 lines
628 B
CoffeeScript
28 lines
628 B
CoffeeScript
mandel = (x0, y0, x1, y1, w, h, maxiter) ->
|
|
[dx, dy] = [(x1 - x0) / w, (y1 - y0) / h]
|
|
res = []
|
|
|
|
y = y0
|
|
for yc in [0..h-1]
|
|
x = x0
|
|
for xc in [0..w-1]
|
|
[xx, yy] = [x, y]
|
|
c = '*'
|
|
for i in [0..maxiter-1]
|
|
# (xx+i*yy)^2 + (x+i*y) = xx^2 + i*2*xx*yy - yy^2 + x + i*y
|
|
# = (xx^2 - yy^2 + x) + i*(2*xx*yy + y)
|
|
[xx2, yy2] = [xx*xx, yy*yy]
|
|
if xx2 + yy2 >= 4.0
|
|
c = '.'
|
|
break
|
|
[xx, yy] = [xx2 - yy2 + x, 2*xx*yy + y]
|
|
res.push(c)
|
|
x += dx
|
|
res.push('\n')
|
|
y += dy
|
|
|
|
print(res.join(''))
|
|
return
|
|
|
|
mandel(-2, 2, 2, -2, 200, 100, 1000)
|
|
|