На любой обьект в физическом мире постоянно действуют силы, пытающиеся этот обьект сдвинуть. Сумма всех векторов сил, действующих на обьект, показывает нам направление в котором движется обьект или не движется, если сумма равна 0.
Монитор компьютера постоен по принципу декартовых координат, поэтому для того чтобы нарисовать точку мы задаем две координаты X и Y. Чтобы передвинуть обьект нужно к существующим координатам прибавить смещение. Вектор смещения это и есть сила дейсвующая на обьект.
Любое движение на экране монитора можно выразить в формуле:
nX = X + dX и nY = Y + dY
nX, nY — новые координаты обьекта
X, Y — кординаты обьека в настоящий момент
dX, dY — смещение за один такт движения — задает скорость движения.
Вызывая в цикле движения:
x = x + dx
мы увидим на экране движение обьекта со скоростями dx и dy по оси абцисс и ординат соответственно.
y = y + 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(угол)*сила
Пример работы описанного алгоритма с отражением от обьектов