Задать вопрос

Какой алгоритм подойдет для описания полета насекомого?

Суть задачи. Пишу игру IOS Sprite Kit. Необходимо реализовать хаотичный полёт насекомого. Сейчас получилось вот так:
fb104a7a0a144609969297785d3a5121.jpg
Это не похоже на полёт насекомого
Необходимо чтобы траектория полёта была, примерно, такая:
fa783d5e6de64b1fa5f670ae10f94294.jpg
Я понимаю, что через произвольные точки необходимо строить кривые, но никак не могу сообразить как определять корректно случайные точки, чтобы можно было построить нормальную кривую. Плюс как быть с виражами? Ещё надо контролировать чтобы насекомое не покидало границ экрана. Одновременно их летает несколько. И самое грустное, что насекомое это не абстрактная точка, а она имеет чёткие очертания, т.е. голова должна быть направлена в направлении движения. Спрайт постоянно нужно будет вращать. Подскажите в какую сторону копать? Может быть в swift есть другие какие-то решения подобных задач? Может другим способом её нужно решать? Пока смотрел кривую Безье, и что-то никак не адаптирую её к данной задаче. Вообщем, буду рад любым советам.
  • Вопрос задан
  • 3315 просмотров
Подписаться 14 Оценить 1 комментарий
Ответ пользователя Xeli К ответам на вопрос (8)
@Xeli
Задача очень похожа на алгоритм сглаживания узлов. Я думаю самое простое что вы можете сделать это написать разработчикам Inkscape (открытый векторный редактор), и попросить их указать куда копать, чтобы реализовать подобную фичу (если возьмете их код, то игру придется публиковать под GPL), ради интереса скачайте Inkscape натыкайте прямую с произвольным количеством узлов, а затем сгладьте их. Вы удивитесь как прямые палки превратятся в изящные кривые, причем кривизну можно регулировать "рычагами" (т.е в коде есть переменные отвечающие за это). Так же есть кривая Спиро. Она больше подходит для вашей задачи чем Безье. Вот тут прямая без
сглаживания
d04373919e2c46cb8d0674f4b1bcb100.png

Она же со сглаженными
точками
2638e604ce584a26a757d3387ebaf34f.png
Ответ написан
Комментировать