#!/usr/bin/env python3 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation import pyopencl as cl from alive_progress import alive_bar img_res_x = 2000 img_res_y = 2000 total_pixels = img_res_x * img_res_y # so we don't gotta compute it every time periods = 1 square_x = 0 square_y = 0 xmin = (-periods * np.pi) + (square_x * np.pi) xmax = (periods * np.pi) + (square_x * np.pi) ymin = (-periods * np.pi) + (square_y * np.pi) ymax = (periods * np.pi) + (square_y * np.pi) escape = 10000 iterations = 255*3 c_x = 2 * np.pi c_y = 2 * np.pi animation_progres_save = "./animations" frames = 120 rendered_frames = [] plt.style.use('dark_background') # fuck this shit fig = plt.figure(frameon=False) fig.set_size_inches(img_res_x/fig.dpi, img_res_y/fig.dpi) #fig.set_size_inches(width/height, 1, forward=False) ax = plt.Axes(fig, [0., 0., 1., 1.]) ax.set_axis_off() fig.add_axes(ax) cmap = plt.cm.viridis cmap.set_bad((0,0,0)) cmap.set_over((0,0,0)) cmap.set_under((0,0,0)) opencl_context = cl.create_some_context() opencl_queue = cl.CommandQueue(opencl_context) #def render(): # image = np.empty([img_res_y, img_res_x]) # print("Rendering frames") # with alive_bar(frames, bar = 'filling', spinner = 'waves') as bar_total: # for frame in range(frames): # split_ratio = frame / frames # for pix_y, y in enumerate(np.linspace(ymin, ymax, img_res_y)): # for pix_x, x in enumerate(np.linspace(xmin, xmax, img_res_x)): # on_x = x # on_y = y # for i in range(iterations): # next_x = (split_ratio * (on_x/np.sin(on_y))) + ((1 - split_ratio) * on_x/np.tan(on_y)) # on_y = (split_ratio * (on_y/np.sin(on_x))) + ((1 - split_ratio) * on_y/np.tan(on_x)) # on_x = next_x # if on_x**2 + on_y**2 > escape: # break # image[pix_y][pix_x] = i # rendered_frame = ax.imshow(image, norm="log", aspect="auto", cmap=cmap, animated=False) # rendered_frames.append([rendered_frame]) # bar_total() def display(): print(rendered_frames) ani = animation.ArtistAnimation(fig, rendered_frames, interval=30, blit=True) ani.save("test.mp4") plt.show() render() display()