Pull to refresh

Comments 22

Мог бы — поставил вам все доступные мне минусы.
За такие переводы надо банить.

Этот метод дает очень гладкие результаты, конечно, но вы платите за это в скорости. Честно говоря, я не уверен, что это дать значительно лучшие результаты, чем косинусоидальная интерполяции, но здесь это все равно, если вы этого хотите.
Я не против минусов, особенное если они заслуженные, но как улучшать если неизвестно что именно улучшать?
Действительно указанный вами абзац перевёл слишком дословно и уже исправил.
Вы сами не видите? Это на 80 процентов машинный перевод, просто неуважение такое постить.
Я вам только один абзац привел, а у вас вся статья такая — в чем ее ценность тогда? Поскорее на хабр попасть?
80%? вы льстите машинному переводу.
Ценность — это отсутствие перевода.
Кроме того, если вы не заметили, найденные недочёты я исправляю для удобочитаемости статьи.
А надо было это делать до публикации.
Просто великолепно. Если вы не заметили, там еще прорва «недочетов» и эту статью нужно *сначала* написать грамотно, а потом постить. Мне вам так и кидать по абзацу?

На графике этой функции шума, например, красные пятна указывают на случайные значения, определенные по измерению функции.
В этом случае амплитуда — это разница между минимальным и максимальным значениями которые у функции могут быть. Длина волны — это есть расстояние от одного красного пятна к другому. Опять же частота определяется как 1/(длина волны).


Красные пятна, мать их.

На приведенном графике красными точками отмечены значения из области значения функции. В этом случае амплитуда определяется как разность максимального и минимального значений, которые может принять функция, а длина волны — расстояние между соседними красными точками. Частота по-прежнему определяется как 1/(длина волны).

Этот метод дает очень гладкие результаты, но вы платите за это в скорости. Честно говоря, я не уверен, что это даст значительно лучшие результаты, чем косинусоидальная интерполяции, но здесь это в любом случае на ваше усмотрение. Это немного сложнее, так что будьте внимательны. Если раньше, для функции интерполяции было три входа, кубическая интерполяция принимает пять.

Этот метод дает намного более сглаженный результат ценой скорости вычислений. Честно говоря, я не уверен, что результат будет заметно отличаться от косинусной интерполяции, но тем не менее, я привел его, на случай если он вам понадобится. Он несколько более сложен в реализации, так что будьте внимательны. Если если прежняя интерполяционная функция принимала на вход три параметра, кубическая принимает пять.

Мне так и писать за вас?
По плавной интерполяции между значениями, мы можем определить непрерывную функцию, которая принимает не целое в качестве параметра.

Интерполируя между этими значениями, мы можем задать непрерывную функцию, принимающую вещественное значение в качестве параметра.

Прежде чем идти дальше, позвольте мне определить, что я имею в виду амплитудой и частотой. Если вы изучали физику, вы вполне могли встретить понятие амплитуды и частоты применительно для синусодальной волны.

Прежде чем двигаться дальше, давайте определим то, что в данном случае понимается под амплитудой и частотой. Если вы изучали физику, то наверняка встречали понятия амплитуды и частоты применительно к синусоидальной волне.

Теперь, если вы возьмёте много таких гладких функций, с различной частотой и амплитудой, вы можете добавить их все вместе, чтобы создать хорошо зашумленную функцию. Это функция шума Перлина.

Теперь, если вы возьмете множество таких сглаженных функций с различной частотой и амплитудой, вы сможете сложить их и получить хорошую шумовую функцию. Это и есть функция Шума Перлина.

Когда вы добавляете вместе эти функции шума, вы можете задаться вопросом, какая именно амплитуда и частота использована каждой из них. В одномерном примере использованы два раза частоты и половины амплитуды для каждой последующей добавляемой функции шума. Это довольно распространенное явление. Таким образом, фактически, многие люди даже не рассматриваю возможность использования всего остального.

