квартальное ослабление в области расстояний вместо времени?

У меня нет известной «скорости», у меня есть количество пикселей, которые нужно пройти, я добавляю это расстояние в «moveto», и графика на экране перескакивает на это, или, если я использую гораздо меньшие значения, я получаю хорошее плавное объекты, скользящие по экрану. В настоящее время я уменьшаю значение приращения на 0,1 до тех пор, пока оно не приблизится к нулю, чтобы произвести «инерционный» эффект, но это не приводит меня к точкам, на которые я хочу приземлиться. У меня есть еще один вопрос о переполнении стека об обработке превышений, но Я нашел это:

///////////// КВАРТИЧЕСКОЕ СЛЕЖЕНИЕ: t ^ 4 /////// //////////////

// quartic easing in - accelerating from zero velocity 
// t: current time, b: beginning value, c: change in value, d: duration
// t and d can be frames or seconds/milliseconds
Math.easeInQuart = function (t, b, c, d) {
    return c*(t/=d)*t*t*t + b;
};

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

Я знаю, что в анализе Фурье временная область может быть преобразована в частотную. Как преобразовать временную область в удаленную?

Кроме того, есть ли простое преобразование, которое я могу сделать с любым уравнением или алгоритмом, основанным на времени, преобразовать его в алгоритм, основанный на расстоянии?

Я пытаюсь приземлить объект в точном положении или очень близко с эффектом «промежуточного» замедления. Приведенная выше демоверсия четвертичного ослабления произвела тот эффект, который мне нужен.


person alphablender    schedule 18.07.2011    source источник
comment
Вы хотите указать начальную позицию, конечную позицию и текущую позицию, чтобы определить, куда переместить следующий кадр?   -  person Markus Jarderot    schedule 18.07.2011


Ответы (1)


Просто решите уравнение.

Кажется, что позиция после времени t равна c * (t/d)^4 + b. Если вы хотите, чтобы это была заданная точка p, тогда t = d*((p - b)/c)^(1/4).

Разве ты не этого хочешь?

person Petar Ivanov    schedule 18.07.2011
comment
Я надеялся исключить время из уравнения, чтобы снижение скорости было пропорционально расстоянию от пункта назначения: x = getnextposition (currentpos, destinationpos) - person alphablender; 18.07.2011
comment
но вы не можете этого сделать - скорость зависит от времени. Если ваша функция getnextposition не зависит от времени, тогда ничто не мешает вам сказать, что вы навсегда останетесь в currentpos и никогда не достигнете пункта назначения. - person Petar Ivanov; 19.07.2011
comment
Нет времени, кроме итераций цикла, которые вызовут функцию, и эти итерации могут варьироваться во времени в зависимости от загрузки системы ... - person alphablender; 19.07.2011
comment
Я собираюсь отметить это как ответ, хотя я не совсем понимаю ваш ответ, поскольку он относится к системе, основанной на времени, а не к системе, основанной на итерациях / расстоянии, они могут быть одинаковыми, я не знать. - person alphablender; 25.07.2011