Я пытаюсь портировать классический Perlin Noise (src: http://mrl.nyu.edu/~perlin/doc/oscar.html#noise) в JavaScript — для научных целей. Не знаю почему, но мой код генерирует периодический шаблон вместо случайного.
Вы можете найти мой полный код с примером, нарисованным на холсте здесь (урезанным до одного измерения): http://jsfiddle.net/YL77D/
Я думаю, что проблема может быть найдена в функции "noise1":
sx = s_curve(rx0);
u = rx0 * g1[ p[ bx0 ] ];
v = rx1 * g1[ p[ bx1 ] ];
return lerp(sx, u, v);
Если мое семя x равно 10,1, 10,2, 10,3 и т. д., я думаю, что u и v должны быть одним и тем же числом (u должно быть основано на 10, а v должно быть основано на 11, поэтому sx находится где-то посередине). Я прав? Но в моем коде u и v всегда разные.
Любые идеи? Большое тебе спасибо.