Comments 22
За такие переводы надо банить.
Этот метод дает очень гладкие результаты, конечно, но вы платите за это в скорости. Честно говоря, я не уверен, что это дать значительно лучшие результаты, чем косинусоидальная интерполяции, но здесь это все равно, если вы этого хотите.
Действительно указанный вами абзац перевёл слишком дословно и уже исправил.
Я вам только один абзац привел, а у вас вся статья такая — в чем ее ценность тогда? Поскорее на хабр попасть?
Ценность — это отсутствие перевода.
Кроме того, если вы не заметили, найденные недочёты я исправляю для удобочитаемости статьи.
На графике этой функции шума, например, красные пятна указывают на случайные значения, определенные по измерению функции.
В этом случае амплитуда — это разница между минимальным и максимальным значениями которые у функции могут быть. Длина волны — это есть расстояние от одного красного пятна к другому. Опять же частота определяется как 1/(длина волны).
Красные пятна, мать их.
На приведенном графике красными точками отмечены значения из области значения функции. В этом случае амплитуда определяется как разность максимального и минимального значений, которые может принять функция, а длина волны — расстояние между соседними красными точками. Частота по-прежнему определяется как 1/(длина волны).
Этот метод дает очень гладкие результаты, но вы платите за это в скорости. Честно говоря, я не уверен, что это даст значительно лучшие результаты, чем косинусоидальная интерполяции, но здесь это в любом случае на ваше усмотрение. Это немного сложнее, так что будьте внимательны. Если раньше, для функции интерполяции было три входа, кубическая интерполяция принимает пять.
Этот метод дает намного более сглаженный результат ценой скорости вычислений. Честно говоря, я не уверен, что результат будет заметно отличаться от косинусной интерполяции, но тем не менее, я привел его, на случай если он вам понадобится. Он несколько более сложен в реализации, так что будьте внимательны. Если если прежняя интерполяционная функция принимала на вход три параметра, кубическая принимает пять.
Мне так и писать за вас?
Интерполируя между этими значениями, мы можем задать непрерывную функцию, принимающую вещественное значение в качестве параметра.
Прежде чем идти дальше, позвольте мне определить, что я имею в виду амплитудой и частотой. Если вы изучали физику, вы вполне могли встретить понятие амплитуды и частоты применительно для синусодальной волны.
Прежде чем двигаться дальше, давайте определим то, что в данном случае понимается под амплитудой и частотой. Если вы изучали физику, то наверняка встречали понятия амплитуды и частоты применительно к синусоидальной волне.
Теперь, если вы возьмёте много таких гладких функций, с различной частотой и амплитудой, вы можете добавить их все вместе, чтобы создать хорошо зашумленную функцию. Это функция шума Перлина.
Теперь, если вы возьмете множество таких сглаженных функций с различной частотой и амплитудой, вы сможете сложить их и получить хорошую шумовую функцию. Это и есть функция Шума Перлина.
Когда вы добавляете вместе эти функции шума, вы можете задаться вопросом, какая именно амплитуда и частота использована каждой из них. В одномерном примере использованы два раза частоты и половины амплитуды для каждой последующей добавляемой функции шума. Это довольно распространенное явление. Таким образом, фактически, многие люди даже не рассматриваю возможность использования всего остального.
При сложении всех этих шумовых функций встает вопрос, какие именно значения амплитуды и частоты следует использовать. В одномерном примере, приведенном выше, используется удвоенная частота и половинная амплитуда для каждой последующей шумовой функции. Это довольно распространенная реализация. Таким образом, многие даже не рассматривают другие варианты.
Чтобы объяснить это проще, и, чтобы избежать повторения слов «амплитуда» и «частота» все время, используется единственное число для определения каждой амплитуды и каждой частоты. Эта величина называется настойчивостью(Persistence). Существует некоторая неопределенность относительно его точного смысла. Этот термин был изначально придуман Мандельбротом, один из тех кто стоит за открытием фракталов. Он определил шум с большим количеством высоких частот, имеющих низкую стойкость. Мой друг Мэтт также выступил с концепцией настойчивости, но определил его наоборот. Честно говоря, я предпочитаю определение Мэтта.
Извините, Мандельброт.
Для простоты и избежания повторения слов «амплитуда» и «частота» используем единый параметр, который и определит значение амплитуды на каждой частоте. Эта величина называется настойчивостью (Persistence). Существует некоторая неопределенность в том, что именно считать «настойчивостью». Изначально, этот термин был введен Мандельбротом, одним из людей, открывших фракталы. Согласно его определению, шум, в котором присутствует сильная высокочастотная составляющая, имеет низкую «настойчивость». Мой друг Мэтт тоже пришел к концепции настойчивости, однако, определил ее наоборот. Честно говоря, я предпочитаю определение Мэтта.
Извините, Мандельброт.
Была выбрана хорошая тема для перевода.
А что было принято?
Самое смешное в этом вовсе не перевод, а то, что описываемый алгоритм не является шумом Перлина ни разу!
В основе Perlin noise лежит генерация псевдослучайных градиентов искомой функции в каждом узле сетки, а не непосредственно значений, как в этой статье.
Наложение же разночастотных шумов друг на друга — это совершенно другая техника, которая тоже к Перлину имеет опосредованное отношение.
Кубическая интерполяция
Этот метод дает очень гладкие результаты, но вы платите за это в скорости.
Не пойму почему. В кубической интерполяции используются простейшие математические операции, в то время как в косинусной — фукнция косинуса, которая гораздо более ресурсоемкая. Поправьте меня, если ошибаюсь…
CPU: wiki.dg8.ru/Developer:Articles:Fast_Improved_Perlin_Noise_C%2B%2B
GPU: http.developer.nvidia.com/GPUGems2/gpugems2_chapter26.html
Тот код что приведен в статье — скорее учебный, для реального применения он слишком медленный.
Сорри за некропост, но ссылка на эту статью до сих пор выдаётся во всех поисковиках на тему Perlin Noise.
Уважаемые модераторы или автор: убедительная просьба переименовать статью во "Фрактальный шум на базе value noise", т.к. в статье описывается именно он: https://en.wikipedia.org/wiki/Value_noise
А никаким образом не базовый Perlin noise, который является Градиентным шумом с совсем другими свойствами. Например он равен нулю во всех целочисленных узлах, а впадины или выпуклости генерируются между ними. https://puu.sh/vn0Wd/8833b58786.png
Да, на его базе можно так же сделать фрактальный шум, но сам шум Перлина к фрактальному не относится.
Классический шум Перлина хорошо описан в статье про Simplex noise (следующее поколение, где устраняются недостатки классического шума Перлина, такие как экспоненциальный рост сложности вычислений в более высоких размерностях): http://webstaff.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf
Поправка: "он равен нулю во всех целочисленных узлах" заменить на "в его базе лежит градиентная функция, равная нулю во всех целочисленных узлах"
PS Каким языком это все написано я уж вообще молчу.
Шум Перлина (Perlin Noise)