Python教程_Python画Mandelbrot集 代码

作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19

曼德勃罗集(Mandelbrot集)可能是最有名的分形图形显卡,课课家小编下面分享的是Python教程的详细教程,是如何使用Python来尝试绘制图形的。由于Python标准库未进行图形处理的支持,我用的是PIL。首先看一个图表生成:相关的代码看起来是这样的:# - * - 编码:UTF-8 - * -

#

# z = z ^ 2 + c

#

# by oldj

# http://oldj.net/

#

# last update: 2010-10-22 22:02:05

#

import time

import Image, ImageDraw

g_size = (40, 30) # 图形最终尺寸

g_max_iteration = 256 # 最大迭代次数

g_bailout = 4 # 最大域

g_zoom = 2.5 / g_size[0] # 缩放参数

g_offset = (-g_size[0] * 0.25, 0) # 偏移量

g_HSL = (210, 80, 50) # HSL色彩基调

def draw(antialias = True):

zi = 2 if antialias else 1 # antialias: 抗锯齿 size = [i * zi

size = [i * zi for i in g_size]

zoom = g_zoom / zi

offset = [i * zi for i in g_offset]

bailout = g_bailout * zi

img = Image.new("RGB", size, 0xffffff)

dr = ImageDraw.Draw(img)

print "painting Mandelbrot Set.."

for xy, color in getPoints(size, offset, zoom):

dr.point(xy, fill = color)

print "100% "

del dr

if antialias:

img = img.resize(g_size, Image.ANTIALIAS)

img.show()

img.save("mandelbrot_set_%dx%d.png" % g_size)

def getPoints(size, offset, zoom, ti = 0, tstep = 1):

"生成需要绘制的点的坐标及颜色"

def getRepeats(c):

z = c

repeats = 0

while abs(z) < g_bailout and repeats < g_max_iteration:

z = z * z + c

repeats += 1

return repeats

def getColor(r):

color = "hsl(0, 0%, 0%)"

if r < g_max_iteration:

v = 1.0 * r / g_max_iteration

h = ch * (1 - v)

s = cs

l = cl * (1 + v)

color = "hsl(%d, %d%%, %d%%)" % (h, s, l)

return color

xs, ys = size

xw, yh = xs / 2, ys / 2

xo, yo = offset

ch, cs, cl = g_HSL

progress = 0

for iy in xrange(ys):

p = iy * 100 / ys

if iy % 10 == 0 and p != progress:

print ("%d%%..." % p) # 显示进度

progress = p

for ix in xrange(ti, xs, tstep):

x = (ix - xw + xo) * zoom

y = (iy - yh + yo) * zoom

c = complex(x, y)

r = getRepeats(c)

yield (ix, iy), getColor(r)

def main():

t0 = time.time()

draw()

t = time.time() - t0

print "%dm%.3fs" % (t / 60, t % 60)

if __name__ == "__main__":

admin其中的前八行设置图形的最终大小,如果你想生成的图形较大或较小的数字,您可以更改的参数。第9行是迭代的最大数目,该参数的更高的值可以是更多图像细节,当然,成本是需要更多的计算时间。此外,功能的getColor47至55行定义每个点生成规则的颜色,你可以修改规则的颜色在这里,吸引更多的Mandelbrot集不同的颜色。以下是根据不同的参数和颜色规则的程序产生几个其它副图像。修改上面的代码,就容易产生更多的详细的图片。但是,如果你不想自己做,你也可以尝试这个xaos的软件,通过它可以是本地Mandelbrot集放大了许多倍。当然,你会发现,无论多少放大,Mandelbrot集,总是有无尽的变化和精致的细节。更多Python教程或Python视频教程可登陆课课家在线学习平台进行查询观看!

赞(21)

踩(0)

分享到:

