Я знаю, что это старый вопрос, но вот одно из самых ясных объяснений интерполяции между фиксированными точками, которая составляет 1d шум Перлина http://webstaff.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf
Одна из самых важных вещей, которые нужно знать, полезная во всем программировании, - это функция интерполяции ...
http://paulbourke.net/miscellaneous/interpolation/
как только у вас есть случайные точки с плавной интерполяцией, у вас есть своего рода функция сглаженного одномерного шума.
см. smoothstep в вики. много по теме через гугл. https://en.wikipedia.org/wiki/Smoothstep
видимо гиперссылка нестабильна, вот она снова:
Демистификация симплексного шума
Кен Перлин представил «симплексный шум», замену его классическому алгоритму шума. Классический «шум Перлина» принес ему награду академии и с годами стал повсеместным процедурным примитивом для компьютерной графики, но, оглядываясь назад, он имеет довольно много ограничений. Кен Перлин сам разработал симплексный шум специально для преодоления этих ограничений, и он много над этим подумал. Следовательно, это лучшая идея, чем его оригинальный алгоритм.
Вот несколько наиболее заметных преимуществ:
• Симплексный шум имеет меньшую вычислительную сложность и требует меньшего количества умножений.
• Симплексный шум масштабируется до более высоких измерений (4D, 5D и выше) с гораздо меньшими вычислительными затратами, сложность относится к размерам, а не к классическому шуму.
• Симплексный шум не имеет заметных направленных артефактов.
• Симплексный шум везде имеет четко определенный и непрерывный градиент, который можно довольно дешево вычислить.
• Симплексный шум легко реализовать аппаратно.
К сожалению, даже сейчас, в начале 2005 года, очень немногие люди, кажется, понимают симплексный шум, и почти никто не использует его, поэтому я написал это. Я постараюсь объяснить алгоритм немного более основательно, чем Кен Перлин успел сделать в своих заметках из курса Siggraph 2001 и 2002, и, надеюсь, проясню, что это не так сложно понять, как кажется на первый взгляд. Из того, что я узнал, больше всего людей смущает непонятная природа эталонной реализации Кена Перлина на Java. Он представляет очень компактный код без комментариев для демонстрации принципа, но этот код явно не предназначен для чтения в качестве учебного пособия. После нескольких попыток я отказался от кода и вместо этого прочитал его статью, которая была намного яснее.
Однако это не совсем ясно, поскольку он представляет алгоритм в основном словами и фрагментами кода. Я был бы признателен за некоторые графики, рисунки и несколько полезных уравнений, и это то, что я пытаюсь предоставить здесь, чтобы другим было легче понять величие и красоту симплексного шума. Я также сначала объясню вещи в одном и двух измерениях, чтобы упростить объяснение с помощью графиков и изображений, а затем перейду к трех и четырех измерениям. Классический шум Чтобы объяснить симплексный шум, полезно хорошо понимать классический шум Перлина. Я видел довольно много плохих и неверных объяснений в этой области, поэтому, чтобы убедиться, что у вас есть необходимая основа, я сначала представлю классический шум Перлина.
Шум Перлина - это так называемый градиентный шум, который означает, что вы устанавливаете псевдослучайный градиент в точках с регулярным интервалом в пространстве и интерполируете плавную функцию между этими точками. Чтобы сгенерировать шум Перлина в одном измерении, вы связываете псевдослучайный градиент (или наклон) для функции шума с каждой целочисленной координатой и устанавливаете значение функции для каждой целочисленной координаты равным нулю.
Для данной точки где-то между двумя целыми точками значение интерполируется между двумя значениями, а именно значениями, которые были бы результатом, если бы ближайшие линейные наклоны слева и справа были экстраполированы на рассматриваемую точку. Эта интерполяция представляет собой алгоритм плавного шага.
person
DeltaEnfieldWaid
schedule
23.09.2013