Экспоненциальная формула для отрицательного направления? - PullRequest
0 голосов
/ 30 сентября 2010

Я немного застрял, пытаясь понять отрицательное направление? это должно быть действительно просто, но, кажется, просто не могу понять!

x = текущая позиция x

dir = направление движения по оси x

if (tween == 'linear'){

    if (dir == 1) {

        x += (x / 5);
    }

    else if (dir == -1){

        //what here??
    }
}

Ответы [ 5 ]

2 голосов
/ 30 сентября 2010

Чего здесь не хватает, так это того, что вам нужно учитывать отклонения от начальной точки, а не x = 0 (а также учитывать также знак направления, что правильно указывают другие). То есть, если ваша начальная точка x0, ваше уравнение должно быть больше похоже на:

x += (x-x0)/5

Вот рисунок для движения в положительном и отрицательном направлениях (обратите внимание, что положение находится на вертикальной оси, а время на горизонтальной)

alt text

А вот и код Python. (Обратите внимание, что я добавил термин dt, так как слишком странно проводить динамическое моделирование без явного времени.)

from pylab import *

x0, b, dt = 11.5, 5, .1

xmotion, times = [], []

for direction in (+1, -1):
    x, t = x0+direction*dt/b, 0  # give system an initial kick in the direction it should move
    for i in range(360):
        x += dt*(x-x0)/b
        t += dt
        xmotion.append(x)
        times.append(t)

plot(times, xmotion, '.')
xlabel('time (seconds)')
ylabel('x-position')
show()
1 голос
/ 30 сентября 2010
x += (abs(x) / 5) * dir;
1 голос
/ 30 сентября 2010

Если вы сделаете что-то вроде x -= (x/5), пересечь x = 0 будет невозможно - поскольку x приближается к 0, оно начинает меняться все меньше и меньше. Попробуйте использовать минимальное приращение

v = abs(x) / 5;
x += ((v > MINVEL) ? v : MINVEL) * dir;
0 голосов
/ 30 сентября 2010

В конце я добавил счетчик кадров (t) и добавил:

x = -(change*dir) * (t /= 10) * (t - 2) + x;

из моей любимой анимации as3:

0 голосов
/ 30 сентября 2010
if (tween == 'linear') {
   x += (x / 5) * dir;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...