Форум: "Начинающим";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
Внизускорение свободного падения Найти похожие ветки
← →
aka © (2015-03-30 10:24) [0]
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гается?
← →
RWolf © (2015-03-30 10:34) [1]Потому, что вертикальная координата — вещественное число, а ты ей даёшь целые приращения.
← →
aka © (2015-03-30 10:38) [2]
> RWolf © (30.03.15 10:34) [1]
ну это я уже понял.
можно ли сгладить этот эффект?
← →
RWolf © (2015-03-30 10:40) [3]Держать модель в вещественных числах, а округлять только перед переводом в экранные координаты.
← →
aka © (2015-03-30 11:37) [4]
> Держать модель в вещественных числах
z := z + 0.001;
> а округлять только перед переводом в экранные координаты.
Form1.Button1.Top := Form1.Button1.Top + round(g * z);
← →
RWolf © (2015-03-30 11:45) [5]а надо так:
y: double; // координата
y := y + g * z;
Form1.Button1.Top := round(y);
← →
Inovet © (2015-03-30 13:21) [6]Это у тебя скорость, вообще-то. Тебе, видимо, надо пространственную координату g*z^2/2.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.051 c