Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];
ВнизДвижение точки по окружности Найти похожие ветки
← →
SadDragon © (2008-05-13 04:49) [0]Уважаемые Мастера! Помогите плз разобраться с задачкой.
Условие: Изобразить на экране точку, которая движется по окружно-сти с постоянной угловой скоростью. Эту угловую скорость можно задавать.
Решение (не могу понять почему не работает):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;
Заранее спасибо!
← →
Slym © (2008-05-13 05:21) [1]при нажатии Button1Click рисует 1 точку? все правильно :)
телепатор подсказывает что есть Timer1OnTimer... если это так то x, y: integer;//текущие координаты точки в ней другие :) и там рисуется другая точка...
Решение вынеси переменные из Button1Click
← →
Рамиль © (2008-05-13 09:11) [2]
> var a, //угол в рад..
> s, //скорость передвижения точки в рад.
> r: double; //радиус
> x0, y0, //центр окр.
> x, y: integer; //текущие координаты точки
Странный алгоритм какой то.
Если a и s в радианах, то на кой умножать их на пи/180?
Если в комментариях ошибка, то даже 30 градусов это очень много - 12 точек всего лишь, какя тут окружность, это многоугольник.
Скорость измеряется в чем-то/на время. То бишь 30 это должно быть 30 градусов/секунда?
Тогда ставишь таймер на время 50, и каждый раз увеличиваешь угол на 30/20 = 1.5 градуса.
← →
Рамиль © (2008-05-13 09:12) [3]Это в дополнение к
> Slym © (13.05.08 05:21) [1]
← →
SadDragon © (2008-05-14 05:14) [4]Ок, спасибо за советы! =)
Буду пробовать...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c