NCF参数化建筑论坛

标题: 两种分形树:递归和循环 [打印本页]

作者: gaoyi2006    时间: 2011-5-4 02:33
标题: 两种分形树:递归和循环
本帖最后由 gaoyi2006 于 2011-5-4 19:10 编辑

昨天看到教程关于递归实现分形几何的部分,对通过For......Next循环实现分形的方式很感兴趣,
但是教程里未提供,自己尝试做了一下,请大家指正。目前还有缺陷,不是所有树枝都一直分形下去。
[attach]17634[/attach]

左边一棵是递归树,右边一棵是迭代树
程序关键部分:
For i=0 To 9
  For j=0 To 9
   endpt(i,j)=rhino.CurveEndPoint(Branch(i,j))
   startpt(i,j)=rhino.curvestartpoint(branch(i,j))
   vet(i,j)=rhino.VectorCreate(endpt(i,j), startpt(i,j))  
   branch(i,j+1)=rhino.AddLine(endpt(i,j),rhino.VectorAdd(endpt(i,j), rhino.vectorscale(rhino.VectorRotate(vet(i,j), -branchang, array(0,0,1)), eachlength)))
   branch(i+1,j)=rhino.AddLine(endpt(i,j),rhino.VectorAdd(endpt(i,j), rhino.vectorscale(rhino.VectorRotate(vet(i,j), branchang, array(0,0,1)), eachlength)))
  Next
Next

主要是通过i+1标识逆时针旋转,j+1标识顺时针旋转,但这样当i=j时,会冲掉一个数据,我用反向再运行一次使整棵树看起来更完整些,但这样会有重叠的线。想起以前用过rabbit貌似也有类似的问题。不知大牛们对此问题如何解决,请指教。
顺便发几张按照教程做的分形几何效果图
[attach]17635[/attach]
[attach]17636[/attach]

递归树的编程文件因版权原因不提供
作者: 不懂    时间: 2011-5-4 08:44
好东西来学习
作者: ping88    时间: 2011-5-4 08:50
太漂亮了哈
作者: wawa    时间: 2011-5-4 10:10
quite good!
作者: pqwpqw12345    时间: 2011-5-4 13:04
学习学习!!
作者: zhangxiang1232    时间: 2011-5-4 15:40
gs貌似很难学啊
作者: 围观帝    时间: 2011-5-4 16:12
好眼熟,前几天刚哪本书上看到过
作者: rainfish    时间: 2011-5-4 20:39
不错不错啊
作者: kebu    时间: 2011-5-4 21:16
不错啊。。。。。
作者: 岁月静好    时间: 2011-5-4 22:20
真难学  不过学出来真好
作者: zhangxiang1232    时间: 2011-5-6 18:05
太漂亮的。学习学习
作者: frank6270    时间: 2011-5-9 03:32
努力学习中!
作者: 关典为    时间: 2011-6-10 08:11
做的不错啊!赞一个
作者: yu_294    时间: 2011-6-23 09:28
赞,学习学习
作者: jinxinstc1    时间: 2011-7-8 22:31
不错 赞一个
作者: fanghe6121    时间: 2011-9-27 12:57
看来要想做出更自由的东西,一定要会脚本的呀
作者: wannlu    时间: 2011-10-21 12:53
多谢lz!! 最近正在找这个的说
作者: benchen    时间: 2011-10-21 14:06
在哪看到的这教程?
作者: liyanyanhong    时间: 2011-10-29 23:21
....................
作者: 戏水云烟    时间: 2011-11-1 13:18
看看啊~~~~~~厉害~哈哈
作者: 鹰眼黑客    时间: 2011-11-17 13:36
本帖最后由 鹰眼黑客 于 2011-11-17 13:38 编辑

