Страницы

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

среда, 31 октября 2018 г.

Как с помощью синуса построить траекторию полёта птицы?

График траектории должен принимать разную амплитуду.
Это схематический полёт птицы в игре. Птица летит слева направо, график её полёта просто похож на синус, но нужно как-то менять амплитуду и длину волны:
birds.y = Math.sin(birds.x)+200;
Если так, то она дёргается вверх и вниз на 1, соответственно =) 200 это отступ сверху.
birds.y = 4 * Math.sin(birds.x)+200;
Амплитуда увеличивается на 4, но длина остаётся под вопросом:
birds.y = 100*Math.sin(birds.x/100)+200;
Так получаю более ли менее полёт, но он однообразен.
Так, думаю, будет ещё понятней:
Вот, собственно, ещё для наглядности, под мониторы не подстраивал, но птицу видно =)
На сайте
Может, её к курсу валют прикрутить? =))


Ответ

Попробуйте использовать сумму синусоидальных функций с различной длинной волны и амплитудой. В качестве примера, я построил график зависимости:
y(x) = 130 + 12 * sin(x / 4) + 47 * sin(x / 3) + 52 * sin(x / 2) + 3 * sin(x * 3)
и получил вот такую кривую:

А вот пример зависимости, которая (наверное) больше подходит к вашей задаче:
y(x) = 130 + 12 * sin(x / 12.5) + 27 * sin(x / 9.5) + 32 * sin(x / 6.25) + 3 * sin(x)

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

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

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