#алгоритм #математика #графика
Подскажите функцию для генерации случайной плавной кривой (например, как на картинке). Либо алгоритм построения такой функции F(t), где t - динамический параметр
Ответы
Ответ 1
Бросьте несколько равноудалённых случайных точек на плоскость. Координата x у которых будет постоянно возрастать на шаг h, а высота будет случайным числом. Сами решите каким именно. После этого аппроксимируйте это множество точек с помощью кубических сплайнов например.Ответ 2
Возьмите, так сказать, тренд :), что именно вам нужно - растущая, убывающая, колеблющаяся около нуля - и на каждом небольшом шагу решения соответствующего дифуравнения тем же простейшим Эйлером добавьте случайные отклонения. Такое сойдет? Вот такая испорченная синусоида: А вот соответствующий код: int main(int argc, const char * argv[]) { default_random_engine u; normal_distributionrnd(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
Я бы поэкспериментировал с многочленами. Контролировал бы определенным образом коэффициенты. Зависимость коэффициентов уже зависит конкретно от вашей задачи (какие ограничения должны быть наложены)
Комментариев нет:
Отправить комментарий