При сложении всех этих шумовых функций встает вопрос, какие именно значения амплитуды и частоты следует использовать. В одномерном примере, приведенном выше, используется удвоенная частота и половинная амплитуда для каждой последующей шумовой функции. Это довольно распространенная реализация. Таким образом, многие даже не рассматривают другие варианты.

Чтобы объяснить это проще, и, чтобы избежать повторения слов «амплитуда» и «частота» все время, используется единственное число для определения каждой амплитуды и каждой частоты. Эта величина называется настойчивостью(Persistence). Существует некоторая неопределенность относительно его точного смысла. Этот термин был изначально придуман Мандельбротом, один из тех кто стоит за открытием фракталов. Он определил шум с большим количеством высоких частот, имеющих низкую стойкость. Мой друг Мэтт также выступил с концепцией настойчивости, но определил его наоборот. Честно говоря, я предпочитаю определение Мэтта.
Извините, Мандельброт.


Для простоты и избежания повторения слов «амплитуда» и «частота» используем единый параметр, который и определит значение амплитуды на каждой частоте. Эта величина называется настойчивостью (Persistence). Существует некоторая неопределенность в том, что именно считать «настойчивостью». Изначально, этот термин был введен Мандельбротом, одним из людей, открывших фракталы. Согласно его определению, шум, в котором присутствует сильная высокочастотная составляющая, имеет низкую «настойчивость». Мой друг Мэтт тоже пришел к концепции настойчивости, однако, определил ее наоборот. Честно говоря, я предпочитаю определение Мэтта.
Извините, Мандельброт.
Несмотря на то что перевод местами очень дословный, поставил плюс.
Была выбрана хорошая тема для перевода.
UFO just landed and posted this here
Да где только он не используется. Облака, грязь, туман, ландшафты, даже иногда огонь.
>> Уважаемые минусующие, а мотивировать минус уже не принято?
А что было принято?
Первое, что пришло на ум — «Глас Господа» Лема.
А вообще для моделирования реалистичных случайных процессов применяют формирующие фильтры — они учитывают корреляцию.
Странно, что статью заминусовали 15 человек. Интересно же!
(Ура, некропост!)
Самое смешное в этом вовсе не перевод, а то, что описываемый алгоритм не является шумом Перлина ни разу!
В основе Perlin noise лежит генерация псевдослучайных градиентов искомой функции в каждом узле сетки, а не непосредственно значений, как в этой статье.
Наложение же разночастотных шумов друг на друга — это совершенно другая техника, которая тоже к Перлину имеет опосредованное отношение.
Кубическая интерполяция

Этот метод дает очень гладкие результаты, но вы платите за это в скорости.

Не пойму почему. В кубической интерполяции используются простейшие математические операции, в то время как в косинусной — фукнция косинуса, которая гораздо более ресурсоемкая. Поправьте меня, если ошибаюсь…
Неплохо было бы привести код нормальных быстрых функций Перлина, или хотя бы дать ссылки.
CPU: wiki.dg8.ru/Developer:Articles:Fast_Improved_Perlin_Noise_C%2B%2B
GPU: http.developer.nvidia.com/GPUGems2/gpugems2_chapter26.html
Тот код что приведен в статье — скорее учебный, для реального применения он слишком медленный.
А я вот вобще нихрена не понял… Мало того что перевод ужасный, так ещё и в одном месте один код, в другом другой. Да ещё и в самом коде, к примеру, используется InterpolatedNoisei а где она объявлена? Или используется Noise а его тоже нет… Зато есть InterpolatedNoise_1 и Noise_1, это они? Как я должен догадываться? И да, это не шум Перлина… Сорри за некропостинг.

Сорри за некропост, но ссылка на эту статью до сих пор выдаётся во всех поисковиках на тему 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 Каким языком это все написано я уж вообще молчу.
Sign up to leave a comment.

Articles