Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Генерация случайного пути

#алгоритм #математика #графика


Подскажите функцию для генерации случайной плавной кривой (например, как на картинке). 
Либо алгоритм построения такой функции F(t), где t - динамический параметр


    


Ответы

Ответ 1



Бросьте несколько равноудалённых случайных точек на плоскость. Координата x у которых будет постоянно возрастать на шаг h, а высота будет случайным числом. Сами решите каким именно. После этого аппроксимируйте это множество точек с помощью кубических сплайнов например.

Ответ 2



Возьмите, так сказать, тренд :), что именно вам нужно - растущая, убывающая, колеблющаяся около нуля - и на каждом небольшом шагу решения соответствующего дифуравнения тем же простейшим Эйлером добавьте случайные отклонения. Такое сойдет? Вот такая испорченная синусоида: А вот соответствующий код: int main(int argc, const char * argv[]) { default_random_engine u; normal_distribution rnd(0.0,0.1); double y = 0.0; double h = 0.1; for(double x = 0.0; x < 10.0; x += h) { y += cos(x)*h + rnd(u); cout << "{" << x << "," << y << "},\n"; } } (он у меня данные для Wolfram Mathematica выводит). Гладкость и прочее - подбирается параметрами...

Ответ 3



Я бы поэкспериментировал с многочленами. Контролировал бы определенным образом коэффициенты. Зависимость коэффициентов уже зависит конкретно от вашей задачи (какие ограничения должны быть наложены)

Комментариев нет:

Отправить комментарий