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

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

Движение точки по окружности


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


Наверх

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