用Python代码来绘制彭罗斯点阵的教程


Posted in Python onApril 03, 2015

这里是显示彭罗斯点阵的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立体效应渲染的彭罗斯点阵。这里是该图像的一部分(点击放大)。

用Python代码来绘制彭罗斯点阵的教程

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

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

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

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

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

Python 相关文章推荐
使用python实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
Python三元运算实现方法
Jan 12 Python
详解Python中的装饰器、闭包和functools的教程
Apr 02 Python
python创建关联数组(字典)的方法
May 04 Python
详解Python map函数及Python map()函数的用法
Nov 16 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 Python
对python tkinter窗口弹出置顶的方法详解
Jun 14 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
Django模板获取field的verbose_name实例
May 19 Python
python 破解加密zip文件的密码
Apr 22 Python
Python torch.flatten()函数案例详解
Aug 30 Python
利用Python演示数型数据结构的教程
Apr 03 #Python
简洁的十分钟Python入门教程
Apr 03 #Python
初步解析Python中的yield函数的用法
Apr 03 #Python
几个提升Python运行效率的方法之间的对比
Apr 03 #Python
对于Python的Django框架使用的一些实用建议
Apr 03 #Python
《Python之禅》中对于Python编程过程中的一些建议
Apr 03 #Python
给Python初学者的一些编程技巧
Apr 03 #Python
You might like
举例详解PHP脚本的测试方法
2015/08/05 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
yii分页组件用法实例分析
2015/12/28 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
js 操作css实现代码
2009/06/11 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
[02:16]卖萌的僵尸 DOTA2神话信使飞僵小宝来袭
2014/03/24 DOTA
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
Python自定义简单图轴简单实例
2018/01/08 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
python语言中有算法吗
2020/06/16 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
Vertbaudet西班牙网上商店:婴儿服装、童装、母婴用品和儿童家具
2019/10/16 全球购物
老师给学生的表扬信
2014/01/17 职场文书
项目采购员岗位职责
2014/04/15 职场文书
大学活动总结模板
2014/07/10 职场文书
英语系本科生求职信
2014/07/15 职场文书
家长评语怎么写
2014/12/30 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python