2011-11-27 175 views
1

我读这样的:http://www.gameprogrammer.com/fractal.html#diamond如何实现钻石平方算法?

它说:

这是出发点的反复细分程序, 这是两个步骤:

钻石步:取四个点的平方,在两个对角线相交的平方中点处生成一个随机值。中点值是通过对四个角值进行平均计算得出的,加上 随机数。当您在网格中排列多个 方块时,这会为您提供钻石。

方形步:取四个菱形点,在菱形中心生成一个随机值。通过对拐角值取平均值来计算中点 值,再加上与用于钻石步骤相同范围内的随机数 。这再次给你方块 。

我不明白这一点。每个方形的中点如何制作钻石?如何把每个钻石的中点做成方形?

有人可以提供语言不可知的代码如何做到这一点?

编辑:

第1步:您有一个网格,使四角均匀高度:

* ┬ ┬ ┬ * 
├ ┼ ┼ ┼ ┤ 
├ ┼ ┼ ┼ ┤ 
├ ┼ ┼ ┼ ┤ 
* ┴ ┴ ┴ * 

第2步:你把方形的中点,并将其设置为平均所有的4角加随机值:

* ┬ ┬ ┬ * 
├ ┼ ┼ ┼ ┤ 
├ ┼ * ┼ ┤ 
├ ┼ ┼ ┼ ┤ 
* ┴ ┴ ┴ * 

现在是什么?我没有在任何地方看到钻石

+0

初始迭代有些退化。如果您在该链接中查看步骤c-> d-> e,应该会更清楚。 –

+2

只有当你有多个方格排列成网格时,才会形成钻石。当你忘记随机扰动离开方格的中心点时,你的钻石就会出现如下情况:如果你的第一个方格A在左边顶点Atl,Atr,Abl,Abr和中点Ac,你的第二个方形B在顶点Btr,Btl,Bbr,Bbl和中心Bc的右边,那么你的钻石将有顶点Ac,Atr = Btl,Bc,Bbl = Abr。小字母代表t-top,b-bottom,l-left,r-right,c-center。 –

回答

2

将两个方块放在一起:“当网格中有多个方块时,这会给你钻石。”在广场上方/下方相同。

平方步骤会创建一组新的正方形,从第一个偏移量开始,由钻石中点定义的顶点。

+0

哦,那有点合理。 –

+2

@RazorStorm更容易在方格纸上画出整个东西。你可以玩的小游戏 –

+1

哦,这也解释了这个链接意味着递归实现没有提供足够的关于钻石步骤的信息 –