Rhino(犀牛)中国技术支持与推广中心

标题: 分形模块化探索(一个二叉树) [打印本页]

作者: yesmely    时间: 2013-9-23 15:41
标题: 分形模块化探索(一个二叉树)
本着模块化思路,按照雪花的框架:http://bbs.rhino3d.asia/thread-23244-1-1.html
稍作修改,即可。
代码如下:
  1. import rhinoscriptsyntax as rs
  2. def tree1(geo,ang,sc):
  3.     ptlist=rs.DivideCurve(geo,1,False,True)
  4.     pt0=ptlist[0]
  5.     pt1=ptlist[1]
  6.     vec=rs.VectorCreate(pt1,pt0)
  7.     ptsc=rs.VectorScale(vec,sc)
  8.     pti=pt0+ptsc
  9.     line0=rs.AddLine(pt1,pti)
  10.     left=rs.RotateObject(line0,pt1,ang,None,False)
  11.     right=rs.RotateObject(left,pt1,-2*ang,None,True)
  12.     return [left,right]
  13. def trees(geos,ang,sc):
  14.     list=[]
  15.     for x in geos:
  16.         for y in tree1(x,ang,sc):
  17.             list.append(y)
  18.     return list
  19. def tree(geo,ang,deg,sc):
  20.     if deg==0:
  21.         return geo
  22.     elif deg==1:
  23.         return tree1(geo,ang,sc)
  24.     else:
  25.         return trees(tree(geo,ang,deg-1,sc),ang,sc)
  26. geo=rs.GetObject("Select a line:")
  27. ang=rs.GetInteger("Angle=")
  28. deg=rs.GetInteger("Degree=")
  29. sc=rs.GetReal("bigger scale number=")
  30. tree(geo,ang=30,deg=5,sc=1.7)
复制代码
通过这两个小例子,能够看出第一个def是核心,只要改动这里能得到更多的形式。未完。




欢迎光临 Rhino(犀牛)中国技术支持与推广中心 (http://bbs.rhino3d.asia/) Powered by Discuz! X3.2