我读这样的:http://www.gameprogrammer.com/fractal.html#diamond如何实现钻石平方算法?
它说:
这是出发点的反复细分程序, 这是两个步骤:
钻石步:取四个点的平方,在两个对角线相交的平方中点处生成一个随机值。中点值是通过对四个角值进行平均计算得出的,加上 随机数。当您在网格中排列多个 方块时,这会为您提供钻石。
方形步:取四个菱形点,在菱形中心生成一个随机值。通过对拐角值取平均值来计算中点 值,再加上与用于钻石步骤相同范围内的随机数 。这再次给你方块 。
我不明白这一点。每个方形的中点如何制作钻石?如何把每个钻石的中点做成方形?
有人可以提供语言不可知的代码如何做到这一点?
编辑:
第1步:您有一个网格,使四角均匀高度:
* ┬ ┬ ┬ *
├ ┼ ┼ ┼ ┤
├ ┼ ┼ ┼ ┤
├ ┼ ┼ ┼ ┤
* ┴ ┴ ┴ *
第2步:你把方形的中点,并将其设置为平均所有的4角加随机值:
* ┬ ┬ ┬ *
├ ┼ ┼ ┼ ┤
├ ┼ * ┼ ┤
├ ┼ ┼ ┼ ┤
* ┴ ┴ ┴ *
现在是什么?我没有在任何地方看到钻石
初始迭代有些退化。如果您在该链接中查看步骤c-> d-> e,应该会更清楚。 –
只有当你有多个方格排列成网格时,才会形成钻石。当你忘记随机扰动离开方格的中心点时,你的钻石就会出现如下情况:如果你的第一个方格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。 –