Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ускорение свободного падения [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]

Потому, что вертикальная координата — вещественное число, а ты ей даёшь целые приращения.


Наверх

Титульная страница Поиск, карта сайта Написать письмо