EDIT:我一直在调整Simplex噪声构造函数上的滑块。我使用了更柔和的浮点数,并且看到了条数的减少。可能的解决方案?
{ frequency: 0.001, amplitude: 0.010, persistence: 0.50, octaves: 10 }
我正在使用单纯形噪声来生成更好的伪随机噪声。我正在尝试创建一个基本的地图生成器,我希望使用生成的Simplex噪声来关联预定义的纹理数组。我正在使用从joshforisha解释的算法来选择缩放到数组长度的Simplex数。
我在这里创建了一个简化版本。在得到它之前,您可能需要刷新代码几次,但是您应该看到重复的"非Simplex"样式的行标点符号出现在Simplex噪声中。
我对这种情况的理解是,返回的随机数没有被映射到数组的长度,或者它跳过了太多的数字,但我不确定。
下面是如何从数组中获得噪声选择的。为了使本例尽可能简短,我省略了对其他已定义代码的引用。
var noiseGen = new FastSimplexNoise({
/** use simplex noise constructor **/
amplitude: 0.015,
frequency: 0.015,
octaves: 3,
max: text.length /** set reference to length of textures **/,
min: 0
});
/** iterate over canvas width **/
for (var i = 0; i < width; i++) {
/** iterate over canvas height **/
for (var j = 0; j < height; j++) {
/** create noise point **/
var n = noiseGen.in2D(i, j);
/** make noise a whole number for use as index look up **/
var h = parseInt(n);
/** get texture from array **/
var t = text[h];
/** paint **/
ctx.fillStyle = t.hexidec;
ctx.fillRect(i * scale, j * scale, scale, scale);
}
}
回答我自己的问题。我想我的噪声算法出了点问题。我一直在调整正方形的投影和分布方式,似乎这个问题已经解决了。感谢大家抽出时间来思考这个问题。