Julia set: Difference between revisions

→‎Vectorized: Improved algorithm - >3 times faster
(→‎Vectorized: Improved algorithm - >3 times faster)
Line 1,451:
[https://imgur.com/a/o3j9Zzn Example output.]
<lang python>"""
Solution from:
This solution is an improved version of an efficient Julia set solver
https://codereview.stackexchange.com/questions/210271/generating-julia-set
from:
'Bauckhage C. NumPy/SciPy Recipes for Image Processing:
Creating Fractal Images. researchgate. net, Feb. 2015.'
"""
from functools import partial
Line 1,493 ⟶ 1,491:
:return: 2D pixels array of intensities
"""
im, re = np.ogrid[min_coordinate.realimag: max_coordinate.realimag: widthheight * 1j],
imaginary_axis, real_axis = np.ogrid[
min_coordinate.imagreal: max_coordinate.imagreal: heightwidth * 1j,]
z = (re + 1j * im).flatten()
min_coordinate.real: max_coordinate.real: width * 1j]
complex_plane = real_axis + 1j * imaginary_axis
 
resultlive, = np.onesindices(complex_planez.shape) # indexes of pixels that have not escaped
iterations = np.empty_like(z, dtype=int)
 
for _i in range(iterations_count):
maskz_live = np.abs(complex_plane)z[live] <= thresholdmapping(z[live])
ifescaped not= mask.anyabs(z_live): > threshold
iterations[live[escaped]] = i
live = live[~escaped]
if live.size == 0:
break
else:
complex_plane[mask] = mapping(complex_plane[mask])
resultiterations[~masklive] += 1iterations_count
 
return resultiterations.reshape((height, width))
 
 
Line 1,521 ⟶ 1,522:
plt.axis('off')
plt.imshow(image,
cmap='nipy_spectralnipy_spectral_r',
origin='lower')
plt.show()
35

edits