这里是显示彭罗斯点阵的Python的脚本。是的,这是可以运行的有效Phython代码。

译注:彭罗斯点阵,物理学术语。上世纪70年代英国数学家彭罗斯第一次提出了这个概念,称为彭罗斯点阵(Pen-rose tiles)。

_ =\

"""if!

1:"e,V=100

0,(0j-1)**-.2;

v,S=.5/ V.real,

[(0,0,4 *e,4*e*

V)];w=1 -v"def!

E(T,A, B,C):P

,Q,R=B*w+ A*v,B*w+C

*v,A*w+B*v;retur n[(1,Q,C,A),(1,P

,Q,B),(0,Q,P,A)]*T+[(0,C ,R,B),(1,R,C,A)]*(1-T)"f

or!i!in!_[:11]:S =sum([E (*x)for !x!in!S],[])"imp

ort!cair o!as!O; s=O.Ima geSurfac

e(1,e,e) ;c=O.Con text(s); M,L,G=c.

move_to ,c.line_to,c.s et_sour

ce_rgb a"def!z(f,a) :f(-a.

imag,a. real-e-e)"for!T,A,B,C!in[i !for!i!

in!S!if!i[""";exec(reduce(lambda x,i:x.replace(chr

(i),"\n "[34-i:]), range( 35),_+"""0]]:z(M,A

);z(L,B);z (L,C); c.close_pa

th()"G (.4,.3 ,1);c.

paint( );G(.7 ,.7,1)

;c.fil l()"fo r!i!in

!range (9):"! g=1-i/

8;d=i/ 4*g;G(d,d,d, 1-g*.8

)"!def !y(f,a):z(f,a+(1+2j)*( 1j**(i

/2.))*g)"!for!T,A,B,C!in!S:y(M,C);y(L,A);y(M

,A);y(L,B)"!c.st roke()"s.write_t

o_png('pen rose.png')

""" ))

当这个程序运行时,它输出了一个1000×1000的图像文件,包含大约2212个由3D立体效应渲染的彭罗斯点阵。这里是该图像的一部分(点击放大)。

运行该脚本需要Pycairo。它只在Python它是标准的Python脚本,但我努力想把它变得更简洁,于是我又从中删减了一些。

编注:Pycairo是一组Python版本的Cario图形库。

彭罗斯点阵很酷,因为它们非周期性地覆盖了整个平面——图片的转换副本与原型从来不会一致。它们是由Roger Penrose先生通过将五边形的平面平铺在一起的一系列尝试而发明的。

与C或Perl相比,Python并不是让人迷惑的编程语言。这种比较似乎也从未发生,而且在网上也没有多少让人费解的Python的例子:你可以在官方的Python常见问题中或各种网页如这里和这里找到一些例子。在2011年的PyCon对此还有专题讨论。

我相信输出一个高分辨率的图像是第一个让人费解的Python程序。如果你知道其它的例子,可以在评论中告诉我。

本文标题: 用Python代码来绘制彭罗斯点阵的教程

本文地址: http://www.cppcns.com/jiaoben/python/122073.html

用python实现点阵屏_用Python代码来绘制彭罗斯点阵的教程相关推荐

  1. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  2. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  3. python编码尺寸_基于Python批量生成指定尺寸缩略图代码实例

    这篇文章主要介绍了基于Python批量生成指定尺寸缩略图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近我们商城上架的应用越来越丰富了. ...

  4. python网页版_经典python学习教程:20行代码打造一个微信群聊助手,解放双手

    今天的Python学习教程教大家如何用20行Python代码实现微信群聊助手,可以用来活跃群气氛,好多群主创建完群后,拉完一群人,之后就一片寂静,有个群聊助手,就可以帮忙活跃群里气氛,通过今天在自己的 ...

  5. python 多核并行计算_嫌Python太慢?并行运算Process Pools三行代码给你4倍提速!

    大数据文摘作品,转载要求见文末,作者 | Adam Geitgey,编译 | 元元.Lisa.Saint.Aileen. Python绝对是处理数据或者把重复任务自动化的绝佳编程语言.要抓取网页日志? ...

  6. python名片识别_基于Python的名片识别接口调用代码实例

    基于Python的名片识别接口调用代码实例 代码描述:基于Python的名片识别接口调用代码实例 #!/usr/bin/python # -*- coding: utf-8 -*- import js ...

  7. python 卡方分布函数_卡方检验2-python代码实现

    统计学,风控建模经常遇到卡方分箱算法ChiMerge.卡方分箱在金融信贷风控领域是逻辑回归评分卡的核心,让分箱具有统计学意义(单调性).卡方分箱在生物医药领域可以比较两种药物或两组病人是否具有显著区别 ...

  8. python修复老照片_三行python代码还原老照片,开启超清会员模式!

    原理 如果之前了解过信号处理,就会知道最直接的方法是计算图片的快速傅里叶变换,然后查看高低频分布.如果图片有少量的高频成分,那么该图片就可以被认为是模糊的.然而,区分高频量多少的具体阈值却是十分困难的 ...

  9. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

最新文章

  1. Singleton模式学习
  2. Android自定义弹窗模仿微信,Android仿微信右上角点击加号弹出PopupWindow
  3. python开发信息系统权限设置_[Python学习] Django 权限控制
  4. python redis 操作_使用Python操作redis
  5. 美国国会针对中国的网络间谍行动展开辩论
  6. 快速学习23种设计模式思想Design Patterns
  7. 某高校刚入职的青年教师工资曝光!
  8. 5加载stm32 keil_STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)
  9. mysql 2000安装教程_Win10 64位安装个人版SQL2000图文教程
  10. 课堂笔记-爬虫beautifulsoup模块
  11. 电脑程序上的计算机在哪里打开,电脑超级终端在哪里?电脑打开超级终端的方法...
  12. 怎样复制秀米html码,秀米微信图文编辑器如何复制?
  13. 2016年我国网络安全态势
  14. 运行java程序需要的工具软件的目录,运行Java程序需要的工具软件所在的目录是A.JDK的bin目录B.JDK的demo目录C.JDK的lib目录D.JDKR的j...
  15. python 大数据开发工程师_大数据系列之大数据开发工程师
  16. css直角线_css斜切角 斜边 倒角
  17. 基于Python的OpenCV+TensorFlow+Keras人脸识别实现
  18. 单元测试-xUnit
  19. 女程序员,作程序员还是作女人?
  20. 黑科技之资源搜索网站

热门文章

  1. phpspider 完整使用技巧 含代码
  2. 【electron】electron-builder-start 实现系统托盘(tray)
  3. 【积累】python3.8安装时报错0x80070003:系统找不到指定位置
  4. 小程序不引入基础组件实现weui使用(附加小程序换行显示)
  5. 送你三个珍藏已久的网页,一份迟到的情人节祝福
  6. 009 for 循环画星星
  7. fastjson android 版本,Fastjson Android版本
  8. DOM nextSibling 属性
  9. 第01篇:反射框架Reflections
  10. 老板挖个鱼塘,让用户免费钓鱼,结果所有人都惊呆了……