这是我尝试使用Pygame模块对 Python 3.5中的Mandelbrot集进行编程.
import math,pygame
pygame.init()

def mapMandelbrot(c,r,dim,xrange,yRange):
    x = (dim-c)/dim
    y = (dim-r)/dim
    #print([x,y])
    x = x*(xrange[1]-xrange[0])
    y = y*(yRange[1]-yRange[0])
    x = xrange[0] + x
    y = yRange[0] + y
    return [x,y]

def checkDrawBox(surface):
    for i in pygame.event.get():
        if i.type == pygame.QUIT:
            pygame.quit()
        elif i.type == pygame.MOUSEBUTTONDOWN:
            startXY = pygame.mouse.get_pos()
            BoxExit = False
            while BoxExit == False:
                for event in pygame.event.get():
                    if event.type == pygame.MOUSEBUTTONUP:
                        BoxExit = True
                if BoxExit == True:
                    return [startXY,pygame.mouse.get_pos()]
                pygame.draw.rect(surface,[255,0],[startXY,[pygame.mouse.get_pos()[0]-startXY[0],pygame.mouse.get_pos()[1]-startXY[1]]],1)
                pygame.display.update()

def setup():
    dimensions = 500
    white = [255,255,255]
    black = [0,0]
    checkIterations = 100
    canvas = pygame.display.set_mode([dimensions,dimensions])
    canvas.fill(black)
    xrange = [-2,2]
    yRange = [-2,2]
    xrangePrev = [0,0]
    yRangePrev = [0,0]
    newxrange = [0,0]
    newyRange = [0,0]
    while True:
        if not ([xrange,yRange] == [xrangePrev,yRangePrev]):
            draw(dimensions,canvas,yRange,checkIterations)
            pygame.display.update()
            xrangePrev = xrange
            yRangePrev = yRange
        Box = checkDrawBox(canvas)
        if Box != None:
            maxX = max([Box[0][0],Box[1][0]])
            maxY = max([Box[0][1],Box[1][1]])
            newxrange[0] = mapMandelbrot(Box[0][0],dimensions,yRange)[0]
            newxrange[1] = mapMandelbrot(Box[1][0],yRange)[0]
            newyRange[0] = mapMandelbrot(0,Box[0][1],yRange)[1]
            newyRange[1] = mapMandelbrot(0,Box[1][1],yRange)[1]
            xrange = newxrange
            yRange = newyRange

def draw(dim,surface,checkIterations):
    for column in range(dim):
        for row in range(dim):
            greyVal = iteration(0,mapMandelbrot(column,row,yRange),checkIterations,checkIterations)    
            surface.set_at([dim-column,row],greyVal)

def iteration(a,b,c,iterCount,maxIter):
    a = (a*a) - (b*b) + c[0]
    b = (2*a*b) + c[1]
    iterCount = iterCount - 1
    if iterCount == 0:
        return [0,0]
    elif abs(a+b) > 17:
        b = (iterCount/maxIter)*255
        return [b,b]
    else:
        return iteration(a,maxIter)


setup()

我相信迭代算法是正确的,但输出看起来不正确:

想知道可能是什么问题?很抱歉代码转储,只是不确定哪个部分可能会导致它看起来像那样.

解决方法

迷人的bug – 它看起来像一个被压扁的bug

总结

以上是DEVMAX为你收集整理的python – Mandelbrot设置显示不正确全部内容。

如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站 推荐给好友。

python – Mandelbrot设置显示不正确的更多相关文章

  1. HTML5拖拽功能实现的拼图游戏

    本文通过实例代码给大家介绍了HTML5拖拽功能实现的拼图游戏,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧

  2. ios – 在Parse Analytics中记录自定义事件需要24小时

    我是Parse的新手,我刚尝试添加基本事件,如下所示:从仪表板我可以看到记录的API请求事件,但我似乎无法访问特定的事件或数据.是否需要24小时注册或我错误地使用仪表板?

  3. Swift 绘图板功能完善以及终极优化

    前文总结接着这篇:Swift全功能的绘图板开发,虽然在上一篇中我们已经完成了这些功能:支持铅笔绘图(画点)支持画直线支持一些简单的图形做一个真正的橡皮擦能设置画笔的粗细能设置画笔的颜色能设置背景色或者背景图但是还有一个非常重要的功能没有实现,没错,那就是Undo/Redo!

  4. Swift 全功能的绘图板开发

    工程搭建先创建一个SingleViewApplication工程:语言选择Swift:为了最大程度的利用屏幕区域,我们完全隐藏掉状态栏,在Info.plist里修改或添加这两个参数:然后进入到Main.storyboard,开始搭建我们的UI。BaseBrush顾名思义,BaseBrush将会作为一个绘图的基类而存在,我们会在它的基础上创建一系列的子类,以达到弹性的设计目的。从当前的context中,得到Image,如果是ended状态或者需要支持连续不断的绘图,则将Image保存到realImage中。

  5. swift3.0 gcd 变化

    dispatchQueue首先,dispatch的全局函数不再写为下划线风格的名称了,它变成了一个更符合Swift风格的dispatchQueue的样子。这个任务在swift2.3很麻烦,不过,在3.0就不一样了:只需要一句话即可。其他变化:升级到Swift3在升级到Swift3时,你会发现,基本上每个文件都需要改动!Swift3语法书写起来要更贴近于自然语言。幸好Swift3在最终发布时,才会停止改变源代码。API的改变Swift3中最大的改变是标准库中在每个库中都采用了统一命名方式。

  6. Swift 数组、字典和集合

    前言Swift语言提供Array、Set和Dictionary三种基本的集合类型用来存储集合数据。数组是有序的数据集;集合是无序无重复的数据集;而字典是无序的键值对数组集。Swift的Array、Set和Dictionary类型被实现为泛型集合。集合的可变性如果创建一个Arrays、Sets或Dictionaries并且把它分配成一个变量,这个集合将会是可变的。Swift中的Array与Foundation中的NSArray是桥接的,可以相互转换。

  7. android – 用户可以选择输入详细信息或取消的对话框或表单

    在我的应用程序中,我希望用户可以看到一个对话框或表单,允许用户输入他们的姓名和电话号码.我看不到任何可供用户在弹出窗体或对话框中输入详细信息的内容.有没有简单的方法来做到这一点.谢谢解决方法您还可以使用AlertDialog.Builder将布局粘贴到警报对话框中,如下所示:

  8. canvas绘图按照contain或者cover方式适配并居中显示

    这篇文章主要介绍了canvas绘图按照contain或者cover方式适配并居中显示的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  9. 我就是要用CSS实现九宫格图

    本文介绍的就是我们最熟悉的老朋友,CSS。不讲枯燥的语法,抛开js,让我们一起来看业务中那别致的纯CSS实现,让我们一起来追求那更好的页面实现,希望我带着你走完这段旅程后,你能收获一些惊喜甚至灵感,感兴趣的小伙伴们可以参考一下

  10. HTML+CSS+JS实现图片的瀑布流布局的示例代码

    这篇文章主要介绍了HTML+CSS+JS实现图片的瀑布流布局的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部