天空中的一个模式分享 http://blog.sciencenet.cn/u/jiangxun 本博将以数学杂文为主,科技杂文为辅,其它杂文为补。

博文

这棵树够数学的 精选

已有 10922 次阅读 2013-4-12 11:24 |个人分类:够数学|系统分类:图片百科| 数学, 够数学, 勾股定理

作者:蒋迅


imgur.com

这棵树叫“毕达哥拉斯树”(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)




https://blog.sciencenet.cn/blog-420554-679481.html

上一篇:【数学都知道】2013年4月2日 (科学网博客版)
下一篇:水熊虫和太空辐射
收藏 IP: 71.135.105.*| 热度|

38 鲍海飞 马建敏 李汝资 聂春笑 石富强 梁进 刘洪 高建国 戴德昌 徐大彬 张启峰 王伟华 苏金亚 罗春元 孙跃方 廖晓琳 李郎平 王磊 杨正瓴 陈冬生 徐晓 赵斌 李天成 林涛 庄世宇 武夷山 高明亮 鲍得海 王伟 朱晓刚 杜江平 白图格吉扎布 guoyanghuawu flyingfishguo crossludo songshu123 roycechen zzjtcm

该博文允许注册用户评论 请点击登录 评论 (37 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-23 15:50

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部