Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
// return a * (t - 1) + b * t; можно переписать с одним умножением (раскрыть скобки, взять в другие скобки):
return a + (b - a) * t;
return (b + a) * t - a;
Я не буду описывать достоинства шума Перлина и область его применения, а постараюсь объяснить как он реализован.

result = Noise(x, y) + Noise((x - y)*Phi, (y + x)*Phi) - 1
где Phi = 0.70710678118
получаются округлением в сторону 0 (функция floor).floor округляет в меньшую сторону, а не в сторону нуля.
Как справедливо заметили в комментариях к публикации, речь идёт вовсе не о шуме Перлина. Возможно, автор перевода и сам был не в курсе.
если сравнить картинки
vs 


как миниму не корректное и взято явно для «показательной непригодности варианта слева», однако если взять первую октаву другого размера например:
то различие не такое уж заметное.

Кроме того, назвав «обычным шумом из той самой статьи» одну октаву со сглаживанием, выА потому что вы тоже путаете шум Перлина и фрактальный шум. Когда шум Перлина используют в фрактальном шуме — то шум Перлина берут за одну октаву. Поэтому сравнение корректное.
видимо не дочитали или разнося в пух и прах не увидели что шумом названо нечто другое:
Поправьте, если не прав: псевдослучайные числа — это псевдослучайные вектора кто бы мог подумать в одномерном пространствеВы не правы. Для двумерного шума Перлина нужны именно двумерные вектора. Иначе это будет не шум Перлина.
и возможно взяты для упрощения понимания (что задумал автор можно только догадываться).
Как итог: «та самая статья», фу какая мерзкая, была написана переведена из академического интереса, и как верно замечено в комментариях, код не достаточно эффективен, но при этом даёт представление как сгенерировать некий шум, который кто то назвал шумом перлина, однако чрезвычайно на него похож когда это надо и не похож когда это удобно О_о.Все верно. В интернетах часто путают шум Перлина с фрактальным шумом (от обычного шума). В этом нет вины переводчика, переводчик переводил статью, и сделал это неплохо.
И кстати «фрактальный шум на базе Перлина»(из комментария выше), ну очень похож на то что названо шумом перлина в «той самой статье», даже больше чем у вас чего бы О_о.У автора статьи в примерах не фрактальный шум, а именно шум перлина. Само собой он визуально различается. Еще раз, не путайте фрактальный шум, шум перлина, и просто нормальный шум.
Для двумерного шума Перлина нужны именно двумерные вектора
1. В узлах сетки — псевдослучайные вектора (двухмерные для двухмерного шума, трехмерные для трехмерного и так далее), а не псевдослучайные числа.
и сделал это неплохо
Опять же, я не упоминал двумерный шум перлина.Ну мы же картинки двумерные сравниваем или где?
теперь по существу:Ну вы же фрактальный шум считали шумом Перлина комментом выше:
речь про сравнение, сравните размерность сравниваемого в статье
Кроме того, назвав «обычным шумом из той самой статьи» одну октаву со сглаживанием, вы
видимо не дочитали или разнося в пух и прах не увидели что шумом названо нечто другое: (и тут картинка фрактального шума)
чем в данном описании псевдослучайные числа отличаются от одномерных векторов, раз уж упоминаются более чем двумерные или принято только в одну сторону размерность менять?Тем, что алгоритм шума Перлина такой и никакой иначе. В нем нужно делать dot(расстояние от узла, случайный вектор в узле). Если у нас двумерная картинка, то и «расстояние от узла» будет двумерным. И в узлах у нас должен быть двумерный вектор. А для трехмерного шума перлина нужны будут трехмерные вектора. А в вашей статье — там скаляр вне зависимости от размера.
спасибо конечно, но к сожалению через чур злоупотребил переводчиком, и поторопившись не вычитал хорошенько, из-за чего обоснованно «получил по ушам» в комментариях.Ваша статья (хоть и с ошибкой в названии шума) — гораздо ближе лежит к практике, чем эта. Шум описанный у вас применяется чаще, т.к. он дешевле и проще реализуется. Однако знать разницу между нормальным шумом и шумом Перлина все таки полезно.


Пишем настоящий шум Перлина