NCF参数化建筑论坛

标题: 元胞自动机(GH文件已到位) [打印本页]

作者: f(x)    时间: 2009-9-13 11:18
标题: 元胞自动机(GH文件已到位)
元胞自动机这个词最近听的实在太多了,人人都在讲这个词,skywoolf也说怎么人人都在说元胞自动机呢,今天就发一个元胞自动机的起源,康威生命游戏。 [attach]679[/attach] [attach]680[/attach] [attach]681[/attach] 就不渲染了 [attach]682[/attach] GH文件:[attach]728[/attach]
作者: skywoolf    时间: 2009-9-13 12:20
GH文件可以直接用附件上传啊,你那个不会有好几m吧?
作者: yanhui314    时间: 2009-9-13 12:47
呵呵,关键就是那两块VB呀{:3_64:} 太多法则不知道了,百度一下
作者: f(x)    时间: 2009-9-13 13:25
靠,辛辛苦苦才整出来的,管理员也不说给加精,太抠了!! 那就不发GH文件了,发代码吧!
作者: f(x)    时间: 2009-9-13 13:27
Call Main Sub Main() 'Base point of the grid will be world origin 'Define number of cells in each direction Dim intNumU: intNumu = Rhino.GetInteger ("Number of Cells in x direction",10,10, 100) Dim intNumV: intNumV = Rhino.GetInteger ("Number of Cells in y direction",10,10, 100) 'Define number of generatons Dim intGeneration: intGeneration = Rhino.GetInteger ("Number of generations",50,1, 100) 'Create 2D array of rectangles (of type string) for cells 'We will first generate all cells, then show and hide them depending on each cell state Dim arr2DCells() ReDim arr2DCells(intNumU-1, intNumV-1) 'Generate all cells Call GenerateCells(arr2DCells, intNumU, intNumV) 'Define 2D array of cells states (of type int that takes values 0 and 1) Dim arr2DStates() ReDim arr2DStates(intNumU-1, intNumV-1) 'Create the initial state by generating random distribution Call GenerateRandomState(arr2DStates,intNumU, intNumV) 'Run the Game of Life Dim i Dim arrLifeObjs() Dim arrDeadObjs() For i = 0 To intGeneration 'Print which generation we are in Rhino.Print "Generation: " & i 'CStr(i) 'Run the current generation Call NewGeneration( arr2DStates, intNumU, intNumV ) 'Generate single dimention array of alive and dead objects (to be hidden) Call ExtractLifeList( arr2DCells, arr2DStates, intNumU, intNumV, arrLifeObjs, arrDeadObjs ) 'Hide all objects Call Rhino.HideObjects( arrDeadObjs ) Call Rhino.ShowObjects( arrLifeObjs ) Call Rhino.Redraw() Call Rhino.Sleep( 500 ) Next End Sub '------------------------------------------------------------- 'Generate Calls 'Starting from world origin, create squares of 1 unit width Sub GenerateCells(arr2DCells, intNumX, intNumY) Dim i, j Dim arrV : arrV = Array(0,0,1) Dim arrCenter For i = 0 To intNumX-1 For j = 0 To intNumY-1 'Create a circle arrCenter = Array(2*i,2*j,0) 'Assign object string value To its proper location In the array of cells arr2DCells(i,j) = Rhino.AddSphere(arrCenter, 1 ) Next Next End Sub 'Generate states randomly 'States are either 0 or 1 Sub GenerateRandomState(arr2DStates, intNumX, intNumY) Dim i, j For i = 0 To intNumX-1 For j = 0 To intNumY-1 Randomize arr2DStates(i,j) =Int((1 - 0 + 1) * Rnd) + 0 Next Next End Sub 'Run a generaion in the game of life 'Edge condition periodic Sub NewGeneration( arrStates, intNumX, intNumY ) Dim i,j Dim intLCount Dim prev_i, next_i, prev_j, next_j For i = 0 To (intNumX - 1) 'First index If i = 0 Then 'Take last index prev_i = intNumX-1 Else prev_i = i-1 End If 'Last index If i = intNumX-1 Then 'Take first index next_i = 0 Else next_i = i+1 End If For j = 0 To (intNumY - 1) If j = 0 Then prev_j = intNumY - 1 Else prev_j = j - 1 End If 'Check next col If j = intNumY-1 Then next_j = 0 Else next_j = j+1 End If 'Zero the living cells count intLCount = 0 'Count number of live neighbors (8 of them) 'Check top cell intLCount = intLCount + arrStates( next_i, j ) 'Check bottom cell intLCount = intLCount + arrStates( prev_i, j ) 'Check right cell intLCount = intLCount + arrStates( i, next_j ) 'Check left cell intLCount = intLCount + arrStates( i, prev_j ) 'Check top right cell intLCount = intLCount + arrStates( next_i, next_j ) 'Check top left cell intLCount = intLCount + arrStates( next_i, prev_j ) 'Check bottom right cell intLCount = intLCount + arrStates( prev_i, next_j ) 'Check bottom left cell intLCount = intLCount + arrStates( prev_i, prev_j ) 'Check if a cell is live or dead and to ' change/maintain state based On count of live neighbors If arrStates(i,j) = 1 Then 'Live cell If intLCount < 2 Then arrStates(i,j) = 0 End If If intLCount > 3 Then arrStates(i,j) = 0 End If Else 'Dead Cell If intLCount = 3 Then arrStates(i,j) = 1 End If End If Next Next End Sub 'Extract one dimentional array of living and dead objects Sub ExtractLifeList( arr2DCells, arr2DStates, intNumX, intNumY, arrLifeObjs, arrDeadObjs ) Dim k : k=0 Dim d : d=0 Dim i, j For i = 0 To intNumX-1 For j = 0 To intNumY-1 'Check if cell is alife If arr2DStates(i,j) = 1 Then ReDim Preserve arrLifeObjs(k) arrLifeObjs( k ) = arr2DCells(i,j) k = k+1 Else ReDim Preserve arrDeadObjs(d) arrDeadObjs( d ) = arr2DCells(i,j) d = d+1 End If Next Next End Sub
作者: rwl1688    时间: 2009-9-13 21:16
你都这样了~你四级怎么还不过呢?
作者: f(x)    时间: 2009-9-13 21:39
靠你,哥也是放假的时候才开始搞的,要是早搞早就过了!
作者: Dove    时间: 2009-9-19 20:58
啥玩意啊,完全不懂,今天看那帮规划优秀作品有一个也整“自动机”说实话,我看的时候一直试图吧那些包状物拼出个图案什么的,老大,开班开班~~
作者: f(x)    时间: 2009-9-20 08:32
8# Dove 那不是包状物拼出来的图案,那是计算机根据设计者自己的规定的转换法则生成出来的,我一会儿发一个关于元胞自动机做规划的例子,你看看,或许可以明白一点。
作者: 射手明    时间: 2009-9-20 16:39
感觉这个挺有意思的...楼主能不能附上ghx文件啊!谢谢啦
作者: skywoolf    时间: 2009-9-20 16:47
10# 射手明 f(x)系统有些问题,我代他传了一下。欢迎来到NCF!
作者: 3828669    时间: 2009-9-22 15:19
f(x) 你脚步语言找什么教程学的啊?
作者: f(x)    时间: 2009-9-22 16:06
我只学过101
作者: musofan    时间: 2009-10-23 15:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: bendanxinhe    时间: 2009-11-6 11:53
呵呵···催眠书
作者: jscjdtc    时间: 2009-11-7 16:32
这贴需要更新。。。。
作者: sgrylicheng    时间: 2009-11-25 13:14
6# rwl1688 别这样。。。四级而已, 让老外来考中文四级, 有0.1%能过都算不错了
作者: gugaoyuan    时间: 2009-11-30 17:45
恩,,学习学习
作者: 1cpu11    时间: 2009-12-4 08:20
相视一笑思学隐侠
作者: powermu111    时间: 2009-12-4 14:19
得看看了~学习中~
作者: abiao1986316    时间: 2009-12-4 22:47
看不全呀~~呵呵~会努力的
作者: aiko_3at    时间: 2009-12-12 16:33
~~强大的编程~~
作者: simpson218    时间: 2009-12-13 21:59
看似简单怎么要用VB这么复杂呢?
作者: 咸鱼空间    时间: 2009-12-18 15:41
我四级也没过,但我什么时候能看东你的这些代码啊,天啊,难道我要学VB了?为了掌握参数化设计的软件,花多少时间我都愿意的
作者: 特莱嘻嘻嘻    时间: 2009-12-19 01:30
完全不懂...
作者: morphosis    时间: 2009-12-22 21:40
F(X)说一说这个东东到底怎么和实际结合的过程吧~~~~ 怎么和规划联系上的呢?{:3_62:}
作者: morphosis    时间: 2009-12-22 22:10
这个和下面这个应该是一样的概念吧,但这个是立体的哦 [attach]2698[/attach] [attach]2697[/attach] [attach]2696[/attach]
作者: 咸鱼空间    时间: 2009-12-23 15:24
这是什么东东{:3_47:}
作者: 咸鱼空间    时间: 2009-12-25 08:20
元胞自动机到底为何物啊?????
作者: 990628    时间: 2010-1-18 10:45
英语太烂,代码看不懂呀
作者: abiao111    时间: 2010-1-27 01:28
神人啊!!那本书看着就像睡觉~~
作者: abiao111    时间: 2010-1-27 01:31
海的猛的回帖 我降级了 别怨我哈
作者: 发现档案    时间: 2010-1-29 11:19
GH还解决得了,VB是最难的,怎么学呀
作者: 特莱嘻嘻嘻    时间: 2010-1-29 23:25
啊。。f(x)大哥 为什么要用一块vb 做个点阵出来呢。 为什么不直接square一下呢。。
作者: leftcold    时间: 2010-3-6 19:44
百度了一下。还是没弄明白
作者: future_space    时间: 2010-3-16 20:56
现在好东西越来越多了,,,靠灌水来哪照度有点捉襟见肘啊
作者: 552zxp64    时间: 2010-3-21 19:38
thx for sharing!
作者: tao    时间: 2010-3-23 11:05
学习了.............
作者: irving    时间: 2010-3-23 19:21
这个是最经典的一个生命模拟器了 后来还出了好多版本的模拟器 我以前在google上搜到了不少 有叫“达尔文池”的等等 很有意思的 可以设定一些基本的初始参数 模拟自然界的要素 然后就看那些用色块表示的“生命体”在环境影响下逐渐进化 还听说有更神奇的 说美国有的大学把模拟器运行了几十年 那些生命体进化了无数代 最后越来越高级
作者: 麓山小农    时间: 2010-3-23 20:54
能否提供些更重要的线索和资料
作者: cartoonlinda    时间: 2010-3-26 21:41
太多法则不知道了
作者: wangxinyu    时间: 2010-3-27 15:46
神人呀 谢谢 分享了
作者: echolhk    时间: 2010-4-12 00:33
真是好东西 歇息楼主
作者: xiaofu1986    时间: 2010-4-15 23:00
看来自己的学习能力退化太多了
作者: 密斯魂斗罗    时间: 2010-4-19 09:58
有黑客帝國的感覺
作者: alem    时间: 2010-5-9 21:46
看着迷糊..初学菜鸟..随便看看
作者: bryson    时间: 2010-7-12 12:10
牛逼的沃夫尔曼啊
作者: hzhbeck7    时间: 2010-7-12 12:46
看看,学习一下
作者: guan    时间: 2010-8-22 11:26
thanks so much
作者: mu-mulin    时间: 2010-8-25 12:39
看不懂 感觉巨难
作者: daniel88881111    时间: 2010-10-18 19:36
无聊的练习哦!
作者: sharkliang    时间: 2010-10-18 21:21
神人,厉害的VB啊
作者: mzpq01    时间: 2010-10-22 11:03
擦,我连计算机二级都没过.....
作者: 山寨熊    时间: 2010-10-22 22:54
不错不错 支持一下看看
作者: mysteriox    时间: 2010-10-23 14:53
很强,学习了
作者: tianking999    时间: 2010-10-23 15:14
怎么用呢这个东东 呵呵
作者: chenyulin015    时间: 2010-10-25 19:57
thx for sharing~
作者: avane    时间: 2010-10-26 13:06
呃 没看懂 是不是和自相似有些练习?
作者: sfwwdf    时间: 2010-11-17 19:09
元胞自动机本身源于混沌理论和耗散结构理论,很有意思的东西
作者: yangshu9    时间: 2010-11-27 15:19
完全不能理解的逻辑
作者: feiteng1984    时间: 2010-11-27 17:01
这个新版的有内镶?没见到嘞?
作者: sry    时间: 2011-5-19 21:57
学习一下。。。。。。。。。。
作者: riddle16_    时间: 2011-9-11 14:29
完全不懂。。。。。。。
作者: ihskep    时间: 2011-9-11 19:21
好厉害呀。。
作者: YayaDu    时间: 2011-9-11 21:11
谢谢楼主分享,好东西!
作者: howldyx    时间: 2011-12-15 11:01
强烈支持~~~~~最近正在研究
作者: Ying    时间: 2011-12-16 06:13
niuren !! share!!!
作者: LONECH    时间: 2011-12-16 22:52
神人啊!!那本书看着就像睡觉~~
作者: TDH    时间: 2011-12-19 12:41
没弄明白继续研究
作者: 丞丞    时间: 2012-1-30 23:07
谢谢楼主分享。。。
作者: jason    时间: 2012-1-31 00:10
收藏了。。有空好好学
作者: wuliao639    时间: 2012-3-14 00:26
eee,谢谢分享 求元胞自动机介绍
作者: cqw7256    时间: 2012-3-14 11:00
比较难懂!!!!
作者: cqw7256    时间: 2012-3-14 11:02
比较难懂!!!!!
作者: ---------------    时间: 2012-3-14 13:42
学习学习。。。。
作者: Simon    时间: 2012-3-14 14:29
第一次听说啊,开个专贴啊。
作者: cqw7256    时间: 2012-3-14 16:09
谢谢了!不能理解!!!
作者: supbanana    时间: 2012-3-18 23:00
先收下來研究研究~
作者: yinlu1320lu1320    时间: 2012-3-19 17:43
不错的分享!!!
作者: archizhang    时间: 2012-3-19 17:53
不错的分享!!!
作者: 平头老班    时间: 2012-5-4 19:47
无法下载啊
作者: Mango    时间: 2012-5-18 20:17
非常感谢!
作者: yinny    时间: 2012-5-18 21:32
代码。。。。纯顶
作者: naichunchen    时间: 2012-6-16 14:49
sfwwdf 发表于 2010-11-17 19:09
元胞自动机本身源于混沌理论和耗散结构理论,很有意思的东西

沒有看到呢...回復才可以看到嗎?
作者: dave3020    时间: 2012-6-18 16:53
sdfgaaaaaa
作者: 月之眼    时间: 2013-6-24 00:08
非常不错啊,感谢分享
作者: 多米    时间: 2016-3-23 16:44
谢谢楼主分享




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