![]() |
|
|
|
|
#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) |