不使用二进制运算符来创建噪声函数?
2011-7-15 15:37:19
收藏:0
阅读:100
评论:4
有没有可能不使用任何二进制运算符来生成伪随机数?由于这是一个三维地图,我正试图将其作为X和Y的函数,但希望在其中包含一个randomseed,这样每次生成的地图就不会完全相同。我知道可以使用二进制运算符制作这样的噪声函数:
double PerlinNoise::Noise(int x, int y) const
{
int n = x + y * 57;
n = (n << 13) ^ n;
int t = (n * (n * n * 15731 + 789221) + 1376312589) & 0x7fffffff;
return 1.0 - double(t) * 0.931322574615478515625e-9;/// 1073741824.0);
}
但由于我正在使用lua而不是C ++,我不能使用任何二进制运算符。我尝试了很多不同的事情,但它们没有任何用。请帮帮我?
原文链接 https://stackoverflow.com/questions/6687856
点赞
stackoverflow用户431350
这可能会非常慢,但是我相信你可以通过除法和乘法模拟这些。
2011-07-23 22:24:10
stackoverflow用户400277
如果我没记错的话,Matt Zucker 的 Perlin 噪声常见问题解答 仅使用算术运算符来描述/实现它。它仅提到了位运算符作为一种优化技巧。
你应该用相同的语言/运行时实现两种方式并测试它们,以了解速度差异。
(原文格式已保留)
2011-07-26 10:18:24
stackoverflow用户527574
在上述例程中,没有任何不能轻松转换为算术运算符的位运算符。
<< 13 变成了 * 8192
& 0x7FFFFFFF 变成了 2^31 取模。
只要不会有溢出的问题,那么这应该就是你所需要的。
2011-07-26 20:37:44
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在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 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
对于位运算符(我猜你指的是“二进制”),可以查看 位运算符 Wiki 页面,其中包含了一些可以使用的模块,如 Lua BitOp 和 bitlib。
如果你不想自己实现它,可以查看模块 lua-noise,其中包含了一个 Perlin noise 的实现。请注意,这是一个正在进行中的 C 模块。