Вопрос по программированию в среде Лазарус.
имеется мной написанное небольшое приложение "моделирование равноускоренного движения".
в нем с клавиатуры вводится значения начальной скорости и ускорения(начальное положения всегда=0), по уравнению равноуско. движен.(x = x0 + at^/2 +u0 *t) двигается точка. Этой точке в каждый момент времени(по таймеру) присваивается координатка Х, точка у меня как бы проезжает по форме и убегает за ее пределы!))
Как запрограммировать эту точку так, чтобы она проезжала форму и возвращалась к положению ноль, и продолжала двигаться дальше?
Вот надеюсь, понятно рассказала...
Помогите новичку с моделированием
Модератор: Модераторы
-
koshka-kapratoshka
- незнакомец
- Сообщения: 2
- Зарегистрирован: 03.05.2012 15:29:00
Сезон открылся снова. Идет охота на студентов... 
-
Padre_Mortius
- энтузиаст
- Сообщения: 1261
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Как запрограммировать эту точку так, чтобы она проезжала форму и возвращалась к положению ноль, и продолжала двигаться дальше?
Сначала нарисовать точку нужным цветом, после вычисления новой точки закрашиваем старую точку цветом фона и рисуем новую точку нужным цветом. Все это делаем по нужной траектории.
Я бы хотел увидеть код написанный уважаемой koshka-kapratoshka, а после уже можно размышлять...
п.с. Это сугубо моё желание
п.с. Это сугубо моё желание
-
koshka-kapratoshka
- незнакомец
- Сообщения: 2
- Зарегистрирован: 03.05.2012 15:29:00
procedure TForm1.Button1Click(Sender: TObject);
begin
t:=0;
x:=0;
a:=strtofloat(Edit2.text);
u:=strtofloat(Edit1.text);
Timer1.Enabled:=true;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
t:=t+1;
x:=(a*t*t/2+u*t);
Image1.Left:=trunc(x);
end;
__________
часть кода где я считываю значения при нажатии на батон1, и далее имиджу присваивается Х.
begin
t:=0;
x:=0;
a:=strtofloat(Edit2.text);
u:=strtofloat(Edit1.text);
Timer1.Enabled:=true;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
t:=t+1;
x:=(a*t*t/2+u*t);
Image1.Left:=trunc(x);
end;
__________
часть кода где я считываю значения при нажатии на батон1, и далее имиджу присваивается Х.
Код: Выделить всё
Image1.Left:=(Width + trunc(x)) mod Width;