我创建了一个Python文件来生成Mandelbrot集图像.原始的数学代码不是我的,所以我不理解它 - 我只是对其进行了大量修改,使其速度提高了约250倍(Threads规则!).
无论如何,我想知道如何修改代码的数学部分,使其呈现一个特定的位.这是数学部分:
for y in xrange(size[1]): coords = (uleft[0] + (x/size[0]) * (xwidth),uleft[1] - (y/size[1]) * (ywidth)) z = complex(coords[0],coords[1]) o = complex(0,0) dotcolor = 0 # default, convergent for trials in xrange(n): if abs(o) <= 2.0: o = o**2 + z else: dotcolor = trials break # diverged im.putpixel((x,y),dotcolor)
尺寸定义:
size1 = 500 size2 = 500 n=64 box=((-2,1.25),(0.5,-1.25)) plus = size[1]+size[0] uleft = box[0] lright = box[1] xwidth = lright[0] - uleft[0] ywidth = uleft[1] - lright[1]
我需要修改什么来使它渲染集合的某个部分?
这条线:
box=((-2,1.25),(0.5,-1.25))
是用于定义正在渲染的坐标空间区域的位,因此您只需更改此行.第一个坐标对是区域的左上角,第二个是右下角.
从图像中获取新坐标应该非常简单.你有两个坐标系,你的"图像"系统大小为100x100像素,原点为(0,0).而你的"复杂"平面坐标系由"盒子"定义.对于X:
X_complex=X_complex_origin+(X_image/X_image_width)*X_complex_width