标题: 元胞自动机(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