Created
September 6, 2020 10:09
-
-
Save IlievskiV/35f5ad384800dfedf6690abb54785e07 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| import matplotlib.animation as animation | |
| x_start, y_start = -2, -2 # an interesting region starts here | |
| width, height = 4, 4 # for 4 units up and right | |
| density_per_unit = 200 # how many pixles per unit | |
| # real and imaginary axis | |
| re = np.linspace(x_start, x_start + width, width * density_per_unit ) | |
| im = np.linspace(y_start, y_start + height, height * density_per_unit) | |
| threshold = 20 # max allowed iterations | |
| frames = 100 # number of frames in the animation | |
| # we represent c as c = r*cos(a) + i*r*sin(a) = r*e^{i*a} | |
| r = 0.7885 | |
| a = np.linspace(0, 2*np.pi, frames) | |
| fig = plt.figure(figsize=(10, 10)) # instantiate a figure to draw | |
| ax = plt.axes() # create an axes object | |
| def animate(i): | |
| ax.clear() # clear axes object | |
| ax.set_xticks([], []) # clear x-axis ticks | |
| ax.set_yticks([], []) # clear y-axis ticks | |
| X = np.empty((len(re), len(im))) # the initial array-like image | |
| cx, cy = r * np.cos(a[i]), r * np.sin(a[i]) # the initial c number | |
| # iterations for the given threshold | |
| for i in range(len(re)): | |
| for j in range(len(im)): | |
| X[i, j] = julia_quadratic(re[i], im[j], cx, cy, threshold) | |
| img = ax.imshow(X.T, interpolation="bicubic", cmap='magma') | |
| return [img] | |
| anim = animation.FuncAnimation(fig, animate, frames=frames, interval=50, blit=True) | |
| anim.save('julia_set.gif', writer='imagemagick') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment