目前,我正在使用生成 Julia 集和 Mandelbrot 集的脚本,然后使用 pygame 来渲染点。
本质上,屏幕被映射到一个较小的坐标系,其边界为 x 轴上的 -2.5, 2.5 和 y 轴上的 -1, 1。然后将此映射范围中的每个像素传递给一个函数,以检查其等价的复数是否在给定的集合中。此函数返回计算该数字是否在集合中(或最大迭代次数)所花费的迭代次数。
然后,对于每个像素,我知道根据此迭代分数为它着色什么颜色,并逐个渲染每个像素。这部分过程非常密集,需要大约 30 秒的时间来渲染,但根据场景的复杂程度,可能会更多。
这是用于确定传递的复数和复坐标是否在 Julia 集中的代码,在检查 1920 * 1080 像素时根本不需要很长时间计算:
max_iter = 45
def julia(z, c):
n = 0
while abs(z) <= 2 and n < max_iter:
z = z * z + c
n += 1
return n
Run Code Online (Sandbox Code Playgroud)
这是我用于pygame渲染的代码,这绝对是问题所在:
size_ = 1920, 1080
re_ = -2.5, 2.5
im_ = -1, 1
surf = pygame.Surface(size)
colour_gradient1 = [c, c1, c2, c3, ...] # …Run Code Online (Sandbox Code Playgroud)