|
#1
|
|||
|
|||
Инерция
Хотел запихнуть топик в "начинающим", но все таки он больше к играм относится...
Хочу для примера составить приложение в котором шарик катится по поверхности, и постепенно замедляется, теряя силу инерции, но не знаю как это реализовать. Кто может, помогите, пожалуйста. ПС ГУГЛИЛ! |
#2
|
||||
|
||||
А почему-бы не ввести коэфициенты сопротивления поверхности и атмосферы.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Пишешь закон перемещения S = V0 * t - a * t^2 / 2. По событию таймера перемещаешь шар в новую точку. Останов таймера, когда скорость станет равной нулю (V = V0 - a * t; if V>=0) (формулы писал по памяти, мог и забыть)
|
#4
|
|||
|
|||
вот это я и хотел получить. Большое спасибо.
|
#5
|
||||
|
||||
Подскажите как сделать эффект инерционности.
Есть два trackbar`а, один таскаю мышкой, хочу чтобы второй занимал положение ползунка второго trackbar`а, но более плавно, как будто у него него есть трение. Сделал с таймером, но положение плавно не меняется, не могу сообразить как надо. Пример сам по себе бесполезный, но на нём хочу понять как реализовать эффект инерции. Код:
procedure TForm1.Timer1Timer(Sender: TObject); var t1,t2:integer; begin t1 := trackbar1.Position; t2 := trackbar1.Position; if trackbar2.Position <> trackbar1.Position then if t2<t1 then inc(t2,1) else dec(t2,1); trackbar2.Position := t2 end; |
#6
|
|||
|
|||
Я, конечно, могу ошибаться, но попробуй так:
d-путь который прошёл трэкбар dt-интервал таймера x-координата второго трэкбара w-замедление(w>0) v=v-w*dt x:=x+v*dt исходное значение v=sqrt(2*d*w) |