其实感觉还是一个递归循环,只是披上了for next的外套。
作者: shadowhe    时间: 2011-11-19 16:21
为什么不让我下哦{:3_49:}
作者: bensonzz    时间: 2011-12-5 21:56
好东西 学习
作者: bensonzz    时间: 2011-12-5 22:15
好东西 谢谢楼主
作者: bensonzz    时间: 2011-12-5 22:15
好东西 谢谢楼主
作者: bensonzz    时间: 2011-12-5 22:16
好东西 谢谢楼主
作者: s.k.    时间: 2011-12-10 22:35
楼主给大家讲讲递归和迭代循环的区别吧,太高深了点
作者: screenaKZ    时间: 2011-12-11 15:49
一直没搞清的问题,谢谢楼主
作者: 建筑勇士    时间: 2012-1-23 18:51
这是我用PYTHON写的分形,大家可以看一下http://ncf.5d6d.com/thread-8821-1-1.html
作者: shisanlang    时间: 2012-2-3 09:30
不错!学习!
作者: MAIKANGEL    时间: 2012-3-23 12:00
来学习一下了,这两天正在研究LSYSTEM
作者: Crights    时间: 2012-4-3 23:31
分形真是无处不在
作者: 碟の_星    时间: 2012-4-6 08:21
!!!!!!!哇
作者: 默契    时间: 2012-4-9 20:23
下来看看!!
作者: metall    时间: 2012-4-23 15:45
本帖最后由 metall 于 2012-4-23 17:56 编辑

有点意思,做做玩玩
Option Explicit
Call main()
Sub main()
Dim origin_line:origin_line=Rhino.GetObject("select a line",4)
Dim arrayLines(10)
Dim lines(0)
lines(0)=origin_line
arrayLines(0)=lines
Dim m
Dim j
For j=0 To 9
m=2^j-1
arraylines(j+1)=explode(arrayLines(j),m)
Next
End Sub
Function explode(lines,i)
  Dim startpt
  Dim endpt
  Dim line
  Dim m:m=2*i+1
  ReDim k(m)
  Dim vec
  Dim j:j=-1
  For Each line In lines
    startpt=Rhino.curvestartpoint(line)
    endpt=Rhino.curveendpoint(line)
    vec=Rhino.VectorCreate(endpt, startpt)
    j=j+1
    k(j)= Rhino.AddLine(endpt,Rhino.VectorAdd(endpt, Rhino.vectorscale(Rhino.VectorRotate(vec, -45, Array(0,0,1)), 0.6)))
    j=j+1
    k(j)= Rhino.AddLine(endpt,Rhino.VectorAdd(endpt, Rhino.vectorscale(Rhino.VectorRotate(vec, 45, Array(0,0,1)), 0.6)))
  Next
  explode=k  
End Function
作者: 64h8s    时间: 2012-4-29 06:09
看来一定要好好学习Rhinoscript......
作者: sjing258    时间: 2012-5-15 11:07
good~学习了~
作者: sjing258    时间: 2012-5-15 11:07
good~谢谢楼主,
学习了~哈哈
作者: lancer    时间: 2012-5-16 13:14
权限不够啊= =……
作者: lancer    时间: 2012-5-16 13:14
权限不够啊= =……
作者: lancer    时间: 2012-5-16 13:15
权限不够啊……
作者: guihuashizyl    时间: 2012-5-16 14:41
表示权限不够
作者: 鹰眼黑客    时间: 2012-5-16 16:56
你做得很精彩,找了好久的循环。 36# metall
作者: liqianno1    时间: 2012-12-29 12:40
初学者向楼主学习~
作者: 江风渔火    时间: 2013-1-4 16:07
树 还是蛮有意思的。。。
作者: 夜第七章    时间: 2013-1-31 20:03
最近在学rhinoscript,下来学习一下~
作者: 夜第七章    时间: 2013-1-31 20:04
很厉害的样子啊,我也要加油学习~
作者: dongweijia    时间: 2014-4-19 13:04
楼主可以晒下全部的编程么




欢迎光临 NCF参数化建筑论坛 (http://ncf-china.com/) Powered by Discuz! X3.2