Симплексная шумовая ссылка на массив

РЕДАКТИРОВАТЬ: я настраивал ползунки на конструкторе шума 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 ответ

Отвечая на мой собственный вопрос здесь. Я считаю, что у меня была проблема с моим алгоритмом шума. Я настраивал, как квадраты проецируются и распределяются, и кажется, что эта проблема была исправлена. Спасибо всем, кто нашел время подумать над проблемой.

Другие вопросы по тегам