Diamond-Square算法:如何确定运行钻石函数和正方形函数所需的瓷砖?
2018-8-15 21:51:4
收藏:0
阅读:107
评论:1
我正在开发一款钻石-正方形高度图生成器,并且在某个特定部分已经卡了一段时间了。
我无法确定我需要在哪些瓷砖上运行square()函数,以及我需要在哪些瓷砖上运行diamond()函数。
我查看了此指南:http://www.playfuljs.com/realistic-terrain-in-130-lines/ 并且我以他们使用的for循环为例,但它似乎完全没用。
答案的首选语言是Lua(或只需指出正确的方向)。我只需要有人告诉我如何获得适用于钻石和正方形函数的for循环。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

高度约束
local min_height = 10 local max_height = 100
网格
local K = 4 local M = 2^K # 场地是循环整数网格 0 <= x,y < M (x=M 即为 x=0) local heights = {} # min_height <= heights[x][y] <= max_height for x = 0, M-1 do heights[x] = {} end
设置四个角的高度(由于循环场地,所有 4 个角都是同一点)
heights[0][0] = (min_height + max_height) / 2
local delta_height = (max_height - min_height) * 0.264 local side = M local sqrt2 = 2^0.5
repeat local dbl_side = side side = side/2
正方形
for x = side, M, dbl_side do for y = side, M, dbl_side do local sum = heights[(x-side)%M][(y-side)%M] + heights[(x-side)%M][(y+side)%M] + heights[(x+side)%M][(y-side)%M] + heights[(x+side)%M][(y+side)%M] heights[x][y] = sum/4 + (2*math.random()-1) * delta_height end end delta_height = delta_height / sqrt2
菱形
for x = 0, M-1, side do for y = (x+side) % dbl_side, M-1, dbl_side do local sum = heights[(x-side)%M][y] + heights[x][(y-side)%M] + heights[x][(y+side)%M] + heights[(x+side)%M][y] heights[x][y] = sum/4 + (2*math.random()-1) * delta_height end end delta_height = delta_height / sqrt2 until side == 1
绘制场地
for x = 0, M-1 do local s = '' for y = 0, M-1 do s = s..' '..tostring(math.floor(heights[x][y])) end print(s) end