![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Phyzics programming
clim © (2003-07-30 01:19:00)
как лучше работать с таймером, когда координаты объекта изменяются по законам физики, зависящиx от времени
например
V = V0 + a*t
x = x0 + v0*t + g*t*t/2
(желательно привести какой-нибудь пример)
C3H7OH (2003-08-04 07:43:00) [1]
я просто пояснил что где применяется...
к тому же x( t ) = x0 + v0*t + a*t^2/2 содержит именно t а не dt
так что разница есть:)
Думкин (2003-08-04 05:39:00) [2]
> C3H7OH (04.08.03 03:16)
Как раз никто ничего не мудрил, Ваш ответ полностьюсодержится в предыдущих постах.
C3H7OH (2003-08-04 03:16:00) [3]
да,, замудрили слегка так
если смотреть как изменяются координаты по по-шагово
то так:
v = v + a*dt
x = x + v*dt
а если мы не следили за телом а просто хотим знать зависимость x(t).
зная что оно движется равноускоренно,
то пишем так:
x( t ) = x0 + v0*t + a*t^2/2 - интеграл вон тех выражений, есно при а = const
Asteroid (2003-07-30 20:15:00) [4]
> Думкин © (30.07.03 06:06)
Да, спасибо за замеченную ошибку. Оно должно быть так:
dV = a*dt
V = V + dV
dx = V*dt
x = x + dx
А насчет прямого метода - это только если параметры остаются такими, какие они есть. Если же ускорение меняется от времени, да еще и не по закону (а как пользователь захочет) - прямой метод не поможет.
хм (2003-07-30 14:37:00) [5]
GetTickCount()
nobody (2003-07-30 10:13:00) [6]
"Желательно измерять каждый кадр " -- как? (пример)
Думкин (2003-07-30 06:06:00) [7]
Зависит от того что ты хочешь.
Создать абсолютно реальную систему - сложно. Но если вся кинематика дается в конечных формулах - как приведено(без решения сложных дифуров - Z.b. пошагово), то можно. В момент отрисовки - берешь текущее время и выводишь объекты в получившейся конфигурации.
>
> Asteroid © (30.07.03 02:00)
> dV = a*dt
> dx = x0+ v0*dt + a*dt*dt/2
> V = V + dV
> x = x + dx,
x0 = 0
Но тут это и не нужно, т.к. есть прямой метод вычисления и x и V.
Asteroid (2003-07-30 02:00:00) [8]
dV = a*dt
dx = x0 + v0*dt + a*dt*dt/2
V = V + dV
x = x + dx,
где dt - время между двумя кадрами. Желательно измерять каждый кадр (раз на раз не приходится, даже с таймером).