为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

毕达哥拉斯树与python代码

2017-09-02 2页 doc 18KB 120阅读

用户头像

is_036899

暂无简介

举报
毕达哥拉斯树与python代码毕达哥拉斯树与python代码 这棵树叫“毕达哥拉斯树”(Pythagorean Tree)。因为它是相对勾股定理而言的,我们也可以称之为“勾股树”。作者使用了Python 的“PYX package”来产生图片,然后用GIMP产生动太的GIF。下面是作者公布的一个简化了的程序: from math import acos, sin, cos, pi, sqrt from pyx import * import os def draw_layer(color): global c for square in l...
毕达哥拉斯树与python代码
毕达哥拉斯树与python代码 这棵树叫“毕达哥拉斯树”(Pythagorean Tree)。因为它是相对勾股定理而言的,我们也可以称之为“勾股树”。作者使用了Python 的“PYX package”来产生图片,然后用GIMP产生动太的GIF。下面是作者公布的一个简化了的程序: from math import acos, sin, cos, pi, sqrt from pyx import * import os def draw_layer(color): global c for square in layer: if square[1] > .0001: c.stroke(rect, [ deco.filled([color]), color, trafo.translate(square[0][0],square[0][1]) * trafo.rotate(square[2]*180/pi) * trafo.scale(square[1]) ]) def next_left(): return set( [ ((t[0]-s*sin(r), t[1]+s*cos(r)), s*ls, r+theta ) for (t,s,r) in layer ] ) def next_right(): return set( [ ((t[0]+s*(ls*cos(r+theta)-sin(r)), t[1]+s*(cos(r)+ls*sin(r+theta))), s*rs, r-phi ) for (t,s,r) in layer ] ) if __name__ == "__main__": ## INITIALIZE N = 15 # NUMBER OF LAYERS imgname = 'Ptree_7-7' # IMAGE NAME ls = .7 # LEFT BRANCH SIZE rs = .7 # RIGHT BRANCH SIZE ; ls+rs >= 1 theta = acos( (ls**2-rs**2+1) / (2*ls) ) phi = acos( (rs**2-ls**2+1) / (2*rs) ) layer = set([ ((0.0,0.0), 1.0, 0.0) ]) c = canvas.canvas() rect = path.rect(0,0,1,1) for i in xrange(N-1): draw_layer(color.cmyk.RawSienna) layer = next_left() | next_right() print 'Layer', i+1 draw_layer(color.rgb.green) c.writePDFfile(imgname)
/
本文档为【毕达哥拉斯树与python代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索