绘制并得到 OpenSimplexNoise 结果
Draw and get OpenSimplexNoise result
我想用 OpenSimplexNoise 生成随机地形。首先,我只想得到一个结果并将其绘制到 window.
我现在的问题是:我怎样才能得到 OpenSimplexNoise 的正确输出(因为有很多方法,我只是不知道哪个是正确的)以及如何得出这个结果。
它应该是这样的:
public double[][] generateMap(long seed, int width, int height) {
double[][] map = new double[width][height];
// start generating things here, just how?
OpenSimplexNoise simplex = new OpenSimplexNoise(seed);
return map;
}
public void drawMap(double[][] map, Graphics g) {
for(int x = 0; x < map.length; x++) {
for(int y = 0; y < map[0].length; y++) {
Color color = new Color(); // how to get the color here?
}
}
}
这是我得到的当前代码。
这里是 OpenSimplexNoise 的 link 供任何需要它的人使用:
https://gist.github.com/KdotJPG/b1270127455a94ac5d19
实际上只有 3 种 public 方法 - 一种用于 2D、3D 和 4D 噪声。
由于您正在为 map 填充 2D array,请使用 2D noise eval 方法,
像这样:
for(int x=0; x<width; x++){
for(int y=0<y<height; y++){
map[x][y] = simplex.eval(x, y);
}
}
稍后,您可以按如下方式从贴图值生成颜色:
Color color = Color.color(map[x][y], ma[x][y], map[x][y]);
作者在OpenSimplexNoiseTest
中也提供了示例使用代码;他正在使用 3D eval 方法,但始终将 z 坐标保持在零。我猜示例代码是在他添加 2D 和 4D 实现之前编写的。无论如何,它仍然有效,但它可能比直接使用 2D 慢一点。
我想用 OpenSimplexNoise 生成随机地形。首先,我只想得到一个结果并将其绘制到 window.
我现在的问题是:我怎样才能得到 OpenSimplexNoise 的正确输出(因为有很多方法,我只是不知道哪个是正确的)以及如何得出这个结果。
它应该是这样的:
public double[][] generateMap(long seed, int width, int height) {
double[][] map = new double[width][height];
// start generating things here, just how?
OpenSimplexNoise simplex = new OpenSimplexNoise(seed);
return map;
}
public void drawMap(double[][] map, Graphics g) {
for(int x = 0; x < map.length; x++) {
for(int y = 0; y < map[0].length; y++) {
Color color = new Color(); // how to get the color here?
}
}
}
这是我得到的当前代码。
这里是 OpenSimplexNoise 的 link 供任何需要它的人使用: https://gist.github.com/KdotJPG/b1270127455a94ac5d19
实际上只有 3 种 public 方法 - 一种用于 2D、3D 和 4D 噪声。 由于您正在为 map 填充 2D array,请使用 2D noise eval 方法, 像这样:
for(int x=0; x<width; x++){
for(int y=0<y<height; y++){
map[x][y] = simplex.eval(x, y);
}
}
稍后,您可以按如下方式从贴图值生成颜色:
Color color = Color.color(map[x][y], ma[x][y], map[x][y]);
作者在OpenSimplexNoiseTest
中也提供了示例使用代码;他正在使用 3D eval 方法,但始终将 z 坐标保持在零。我猜示例代码是在他添加 2D 和 4D 实现之前编写的。无论如何,它仍然有效,但它可能比直接使用 2D 慢一点。