![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Движение точки по окружности
SadDragon © (2008-05-13 04:49:00)Уважаемые Мастера! Помогите плз разобраться с задачкой.
Условие:Изобразить на экране точку, которая движется по окружно-сти с постоянной угловой скоростью. Эту угловую скорость можно задавать.
Решение(не могу понять почему не работает):
procedure TForm1.Button1Click(Sender: TObject);
var a, //угол в рад..
s, //скорость передвижения точки в рад.
r: double; //радиус
x0, y0, //центр окр.
x, y: integer; //текущие координаты точки
begin
a:=90;
s:=30;
x0:=133;
y0:=133;
x:=133;
y:=31;
r:=30;
Image1.Canvas.Pixels[x,y]:=clRed;
a:=a*(pi/180) + s*(pi/180);
x:=x0 + Round(Cos(a)*r);
y:=y0 - Round(Sin(a)*r);
Image1.Canvas.Pixels[x,y]:=clBlack;
Timer1.Enabled:=true;
end;
Заранее спасибо!
SadDragon (2008-05-14 05:14:00) [1]Ок, спасибо за советы! =)
Буду пробовать...
Рамиль (2008-05-13 09:12:00) [2]Это в дополнение к
> Slym © (13.05.08 05:21) [1]
Рамиль (2008-05-13 09:11:00) [3]
> var a, //угол в рад..
> s, //скорость передвижения точки в рад.
> r: double; //радиус
> x0, y0, //центр окр.
> x, y: integer; //текущие координаты точки
Странный алгоритм какой то.
Если a и s в радианах, то на кой умножать их на пи/180?
Если в комментариях ошибка, то даже 30 градусов это очень много - 12 точек всего лишь, какя тут окружность, это многоугольник.
Скорость измеряется в чем-то/на время. То бишь 30 это должно быть 30 градусов/секунда?
Тогда ставишь таймер на время 50, и каждый раз увеличиваешь угол на 30/20 = 1.5 градуса.
Slym (2008-05-13 05:21:00) [4]при нажатии Button1Click рисует 1 точку? все правильно :)
телепатор подсказывает что есть Timer1OnTimer... если это так то x, y: integer;//текущие координаты точки в ней другие :) и там рисуется другая точка...
Решениевынеси переменные из Button1Click