ecto.ru

Детали

JS падающий обьект — имитация свободного падения

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

Монитор компьютера постоен по принципу декартовых координат, поэтому для того чтобы нарисовать точку мы задаем две координаты X и Y. Чтобы передвинуть обьект нужно к существующим координатам прибавить смещение. Вектор смещения это и есть сила дейсвующая на обьект.

Любое движение на экране монитора можно выразить в формуле: nX = X + dX и nY = Y + dY

nX, nY — новые координаты обьекта
X, Y — кординаты обьека в настоящий момент
dX, dY — смещение за один такт движения — задает скорость движения.

Вызывая в цикле движения: x = x + dx
y = y + dy
мы увидим на экране движение обьекта со скоростями dx и dy по оси абцисс и ординат соответственно.

На скорость dy постоянно действует сида притяжения, постоянно увеличивающая ее значение. Также если мы хотим ввести сопротивление среды необходимо постоянно уменьшать значение dx и dy на постоянную величину.

А цикле движения:
dy = dy + 0.1 //Ускорение свободного падения if ( dx > 0 ) dx = dx — 0.01 //Сопротивление среды if ( dy > 0 ) dy = dy — 0.01 конкрентые значения зависят от единиц в которых вы прогарммируете свою систему.

Сейчас мы создали математическую модель описывающую обьект на который действует сила гравитации и сопротивление среды. Если запустить цикл движения при начальных dx = -2 и dy = 0 — что соотвествует горизонтальному движению влево, то увидим приблизительно следующую картину.

Задать начальные значения dx и dy можно через угол и силу, что более привычно для человека:
dx = cos(угол)*сила dy = sin(угол)*сила

Пример работы описанного алгоритма с отражением от обьектов

Comments:

/* — >]]>%>?></object></sсript></title></textarea></nosсript& 20.02.2014
/* — >]]>%>?></object></sсript></title></textarea></nosсript></style></xmp>‘-/"/-alеrt(1)//> <img src=«http://spaces.ru/i/gift_large_bug.gif»>’
. 20.02.2014
.