Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Lua中生成瓷砖柏林噪声?_Lua_Noise_Love2d - Fatal编程技术网

如何在Lua中生成瓷砖柏林噪声?

如何在Lua中生成瓷砖柏林噪声?,lua,noise,love2d,Lua,Noise,Love2d,目前我所拥有的只是一堆乱七八糟的代码: 这是不可贴的,也不漂亮(你必须相信我的话,因为我不能发布它的声誉) 我还发现了以下噪声示例代码: 但我不能使用它,因为我不知道Python或者它如何转换为lua。有什么想法吗 编辑:为了澄清这一点,它需要能够在X&Y轴上环绕并触摸自身以下是问题中发布的Python代码,翻译成Lua。它会生成平铺噪声: ——创建256个随机数字 局部perm={} 对于i=1256do 表.insert(perm,math.random(#perm+1),i) 结束 --重

目前我所拥有的只是一堆乱七八糟的代码:

这是不可贴的,也不漂亮(你必须相信我的话,因为我不能发布它的声誉)

我还发现了以下噪声示例代码:

但我不能使用它,因为我不知道Python或者它如何转换为lua。有什么想法吗


编辑:为了澄清这一点,它需要能够在X&Y轴上环绕并触摸自身

以下是问题中发布的Python代码,翻译成Lua。它会生成平铺噪声:

——创建256个随机数字
局部perm={}
对于i=1256do
表.insert(perm,math.random(#perm+1),i)
结束
--重复这个列表
对于i=1256do
perm[i+256]=perm[i]
结束
--生成256个方向
局部dirs={}
对于a=0,255 do
表.insert(dirs,{math.cos(a*2.0*math.pi/256),
math.sin(a*2.0*math.pi/256)})
结束
局部函数噪声(x、y、per)
局部函数surflet(网格x,网格y)
本地dist_x,dist_y=math.abs(x-grid_x),math.abs(y-grid_y)
局部多边形=1-6*dist\ux^5+15*dist\ux^4-10*dist\ux^3
局部多边形y=1-6*距离y^5+15*距离y^4-10*距离y^3
局部散列=perm[(perm[(数学地板(网格x)%per)+1]+数学地板(网格y)%per)+1]
局部梯度=(x-网格×x)*dirs[散列][1]+(y-网格×y)*dirs[散列][2]
返回多边形x*多边形y*渐变
结束
局部整数x,整数y=math.floor(x),math.floor(y)
返回surflet(int_x+0,int_y+0)+surflet(int_x+1,int_y+0)+
surflet(int_x+0,int_y+1)+surflet(int_x+1,int_y+1)
结束
局部函数fBm(x,y,per,octs)
本地值=0
对于o=0,octs-1 do
val=val+(0.5^o*噪声(x*2^o,y*2^o,每*2^o))
结束
返回值
结束
本地大小,频率,octs=128,1/32.0,5
--生成128x128个数据点
本地数据={}
对于y=1,大小为
本地行={}
对于x=1,大小为
表.插入(线,数学层((fBm(x*freq,y*freq,数学层(尺寸*freq),OCT)+1)*128))
结束
表.插入(数据,行)
结束
--为了演示,让我们生成一个PGM文件,
--很容易转换成PNG。
本地输出={“P2”、“128”、“255”}
对于y=1,大小为
本地行={}
对于x=1,大小为
表.插入(第行,tostring(数据[y][x]))
结束
表.insert(out,表.concat(第“”行)
结束
本地pgm_数据=table.concat(out,“\n”)。。“\n”
--现在让我们使用ImageMagick将其转换为PNG。
--我们将尝试以本地方式进行加载https://github.com/leafo/magick
--要使用它,请使用'luarocks install magick'安装它`
--并使用“luajit”运行此脚本。
本地正常,magick=pcall(需要“magick”)
如果可以的话
本地im=magick.load\u image\u from\u blob(pgm\u数据)
im:set_格式(“pgm”)
im:write(“noise.png”)
其他的
--如果我们没有这个库,我们就从命令行调用ImageMagick。
本地fd=io.open(“noise.pgm”,“w”)
fd:写入(pgm_数据)
fd:close()
执行(“convert noise.pgm noise.png”)
结束

您的问题到底是什么?什么有效,什么无效?我们不会设置Love2D环境并运行您的代码只是为了找出它的问题。我的函数不会产生令人满意的噪声,我也没有找到任何关于生成2d噪声的方法,这些2d噪声可以以任何便携式或可读格式平铺。如果你能为我提供一个关于这个主题的学习资源,那就太棒了。(这里有一个指向我的函数的链接:)