当前位置:  开发笔记 > 编程语言 > 正文

如何'放大'Mandelbrot集的一部分?

如何解决《如何'放大'Mandelbrot集的一部分?》经验,为你挑选了1个好方法。

我创建了一个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]

我需要修改什么来使它渲染集合的某个部分?



1> Ian Hopkinso..:

这条线:

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

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有