Симплексная шумовая ссылка на массив
РЕДАКТИРОВАТЬ: я настраивал ползунки на конструкторе шума Simplex. Я использовал более мягкие числа с плавающей запятой и видел уменьшенное количество баров. Возможное решение?
{ frequency: 0.001, amplitude: 0.010, persistence: 0.50, octaves: 10 }
Я работаю с симплексным шумом, чтобы генерировать лучший псевдослучайный шум. Я пытаюсь создать базовый генератор карт и надеюсь использовать шум Simplex, сгенерированный для связи с предопределенным массивом текстур. Я использую алгоритм в интерпретации joshforisha для выбора симплексного числа, масштабированного по длине массива.
Я создал упрощенную версию здесь. Возможно, вам придется обновить код пару раз, прежде чем вы его получите, но вы должны увидеть повторяющиеся линии "не симплексного" стиля, перемежающие шум 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);
}
}
1 ответ
Отвечая на мой собственный вопрос здесь. Я считаю, что у меня была проблема с моим алгоритмом шума. Я настраивал, как квадраты проецируются и распределяются, и кажется, что эта проблема была исправлена. Спасибо всем, кто нашел время подумать над проблемой.