Мне нужно создать пого-стик, который прыгает по экрану дугами. Я думал, что лучший способ сделать это - переместить его на волне греха. Если вершина волны равна 1, земля равна 0, а нижняя часть волны равна -1, то каждый раз, когда она достигает 0, я буду сбрасывать значения, чтобы снова запустить синусоидальную волну. Таким образом, вместо того, чтобы следовать типичной синусоидальной волне (0, 1, 0, -1, 0 и т. д.), она будет идти 0, 1, 0, 1, 0 и т. д.
К сожалению, моя математика довольно ужасна, и я часами пытался разработать формулу. На данный момент я просто пытаюсь сделать обычную синус-волну, где верхняя половина имитирует прыжки с помощью пого-стика, но, похоже, я даже не могу зайти так далеко. Самое близкое, что у меня есть:
m_vel.x++;
float f = PI / 30 / 2;
m_vel.y = 200 * sin(f * m_vel.x);
m_vel.y = -m_vel.y;
Мне нужно, чтобы волны были достаточно узкими, а вершина достаточно высокой. Приведенная выше формула работает нормально для первой итерации, но затем волны становятся шире, а точки максимума и минимума сближаются друг с другом. Кто-нибудь может помочь нубу-математику?
abs(sin(...))
. Однако из второй части вашего вопроса я не уверен, действительно ли это то, чего вы хотите, или нет. - person Hammerite   schedule 05.11.2010