gpt4 book ai didi

algorithm - Minicraft 中使用的这种采样算法有名称吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:33:36 26 4
gpt4 key购买 nike

对于 Ludum Dare 22,Notch 在 48 小时内编写了一款名为 Minicraft 的游戏。这就像一个 2D 的我的世界。

无论如何,源是可用的(这里:http://www.ludumdare.com/compo/ludum-dare-22/?action=preview&uid=398),我正在看,因为我对地形和关卡的随机生成很感兴趣。代码中是运行核心生成的代码块,算法对我来说似乎很熟悉,但我不能给它命名。我想确切地知道它是什么,以便我可以阅读更多相关信息并了解它的工作原理。

具体代码来自levelGen.java:

    do {
int halfStep = stepSize / 2;
for (int y = 0; y < w; y += stepSize) {
for (int x = 0; x < w; x += stepSize) {
double a = sample(x, y);
double b = sample(x + stepSize, y);
double c = sample(x, y + stepSize);
double d = sample(x + stepSize, y + stepSize);

double e = (a + b + c + d) / 4.0 + (random.nextFloat() * 2 - 1) * stepSize * scale;
setSample(x + halfStep, y + halfStep, e);
}
}
for (int y = 0; y < w; y += stepSize) {
for (int x = 0; x < w; x += stepSize) {
double a = sample(x, y);
double b = sample(x + stepSize, y);
double c = sample(x, y + stepSize);
double d = sample(x + halfStep, y + halfStep);
double e = sample(x + halfStep, y - halfStep);
double f = sample(x - halfStep, y + halfStep);

double H = (a + b + d + e) / 4.0 + (random.nextFloat() * 2 - 1) * stepSize * scale * 0.5;
double g = (a + c + d + f) / 4.0 + (random.nextFloat() * 2 - 1) * stepSize * scale * 0.5;
setSample(x + halfStep, y, H);
setSample(x, y + halfStep, g);
}
}
stepSize /= 2;
scale *= (scaleMod + 0.8);
scaleMod *= 0.3;
} while (stepSize > 1);

那两个 for 循环正在运行某种采样算法,我只想知道这是否是已知的命名算法,或者 notch 是否只是推出了自己的算法。

最佳答案

这看起来像 diamond-square algorithm .

关于algorithm - Minicraft 中使用的这种采样算法有名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8596125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com