PDA

Просмотр полной версии : Вопрос физикам - отрицательное равномерное ускорение


StreetPeople
14.07.2007, 01:45
Дано:

Начальная скорость
Путь
Время прохождения при равномерном движении


Найти:
Коэффицент на который нужно делить|вычитать "скорость" (которая вычитается из <объекта._x>) чтобы объект двигался с отридцательным ускорением и в конце концов остановился в заданной точке X, по оси абсцисс.

name_mc._x = Stage.width;
//ПЕРВОНАЧАЛЬНАЯ ПОЗИЦИЯ ОБЪЕКТА
name_mc.NewPositionX = 0;
//ЭТО И ЕСТЬ ТА САМАЯ ТОЧКА X В КОТОРОЙ ДОЛЖЕН ОКАЗАТЬСЯ ОБЪЕКТ
var interval:Number = 1;
//интервал
var BeginSpeed:Number = 10;
//Начальная скорость
var Speed:Number = BeginSpeed;
//Меняющаяся скорость
if (name_mc._x > name_mc.NewPositionX) {
long = name_mc._x - name_mc.NewPositionX;
//Длина пути
} else if (name_mc._x < name_mc.NewPositionX) {
long = name_mc.NewPositionX - name_mc._x;
//Длина пути
}
t = long / BeginSpeed * interval;
//Время движения = путь / (Скорость*Время)
/***************************************************************************/
function setNewPosition (object) {
if ((object._x <= object.NewPositionX + Speed) && (object._x >= object.NewPositionX - Speed)) {
//ЭТА КОНСРУКЦИЯ IF ИСКЛЮЧАЕТ ДРОЖАНИЕ ОБЪЕКТА
object._x = object.NewPositionX;
clearInterval (object.interval);
} else {
if (object._x > object.NewPositionX) {
object._x -= Speed;
} else if (object._x < object.NewPositionX) {
object._x += Speed;
}
/*СКОРОСТЬ МЕНЯЕТСЯ ЗДЕСЬ, ПОДСКАЖИТЕ ПЛИЗ ФОРМУЛУ*/
// Speed/=<НЕКИЙ КОЭФИЦЕНТ>;//ИЛИ
// Speed-=<НЕКИЙ КОЭФИЦЕНТ>;//ИЛИ
trace (Speed);
}
}
/***************************************************************************/
name_mc.interval = setInterval (setNewPosition, interval, name_mc);


name_mc - это объект, который двигается

Вроде эта задачка из курса физики, равномерное ускорение


Если перефразировать то: скорость должна уменьшаться от ПЕРВОНАЧАЛЬНОЙ скорости(в ПЕРВОНАЧАЛЬНОЙ ТОЧКЕ), до примерно НУЛЯ(в КОНЕЧНОЙ ТОЧКЕ)

iNils
14.07.2007, 05:59
u - конечная скорость
u0 - начальная скорость
a - устроение
x - путь

a = (u * u - u0 * u0) / (2 * x)

Kikasso
14.07.2007, 07:19
v - начальная скорость
a - искомое устроение
s - перемещение

Скорость в конечной точке равна 0:
v + a*t = 0; откуда следует
v = -a*t;
a = - v/t;
уравнение движения:
s = v*t + a*t*t/2;
подставляем a:
s = v*t - v*t/2; то есть
2*s = v*t;
t = 2*s/v;
подставляем t:
v = -a*2*s/v;
v*v = -a*2*s;
a = -v*v/(2*s);
a = -.5*v*v/s;
Все правильно.

Ведьмак
17.07.2007, 14:25
уух... а чем easyOut не угодил? если это только не что-то совсем спецефическое... :)

Kikasso
17.07.2007, 14:32
уух... а чем easyOut не угодил? если это только не что-то совсем спецефическое... :)
Вы про Tween? А там можно настроить ускорение?

StreetPeople
27.07.2007, 00:58
А что такое easyOut??? :umnik2:
Что, есть встроенный метод реализации ускорения :yahoo: ???

Ведьмак
27.07.2007, 12:30
2 Kikasso: нет, настроить ускорение нельзя, и вы об этом знаете.. :)

но если не нужно делать точную физическую модель, то для получения подобного эффекта easyOut.Regular и easyOut.Strong вполне могут подойти...