PDA

Просмотр полной версии : Затухающие колебания шарика


mixar
25.07.2007, 00:37
Добрый день!

Хочу сделать чтобы шарик колебался по закону затухающих колебаний (то есть шарик в конечном итоге остановится у начальной точки), пока получилось сделать колебания по маятнику:

y1=28; // сдвиг начала координат по оси y
H=18; // высота, с которой падает мяч
g=9.8; // ускорение свободного падения
t=0; // начальное значение времени
n=1; // параметр, определяющий фазу движения (отскок или падение)
k=1;
dt= 0.2; // шаг по времени

_root.mc_shar.onEnterFrame = function (){
t = t+ dt;
t0 = Math.sqrt(2* H/g);
if(t > 2* t0) t=dt;
if(t < t0 ) n=0;
if (t>= t0) n=1;
_root.mc_shar._y = y1 - (H -g* (2*t0*n -t)*(2*t0*n -t) *0.5);
}

Буду благодарен, если кто-нибудь поможет с формулой затухающих колебаний по оси y.

PS: Flash 8, AS 2.0

etc
25.07.2007, 02:03
mixar, отредактируйте свой пост и оформите код тегами .

AleXNoD GD
25.07.2007, 02:27
К чему проблемы? Программирование прекрасно тем, что сложные физические формулы можно заменить простым алгоритмом. Используй SPEED*Math.sin(ID), где ID - это индефикатор синуса (от чего тот берется), а SPEED - скорость (если 0, значит всё 0).

Kikasso
25.07.2007, 03:03
Я бы посоветовал подставить вместо t0 нормальный 0, dt принять за 1 и упростить формулу.

Жень Шень
25.07.2007, 11:32
Привет!
Рисуем шарик на ниточке. Делаем из него Symbol и даем ему же имя Symbol. Заходим в него и устанавливаем мувик концом ниточки в центр клипа.
В первом кадре главной линейки прописываем:
t = 0;
a = 90;
b = 0;
k = 10
_root.onEnterFrame = function() {
b = a*(Math.exp(-t/3))*Math.cos(k*t);
Symbol._rotation = b;
t += 0.01;
if (t>10) {
Symbol._rotation = 0;
delete this.onEnterFrame;
}
};
Методом научного тыка меняем параметры.
Или имелся ввиду пружинный маятник?