python画代码-Python教程_Python画Mandelbrot集 代码相关推荐

  1. python使用mysql实例教程_Python操作Mysql实例代码教程在线版(查询手册)_python

    实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...

  2. python使用mysql实例教程_Python操作Mysql实例代码教程(查询手册)

    本文介绍了Python操作MYSQL.执行SQL语句.获取结果集.遍历结果集.取得某个字段.获取表字段名.将图片插入数据库.执行事务等各种代码实例和详细介绍,代码居多,是一桌丰盛唯美的代码大餐. 实例 ...

  3. python截图保存到内存卡_Python画月饼,云上过中秋,天池Python入门案例系列赛开启...

    阿里云天池推出了一个Python入门案例系列教程,在此之前他们还推出了一个Python基础训练营. 在天池龙珠计划Python训练营中,天池给学习者详细的介绍了Python的基础和进阶知识,根据学习者 ...

  4. python画中秋的月亮_Python画月饼,云上过中秋,天池Python入门案例系列赛开启

    原标题:Python画月饼,云上过中秋,天池Python入门案例系列赛开启 阿里云天池推出了一个Python入门案例系列教程,在此之前他们还推出了一个Python基础训练营. 在天池龙珠计划Pytho ...

  5. python画k线图_python画k线图

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! import datetime import pandas_datareader ...

  6. python画图库哪个好_python画图库

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我默默的用python画了下面这张图. 依稀记得女同事看了之后,立刻转身离去,并 ...

  7. python绘制分形图形教程_Python教程之绘制Mandelbrot集合

    原标题:Python教程之绘制Mandelbrot集合 一. 分形与混沌 自然界的很多事物,如树木.云彩.山脉.雪花.海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性: 有着十分精 ...

  8. python编译器写代码如何换行_python怎么换行写代码

    python怎么换行写代码? Windows换行符是'\r\n', Unix/Linux的换行符为'\n', Mac的换行符为'\r', 在python中,对换行符进行了统一处理,定义为'\n. 推荐 ...

  9. python爬虫基础项目教程_Python爬虫入门项目

    Python是什么 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 创始人Guido van Ros ...

最新文章

  1. AI大师张钹领衔,清华AI研究院推出知识计算开放平台
  2. 中国3G标准开始欧洲征程 中兴通讯先拔头筹
  3. Mac 技术篇-查看python安装位置,查看java安装位置
  4. 别再说PHP已死了,它活得好着呢
  5. 利用 GregorianCalendar 制作当前月的月历
  6. shell 删除了hdfs 文件,在HDFS上删除超过10天的文件
  7. 技巧:在 C/C++中如何构造通用的对象链表
  8. UIView常见方法总结
  9. excel表格不够怎么添加_excel怎么添加筛选
  10. Apache Flink 在汽车之家的应用与实践
  11. jmap命令的实现原理解析
  12. 中级php工程师书籍,中级PHP工程师
  13. nodejs与php通信,使用DNode实现php和nodejs之间通信的简单实例
  14. 转载--上下标等特殊符号的输入方法
  15. 我的世界服务器权限组权限修改器,我的世界op权限组指令是什么 op权限组指令汇总...
  16. python自动刷网课_基于python和selenium的刷网课的代码。
  17. 如何在IDM官网安装IDM谷歌插件?
  18. 计算机2.0培训心得,信息2.0培训心得体会
  19. OLS最小二乘法回归模型
  20. hp服务器装2012系统还原,用HP GEN8+WIN2012+Hyper V+黑群晖5.2组建家庭NAS中心 篇四:WIN 2012 安装 存储池调试及修复...

热门文章

  1. Centos目录及其常用处理命令
  2. ES 断路器——本质上保护OOM提前抛出异常而已
  3. golang LMDB入门例子——尼玛,LMDB的文档真的是太少了
  4. scrapy 分布式爬虫- RedisSpider
  5. 【Clique Problem】
  6. css中单位em和rem
  7. Photoshop 融合属性 Unity Shader
  8. Bootstrap系列 -- 28. 下拉菜单状态
  9. [hdu5266]区间LCA
  10. Exception in thread main java.lang.ClassNotFoundException: com.mysql.jdbc.Driver