@jonathan-durbin wrote:
If anyone has time, I would greatly appreciate suggestions for code improvement for this repository. I’m still learning julia, so I wouldn’t be surprised if I’m missing some tricks to make working with images easier. If you don’t want to click through, here’s the code:
using Images, FileIO function mandelbrot(; image_size:: Tuple{Int, Int} = (1080, 1920), center_point:: Tuple{Float64, Float64} = (0.0, -0.5), zoom:: Int = 1, file_name:: Union{String, Nothing} = nothing, ) aspect_ratio = image_size[2]/image_size[1] max_iters = 100 x = [0, 1.5] y = [0, x[2]*aspect_ratio] x[1], y[1] = -x[2], -y[2] x = map(a -> center_point[1] + a/zoom, x) y = map(a -> center_point[2] + a/zoom, y) scale = [ (x[2] - x[1])/image_size[1], (y[2] - y[1])/image_size[2], ] image = zeros(RGB{Float32}, image_size...) v = colorview(RGB, image) for i in CartesianIndices(image) c = 0 z = complex(y[1] + i[2]*scale[2], x[1] + i[1]*scale[1]) z_curr = z while v[i[1], i[2]] == RGB{Float32}(0, 0, 0) && c <= max_iters if abs(z_curr) > 2 v[i[1], i[2]] = RGB{Float32}(c/255, c/255, c/255) end z_curr = z_curr^2 + z c += 1 end end !isnothing(file_name) && save(file_name, image) end mandelbrot()
Thanks in advance!
Edit: by “critiques” I mean anything you see that I could be doing better. Efficiently indexing arrays, general syntax, working with types, etc.
Posts: 2
Participants: 2