![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ускорение свободного падения [D7]
aka © (2015-03-30 10:24:00)
const
g = 9.8
procedure MTimer(uTimerID, uMessage: UINT; dwUser, dw1, dw2: DWORD); stdcall;
begin
z := z + 0.001;
Form1.Button1.Top := Form1.Button1.Top + round(g * z);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MMTimer := timeSetEvent(1,1,@MTimer,100,TIME_PERIODIC);
z := 0;
end;
Чего оно рывками деhгается?
Inovet (2015-03-30 13:21:00) [1]Это у тебя скорость, вообще-то. Тебе, видимо, надо пространственную координату g*z^2/2.
RWolf (2015-03-30 11:45:00) [2]а надо так:
y: double; // координата
y := y + g * z;
Form1.Button1.Top := round(y);
aka (2015-03-30 11:37:00) [3]
> Держать модель в вещественных числах
z := z + 0.001;
> а округлять только перед переводом в экранные координаты.
Form1.Button1.Top := Form1.Button1.Top + round(g * z);
RWolf (2015-03-30 10:40:00) [4]Держать модель в вещественных числах, а округлять только перед переводом в экранные координаты.
aka (2015-03-30 10:38:00) [5]
> RWolf © (30.03.15 10:34) [1]
ну это я уже понял.
можно ли сгладить этот эффект?
RWolf (2015-03-30 10:34:00) [6]Потому, что вертикальная координата — вещественное число, а ты ей даёшь целые приращения.